基于單片機的課程設(shè)計_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  目 錄</p><p>  1.課程設(shè)計的目的及意義……………………………………………………1</p><p>  2.工作原理……………………………………………………………………1</p><p>  2.1方案論證……………………………………………………………1</p><p>  2.2系統(tǒng)方案………

2、……………………………………………………3</p><p>  3.硬件電路設(shè)計………………………………………………………………3</p><p>  3.1 電源…………………………………………………………………3</p><p>  3.2鍵盤以及顯示電路…………………………………………………4</p><p>  3.3溫度測試電路……

3、…………………………………………………7</p><p>  3.4 串口通訊電路……………………………………………………10</p><p>  4 軟件設(shè)計…………………………………………………………………11</p><p>  4.1主程序方案…………………………………………………………11</p><p>  4.2各模塊子程序設(shè)計

4、………………………………………………12</p><p>  總結(jié)……………………………………………………………………………15</p><p>  參考書目……………………………………………………………………16</p><p>  附錄……………………………………………………………………………17</p><p>  1.課程設(shè)計的目的及

5、意義</p><p>  溫度控制無論是在工業(yè)生產(chǎn)過程中,還是在日常生活中都起著非常重要的作用,在溫度控制中,由于受到溫度被控對象特性(如慣性大、滯后大、非線性等)的影響,使得控制性能難以提高,有些工藝過程其溫度控制的好壞直接影響著產(chǎn)品的質(zhì)量,因而設(shè)計一種較為理想的溫度控制系統(tǒng)是非常有價值的。</p><p>  本設(shè)計運用主從分布式思想,由一臺上位機(PC微型計算機),下位機(單片機)多

6、點溫度數(shù)據(jù)采集,組成兩級分布式多點溫度測量的巡回檢測系統(tǒng)。該系統(tǒng)采用 RS-232串行通訊標(biāo)準(zhǔn),通過上位機(PC)控制下位機(單片機)進行現(xiàn)場溫度采集。溫度值既可以送回主控PC進行數(shù)據(jù)處理,由顯示器顯示。也可以由下位機單獨工作,實時顯示當(dāng)前各點的溫度值,對各點進行控制。</p><p><b>  2.工作原理</b></p><p><b>  2.1方案

7、論證</b></p><p>  溫度檢測系統(tǒng)有則共同的特點:測量點多、環(huán)境復(fù)雜、布線分散、現(xiàn)場離監(jiān)控室遠(yuǎn)等。若采用一般溫度傳感器采集溫度信號,則需要設(shè)計信號調(diào)理電路、A/D 轉(zhuǎn)換及相應(yīng)的接口電路,才能把傳感器輸出的模擬信號轉(zhuǎn)換成數(shù)字信號送到計算機去處理。這樣,由于各種因素會造成檢測系統(tǒng)較大的偏差;又因為檢測環(huán)境復(fù)雜、測量點多、信號傳輸距離遠(yuǎn)及各種干擾的影響,會使檢測系統(tǒng)的穩(wěn)定性和可靠性下降 。所以多

8、點溫度檢測系統(tǒng)的設(shè)計的關(guān)鍵在于兩部分:溫度傳感器的選擇和主控單元的設(shè)計。溫度傳感器應(yīng)用范圍廣泛、使用數(shù)量龐大,也高居各類傳感器之首。</p><p>  2.1.1 傳感器部分</p><p><b>  方案一:</b></p><p>  采用熱敏電阻,可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復(fù)性、可靠性較差,對于檢測1攝氏

9、度的信號是不適用的。而且在溫度測量系統(tǒng)中,采用單片溫度傳感器,比如AD590,LM35等.但這些芯片輸出的都是模擬信號,必須經(jīng)過A/D轉(zhuǎn)換后才能送給計算機,這樣就使得測溫裝置的結(jié)構(gòu)較復(fù)雜.另外,這種測溫裝置的一根線上只能掛一個傳感器,不能進行多點測量.即使能實現(xiàn),也要用到復(fù)雜的算法,一定程度上也增加了軟件實現(xiàn)的難度。</p><p><b>  方案二:</b></p><

10、;p>  在多點測溫系統(tǒng)中,傳統(tǒng)的測溫方法是將模擬信號遠(yuǎn)距離采樣進行AD轉(zhuǎn)換,而為了獲得較高的測溫精度,就必須采用措施解決由長線傳輸,多點測量切換及放大電路零點漂移等造成的誤差補償問題。采用數(shù)字溫度芯片DS18B20測量溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100攝氏度時,最大線形偏差小于1攝氏度。DS18B20的最大

11、特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS1820和微控制器AT89C51構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大,且由于AT89C51可以帶多個DSB1820,因此可以非常容易實現(xiàn)多點測量.輕松的組建傳感器網(wǎng)絡(luò)。</p><p>  采用溫度芯片DS18B20測量溫度,可以體現(xiàn)系統(tǒng)芯片化這個趨勢。部分功能電路的集成,使總體電路更簡潔,搭建

12、電路和焊接電路時更快。而且,集成塊的使用,有效地避免外界的干擾,提高測量電路的精確度。所以集成芯片的使用將成為電路發(fā)展的一種趨勢。本方案應(yīng)用這一溫度芯片,也是順應(yīng)這一趨勢。</p><p>  2.1.2主控制部分</p><p><b>  方案一:</b></p><p>  此方案采用PC機實現(xiàn)。它可在線編程,可在線仿真的功能,這讓調(diào)試變

13、得方便。且人機交互友好。但是PC機輸出信號不能直接與DS18B20通信。需要通過RS232電平轉(zhuǎn)換兼容,硬件的合成在線調(diào)試,較為繁瑣,很不簡便。而且在一些環(huán)境比較惡劣的場合,PC機的體積大,攜帶安裝不方便,性能不穩(wěn)定,給工程帶來很多麻煩!</p><p><b>  方案二:</b></p><p>  此方案采用AT89C51八位單片機實現(xiàn)。單片機軟件編程的自由度大

14、,可通過編程實現(xiàn)各種各樣的算術(shù)算法和邏輯控制。而且體積小,硬件實現(xiàn)簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC機通信.運用主從分布式思想,由一臺上位機(PC微型計算機),下位機(單片機)多點溫度數(shù)據(jù)采集,組成兩級分布式多點溫度測量的巡回檢測系統(tǒng),實現(xiàn)遠(yuǎn)程控制。另外AT89C51在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。</p><p><b>  2.

15、2系統(tǒng)方案</b></p><p>  綜上所述,溫度傳感器以及主控部分都采用第二方案。</p><p>  系統(tǒng)采用針對傳統(tǒng)溫度測溫系統(tǒng)測溫點少,系統(tǒng)兼容性及擴展性較差的特點,運用分布式通訊的思想。設(shè)計一種可以用于大規(guī)模多點溫度測量的巡回檢測系統(tǒng)。該系統(tǒng)采用的是RS-232串行通訊的標(biāo)準(zhǔn),通過下位機(單片機)進行現(xiàn)場的溫度采集,溫度數(shù)據(jù)既可以由下位機模塊實時顯示,也可以送回上

16、位機進行數(shù)據(jù)處理,具有巡檢速度快,擴展性好,成本低的特點。</p><p>  實際采用電路方案如下圖:</p><p><b>  3.硬件電路設(shè)計</b></p><p>  系統(tǒng)底層電路的功能主要包括:多點溫度測試及其相關(guān)處理,實時顯示溫度信息,與上位機通訊傳輸溫度數(shù)據(jù)。硬件設(shè)計主要包括以下幾個模塊:電源以及看門狗電路, 鍵盤以及顯示電路

17、,溫度測試電路,串口通訊電路。下面對電路分模塊進行說明</p><p><b>  3.1 電源</b></p><p><b>  3.1.1電源電路</b></p><p>  因為單片機工作電源為+5V,且底層電路功耗很小。采用7805三端穩(wěn)壓片即可滿足要求。</p><p><b>

18、;  具體電路圖如下:</b></p><p>  3.1.2看門狗電路</p><p>  本設(shè)計為單片機電路添加一個外部看門狗電路。定時查詢單片機的工作狀態(tài),一但發(fā)現(xiàn)異常即對單片機延時重起。保證系統(tǒng)安全可靠的運行。</p><p>  NE56604能為多種微處理器和邏輯系統(tǒng)提供復(fù)位信號,其門限電平為4.2V 。在電源突然掉電或電源電壓下降到低于門限

19、電平時。NE56604將產(chǎn)生精確的復(fù)位信號。NE56604內(nèi)置一個看門狗定時器,用于監(jiān)控微處理器,以確保微處理器的正常運行??撮T狗能產(chǎn)生一個系統(tǒng)復(fù)位信號用來終止任何由于微處理器故障而引發(fā)的不正常的系統(tǒng)操作。NE56604的看門狗的監(jiān)控周期為100mS(典型值)。</p><p>  特性:正負(fù)雙邏輯輸出的有效復(fù)位信號,精準(zhǔn)的門限電平監(jiān)測,上電復(fù)位內(nèi)部延時,可利用外部電阻調(diào)節(jié)的內(nèi)部看門狗定時器,看門狗定時器的監(jiān)控周

20、期為100mS 典型值,VCC=0.8VDC時產(chǎn)生有效的復(fù)位信號典型值,僅需很少的外圍元件。</p><p><b>  具體電路圖如下:</b></p><p>  3.2鍵盤以及顯示電路</p><p><b>  鍵盤電路</b></p><p>  單片機應(yīng)用系統(tǒng)中除了復(fù)位按鍵有專門的復(fù)位電

21、路,以及專一的復(fù)位功能外,其它的按鍵或鍵盤都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)。鍵盤有編碼和非編碼兩種。非編碼鍵盤硬件電路極為簡單。故本系統(tǒng)采用撥碼開關(guān)來控制。具體電路如下:</p><p>  A. 開關(guān)狀態(tài)的可靠輸入</p><p>  鍵開關(guān)狀態(tài)的可靠輸入有兩種解決方法。一種是軟件去抖動:它是在檢測到有鍵按下時,執(zhí)行一個10ms的延時程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,如

22、保持閉合狀態(tài)電平則確認(rèn)為真正鍵按下狀態(tài),從而消除了抖動影響。另一種為硬件去抖動:即為按鍵添加一個鎖存器。兩種方法都簡單易行,本設(shè)計采用的是硬件去抖。</p><p>  B. 對按鍵進行編碼給定鍵值或給出鍵號</p><p>  對于按鍵無論有無編碼,以及采用什么編碼,最后都要轉(zhuǎn)換成為與累加器中數(shù)值相對應(yīng)的鍵值,以實現(xiàn)按鍵功能程序的散轉(zhuǎn)轉(zhuǎn)移。為使編碼間隔小,散轉(zhuǎn)入口地址安排方便,常采用依次

23、序排列的鍵號。</p><p>  C. 選擇鍵盤監(jiān)測方法</p><p>  對是否有鍵按下的信息輸入方式有中斷方式與查詢方式兩種。本設(shè)計采用的查詢法,即在在CPU空閑時調(diào)用鍵盤掃描子程序。</p><p><b>  溫度顯示電路</b></p><p>  設(shè)計采用的是共陰極七段數(shù)碼管。顯示方式有動態(tài)掃描和靜態(tài)顯示

24、,兩種方法在本本人采用是節(jié)約硬件資源的動態(tài)掃描方式。即用兩塊芯片就可以完成顯示功能。具體電路圖如下:</p><p><b>  3.3溫度測試電路</b></p><p>  這里我們用到溫度芯片DS18B20。DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式。測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數(shù)

25、字量方式串行輸出。其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。</p><p>  DS18B20支持“一線總線”接口,測量溫度范圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大

26、提高了系統(tǒng)的抗干擾性。</p><p>  DS18B20內(nèi)部結(jié)構(gòu)(1)DS18B20的內(nèi)部結(jié)構(gòu)如下圖所示。</p><p>  DS18B20內(nèi)部結(jié)構(gòu)圖</p><p>  DS18B20有4個主要的數(shù)據(jù)部件:① 64位激光ROM。64位激光ROM從高位到低位依次為8位CRC、48位序列號和8位家族代碼(28H)組成。</p><p>

27、<b> ?、?溫度靈敏元件。</b></p><p> ?、?非易失性溫度報警觸發(fā)器TH和TL??赏ㄟ^軟件寫入用戶報警上下限值。</p><p>  ④ 配置寄存器。配置寄存器為高速暫存存儲器中的第五個字節(jié)。DS18B20在0工作時按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值,其各位定義如圖所示。</p><p>  其中,TM:測試模式標(biāo)

28、志位,出廠時被寫入0,不能改變;R0、R1:溫度計分辨率設(shè)置位,其對應(yīng)四種分辨率如下表所列,出廠時R0、R1置為缺省值:R0=1,R1=1(即12位分辨率),用戶可根據(jù)需要改寫配置寄存器以獲得合適的分辨率。</p><p>  配置寄存器與分辨率關(guān)系表 :</p><p> ?。?)高速暫存存儲器</p><p>  高速暫存存儲器由9個字節(jié)組成,其分配如下圖所示。

29、當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式如圖所示。對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當(dāng)S=1時,先將補碼變?yōu)樵a,再計算十進制值。</p><p>  溫度值格式圖DS18B20 溫度數(shù)據(jù)表:</p><p>  典型對應(yīng)的溫度值表:<

30、/p><p>  DS18B20最大的特點是單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線來完成。</p><p>  硬件連接電路如下圖:</p><p>  本系統(tǒng)為多點溫度測試。DS18B20采用外部供電方式,理論上可以在一根數(shù)據(jù)總線上掛256個DS18B20,但時間應(yīng)用中發(fā)現(xiàn),如果掛接25個以上的DS18B20仍舊有可能產(chǎn)生功耗問題。另外單總線長度也

31、不宜超過80M,否則也會影響到數(shù)據(jù)的傳輸。在這種情況下我們可以采用分組的方式,用單片機的多個I/O來驅(qū)動多路DS18B20。在實際應(yīng)用中還可以使用一個MOSFET將I/O口線直接和電源相連,起到上拉的作用。</p><p>  對DS18B20的設(shè)計,需要注意以下問題</p><p>  (1)對硬件結(jié)構(gòu)簡單的單線數(shù)字溫度傳感器DS18B20 進行操作,需要用較為復(fù)雜的程序完成。編制程序時

32、必須嚴(yán)格按芯片數(shù)據(jù)手冊提供的有關(guān)操作順序進行,讀、寫時間片程序要嚴(yán)格按要求編寫。尤其在使用DS18B20 的高測溫分辨力時,對時序及電氣特性參數(shù)要求更高。</p><p>  (2)有多個測溫點時,應(yīng)考慮系統(tǒng)能實現(xiàn)傳感器出錯自動指示,進行自動DS18B20 序列號和自動排序,以減少調(diào)試和維護工作量。</p><p>  (3)測溫電纜線建議采用屏蔽4 芯雙絞線,其中一對線接地線與信號線,另

33、一組接VCC和地線,屏蔽層在源端單點接地。DS18B20 在三線制應(yīng)用時,應(yīng)將其三線焊接牢固;在兩線應(yīng)用時,應(yīng)將VCC與GND接在一起,焊接牢固。若VCC脫開未接,傳感器只送85.0 ℃的溫度值。</p><p>  (4)實際應(yīng)用時,要注意單線的驅(qū)動能力,不能掛接過多的DS18B20,同時還應(yīng)注意最遠(yuǎn)接線距離。另外還應(yīng)根據(jù)實際情況選擇其接線拓?fù)浣Y(jié)構(gòu)。</p><p>  3.4 串口通訊

34、電路</p><p>  AT89C51有一個全雙工的串行通訊口,所以單片機和電腦之間可以方便地進行串口通訊。進行串行通訊時要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機的串口是TTL電平的,兩者之間必須有一個電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進行轉(zhuǎn)換,雖然也可以用幾個三極管進行模擬轉(zhuǎn)換,但是還是用專用芯片更簡單可靠。</p><p><b>  具體電路

35、如下:</b></p><p>  我們采用了三線制連接串口,也就是說和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡單的連接方法,但是對本設(shè)計來說已經(jīng)足夠使用了,電路如上圖所示。通信線采用交叉接法,具體連接電路如下:</p><p><b>  4 軟件設(shè)計</b></p><p>&l

36、t;b>  4.1主程序方案</b></p><p>  主程序調(diào)用了4個子程序,分別是數(shù)碼管顯示程序、鍵盤掃描以及按鍵處理程序、溫度測試程序、中斷控制程序、單片機與PC機串口通訊程序。</p><p>  鍵盤掃描電路及按鍵處理程序:實現(xiàn)鍵盤的輸入按鍵的識別及相關(guān)處理。</p><p>  溫度測試程序:對溫度芯片送過來的數(shù)據(jù)進行處理,進行判斷和

37、顯示。</p><p>  數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。</p><p>  中斷控制程序:實現(xiàn)循環(huán)顯示功能。</p><p>  串口通訊程序:實現(xiàn)PC機與單片機通訊,將溫度數(shù)據(jù)傳送給PC機。</p><p>  將各個功能程序以子程序的形式寫好,當(dāng)寫主程序的時候,只需要調(diào)用子程序,然后在寄存器的分配上作一下調(diào)整,

38、消除寄存器沖突和I/O沖突即可。程序應(yīng)該盡可能多的使用調(diào)用指令代替跳轉(zhuǎn)指令。因為跳轉(zhuǎn)指令使得程序難以看懂各程序段之間的結(jié)構(gòu)關(guān)系。而調(diào)用指令則不同,調(diào)用指令使得程序結(jié)構(gòu)清晰,無論是修改還是維護都比較方便。將功能程序段寫成子程序的形式,除了方便調(diào)用之外,還有一個好處那就是以后寫程序的時候如果要用到,就可以直接調(diào)用這個單元功能模塊。</p><p>  主程序流程圖如右圖:</p><p>  

39、4.2各模塊子程序設(shè)計</p><p>  下面對主要幾個子程序的流程圖做介紹:</p><p> ?。?)溫度測試子程序設(shè)計</p><p>  見附錄一:溫度測試子程序流程圖</p><p> ?。?)中斷控制程序設(shè)計</p><p><b>  如右圖:</b></p><

40、;p> ?。?)串口通信程序設(shè)</p><p>  本次通訊中,測控系統(tǒng)分位上位機和下位機之間的通信,系統(tǒng)中單片機負(fù)責(zé)數(shù)據(jù)采集、處理和控制,上位機進行現(xiàn)場可視化檢測,通信協(xié)議采用半雙工異步串行通信方式,通過RS232的RTS信號進行收發(fā)轉(zhuǎn)換,傳輸數(shù)據(jù)采用二進制數(shù)據(jù)。本人采用的VB環(huán)境下PC機與單片機之間實現(xiàn)串行通訊的軟硬件方案。VB是Microsoft公司推出的Windows應(yīng)用程序開發(fā)工具,因其具有界面友

41、好,編程簡便等優(yōu)點而受到廣泛使用,而且Visual Basic 6.0 版本帶有專門實現(xiàn)串行通訊的MSCOMM控件。</p><p>  1) MSComm控件的主要屬性和方法 </p><p>  CommPort:設(shè)置或返回串行端口號,其取值范圍為1—99,缺省為1 Setting:設(shè)置或返回串行端口的波特率、奇偶校驗位、數(shù)據(jù)位數(shù)、停止位 PortOpen:打開或關(guān)閉串行端口

42、。 RThreshold:該屬性為一閥值,它確定當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個數(shù)達到或超過該值后就產(chǎn)生MSComml-OnComm事件。 Input:從接收緩沖區(qū)移走一串字符 Output:向發(fā)送緩沖區(qū)傳送一字符串。 </p><p><b>  軟件流程圖如下:</b></p><p><b>  單片機程序流程圖</b></p><

43、p><b>  PC通訊程序流程圖</b></p><p>  參數(shù)設(shè)定:通信端口選擇COM1,波特率設(shè)定為1200B/S</p><p>  MSCOmm.CommPort=1</p><p>  MSComm.Setting=“1200, n, 8, 1”。 </p><p>  START:MOVSP,

44、#60H</p><p>  MOVTMOD,#20H</p><p>  MOVTH1,#0E6H</p><p>  MOVTL1,#0E6H ;1200B/S,晶振為12MHZ</p><p>  MOV PCON,#00H</p><p>  MOVSCON,#50H</p>

45、<p><b>  SETBTR1</b></p><p><b>  5.總結(jié)</b></p><p>  本設(shè)計能夠順利的完成得到了院系領(lǐng)導(dǎo)老師的大力支持和幫助,尤其是我的指導(dǎo)老師馮杰副教授,在百忙之中抽出寶貴的休息時間,仔細(xì)耐心為我為我指導(dǎo)。設(shè)計過程中,馮老師一并幫我分析遇到的種種困難。一直支持,鼓勵我要有解決問題的信心,使設(shè)

46、計得以順利的完成。在開發(fā)的同時,和同學(xué)們之間的相互探討也使我獲益匪淺。在此,對他們表示由衷的感謝!</p><p>  電子信息技術(shù)日新月異地飛速發(fā)展,人們總是處在不斷學(xué)習(xí)階段,再加上我水平有限,所以本設(shè)計肯定存在許多不盡如人意的地方,歡迎廣大老師和同學(xué)批評指正。</p><p>  最后,要感謝所有幫組我的老師,他們精心的栽培為我以后的學(xué)習(xí)工作打下了堅實的基礎(chǔ)。</p>&

47、lt;p><b>  參考文獻</b></p><p>  [1]. 賈振國. DS1820 及高精度溫度測量的實現(xiàn)[J].電子技術(shù)應(yīng)用,2000</p><p>  [2]. 余永權(quán). 單片機原理及應(yīng)用. 北京:電子工業(yè)出版社, 1997 </p><

48、;p>  [3]. 邦田. 電子電路實用抗干擾技術(shù). 北京:人民郵電出版社,1994 </p><p>  [4]. Dallas semiconductor inc, programmable resolution 1—wiredigital thermometer 2001[Z] .</p&

49、gt;<p>  [5]. 曲喜貴. 電子元件材料手冊[ M]. 北京:電子工業(yè)出版社,1989.422-430.</p><p>  [6]. 黃賢武,鄭筱霞,曲波等. 傳感器實際應(yīng)用電路設(shè)計[M]. 成都:電子科技大學(xué)出版社,1997.4-10.</p><p>  [7]. 劉君華. 智能傳感器系統(tǒng) [M] . 西安:西安電子科技大學(xué)出版社,1999.</p>

50、;<p>  [8]. 余永權(quán). Flash 單片機原理及應(yīng)用 [M]. 北京:電子工業(yè)出版社,1997.</p><p>  [9]. 邦田. 電子電路實用抗干擾技術(shù) [M] . 北京:人民郵電出版社,1994.</p><p>  [10]. 周云波. 由DS18B20單線數(shù)字溫度計構(gòu)成的單線多點溫度測量系統(tǒng). 電子技術(shù)應(yīng)用,1996(2):15- 20.</p&

51、gt;<p><b>  附錄</b></p><p>  附錄一:溫度測試子程序流程圖</p><p><b>  附錄二</b></p><p>  單片機內(nèi)存分配申明: </p><p>  TEMPESEQU 27H ;用于保存設(shè)定溫度值</p><

52、;p>  TEMPER_LEQU 29H ;用于保存實際溫度Tr的低8位</p><p>  TEMPER_HEQU 28H ;用于保存實際溫度Tr的高8位</p><p>  FLAG1EQU 38H ;是否檢測到DS18B20標(biāo)志未</p><p>  LOEQU #0F60H;定時器低字節(jié)</p><p>  HI

53、EQU #0F6H ;定時器高字節(jié)</p><p>  FLAG2EQU 39H ;按鍵標(biāo)志位</p><p>  A_BITEQU 20H ;數(shù)碼管實際溫度Tr個位數(shù)存放位置</p><p>  B_BITEQU 21H ;數(shù)碼管實際溫度Tr十位數(shù)存放位置</p><p>  C_BITEQU 18H ;數(shù)碼管設(shè)定溫度T

54、s個位數(shù)存放位置</p><p>  D_BITEQU 19H ;數(shù)碼管設(shè)定溫度Ts十位數(shù)存放位置</p><p>  SDWDEQU 30H ;轉(zhuǎn)換后的設(shè)置溫度</p><p>  SJWD EQU 31H ;轉(zhuǎn)換后的實際溫度</p><p>  SW1EQU P1.1 ;繼電器1控制引腳,加熱繼電器 </p>

55、<p>  SW2EQU P1.7 ;繼電器2控制引腳,降溫繼電器</p><p>  DS18EQU P1.0 ;DS18B20的數(shù)據(jù)引腳</p><p>  SJKEQU FFE8H;8279的數(shù)據(jù)口</p><p>  MLKEQU FFEAH ;8279的命令口</p><p>  8CLKEQU AL

56、K;8279的時鐘信號輸入端</p><p><b>  ORG00H </b></p><p><b>  JMPMAIN</b></p><p><b>  ORG0BH</b></p><p>  MAIN:CLRSW1 ;關(guān)繼電器1</p&

57、gt;<p>  CLRSW2 ;關(guān)繼電器2</p><p>  MOVA_BIT,#0</p><p>  MOVB_BIT,#0 </p><p>  MOVC_BIT,#0</p><p>  MOVD_BIT,#0</p><p>  MOVTEMPES,#0</p&

58、gt;<p>  MOVTEMPER_L,#0 </p><p>  MOVTEMPER_H,#0</p><p>  INIT_1820:SETBDS18</p><p><b>  NOP</b></p><p>  CLRDS18;主機發(fā)出延時537微妙的復(fù)位低脈沖</p>&

59、lt;p><b>  MOVR1,#3</b></p><p>  TER1:MOVR0,#107</p><p><b>  DJNZR0,$</b></p><p>  DJNZR1,TSR1</p><p>  SETBDS18 ;拉高數(shù)據(jù)線</p><p

60、><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  MOVR0,#25H</p><p>  

61、TSR2:JNBDS18,TSR3 ;等待DS18B20回應(yīng)</p><p>  DJNZR0,TSR2 ;延時</p><p><b>  LJMPTSR4</b></p><p>  TSR3:SETBFLAG1 ;置標(biāo)志位,表示DS18B20存在</p><p><b>  LJMPT

62、SR5</b></p><p>  TSR4:CLRFLAG1 ;清標(biāo)志位,表示DS18B20不存在</p><p><b>  LJMPTSR7</b></p><p>  TSR5:MOVR0,#117</p><p>  TDR6:DJNZR0,TSR6 ;時序要求延時一端時間<

63、/p><p>  TSR7:SETBDS18</p><p><b>  RET</b></p><p>  LP:MOVXA, @DPTR</p><p>  JBACC.7,LP</p><p>  MOV A,#2AH ;S時鐘十分頻成100KHz</p><

64、p>  MOVX@DPTR,A</p><p>  MOVX@DPTR,#DISHBH ;提示符0000代碼首地址</p><p><b>  LCALLDIS</b></p><p>  MOV27H,#80H</p><p><b>  SETBIT</b></p&g

65、t;<p><b>  SETBEA</b></p><p><b>  SETBEX1</b></p><p>  INIT_TIMTR:MOVTMOD,#22H ;定時器初始化,使用定時器0模式2</p><p>  MOVIE,#00H ;啟用定時器0中斷產(chǎn)生</p><

66、p>  MOVTL0,#L0 ;加載低字節(jié)</p><p>  MOVTH0,#HI ;加載高字節(jié)</p><p>  SETBTR0 ;啟動定時器0開始記時</p><p><b>  SETBEA</b></p><p><b>  SETBET0</b></p&

67、gt;<p><b>  JNBTF0,$</b></p><p><b>  CPL8CLK</b></p><p>  MOVSP,#60H</p><p><b>  CLREA</b></p><p>  MOVDPTR,#MLK</p&g

68、t;<p>  MOVA,#0D1H</p><p>  MOVX@DPTR,A</p><p>  ZHUCHXU:LCALLJPCL</p><p>  LCALLDISPLAY</p><p>  AA:LCALL GET_TEMPER</p><p>  MOVA,SJWD;溫度比

69、較</p><p>  CJNEA,SDWD,PD</p><p>  XD:LCALLDISPLAY</p><p>  LJMPZHUCHXU</p><p>  PD:JCPD1</p><p><b>  SUBA,3</b></p><p>  CJ

70、NEA,SDWD,PD2</p><p><b>  LCALLXD</b></p><p>  PD2:JNCJW</p><p><b>  LCALLXD</b></p><p>  PD1:ADDA,#3</p><p>  CJNEA,SDWD,PD

71、2</p><p><b>  LCALLXD</b></p><p>  PD2:JCSW</p><p><b>  LCALLXD</b></p><p>  SW:SETBSW1</p><p><b>  JMP AA</b>&l

72、t;/p><p>  JW: SETBSW2</p><p><b>  JMP AA</b></p><p><b>  鍵盤處理子程序: </b></p><p>  JPLC:MOV R1,#2</p><p>  MOV R

73、2,27H</p><p>  JNB IE0,$;等待鍵盤的輸入</p><p>  MOVX DPTR,MLK</p><p>  MOV A,#40H</p><p>  MOVX DPTR,A</p><p>  MOVX

74、 DPTR,SJK</p><p>  MOVX A,@DPTR</p><p>  ANL A, #3FH</p><p>  MOVX @R2, A</p><p>  INC @R2</p><p>  DJNZ

75、 @R2,JX</p><p>  JMP RET</p><p>  JX: MOV DPTR,#TABLE1</p><p>  MOV R3, #0BH</p><p>  MOVX A,@R2</p><p> 

76、 MOV R4,#TABLE2</p><p>  JM: DJNZ R3, #2</p><p>  AJMP JX</p><p>  CJNE A,@R4,#4</p><p>  MOV R2,@DPTR</p>

77、<p>  AJMP RET</p><p>  INC @R4</p><p>  INC @DPTR</p><p>  DEC @R3</p><p>  AJMP JM</p><p>  TAB

78、LE1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8FH,8DH,90H,BFH,0FFH</p><p>  TABLE2:DB 0H,8H,20H,1H,9H,11H,2H,AH,12H,3H,0BH,23H</p><p>  DS18B20子程序:</p><p>  GET_TEMPER:SETBDS18<

79、;/p><p>  LCALLINIT_1820 ;先復(fù)位DS18B20</p><p>  JBFLAG1,TSS2</p><p>  RET;判斷DS18B20是否存在?若DS18B20 </p><p><b>  不存在則返回</b></p><p>  TSS2:MOV

80、A,#0CCH ;跳過ROM匹配</p><p>  MOVA,#44H ;發(fā)出溫度轉(zhuǎn)換命令</p><p>  LCALL DISPLAY;這里通過調(diào)用顯示子程序?qū)崿F(xiàn)延時一段時間,等待轉(zhuǎn)換結(jié)束</p><p>  LCALLINIT_1820;準(zhǔn)備讀溫度前先復(fù)位</p><p>  MOVA,#0CCH ;跳過R

81、OM匹配</p><p>  LCALLWRITE_1820</p><p>  MOVA,#0BEH ;發(fā)出讀溫度命令</p><p>  CALLREAD_1820 ;將讀出的溫度數(shù)據(jù)保存到28H/29H</p><p><b>  RET</b></p><p> ?。蛔xDS18B

82、20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)</p><p>  READ_1820:MOVR4,#2 ;將溫度高位和低位從DS18B20中讀出</p><p>  MOVR1,29H ;低位存如29H(TEMPER_L)高位存入</p><p>  28H(TEMPER_H)</p><p>  RE00:MOVR

83、2,#8 ;數(shù)據(jù)一共8位</p><p>  RE01:CLRC</p><p><b>  SETBDS18</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>

84、  CLRDS18</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  SETBDS18</b></p>&l

85、t;p><b>  MOVR3,#9</b></p><p>  RE10:DJNZR3,RE10</p><p>  MOVC,DS18</p><p>  MOVR3,#23</p><p><b>  RRCA</b></p><p>  DJNZR

86、2,RE10</p><p><b>  MOV@R1,A</b></p><p><b>  DECR1</b></p><p>  DJNZR4,RE00</p><p><b>  END</b></p><p><b>  顯示子

87、程序:</b></p><p>  DISPLAY:MOV DPTR,MLK</p><p>  MOVA,#0D1H</p><p>  MOVX@DPTR,A</p><p>  MOVDPTR,MLK</p><p>  MOVA,@0D90H</p><p>  M

88、OVX@DPTR,A</p><p>  MOVA,29H;將29H中的十六進制數(shù)轉(zhuǎn)換成十進制</p><p>  MOVB,#10</p><p><b>  DIVAB</b></p><p>  MOVB_BIT,A;十位在A</p><p>  MOVA_BIT,A;

89、個位在B</p><p>  MOVDPTR,#NUMTAB;指定查表起始地址</p><p><b>  MOVR0,#4</b></p><p>  DPLOP:MOVA,A_BIT;取個位數(shù)</p><p>  MOVCA,@A+DPTR;查個位數(shù)的7段碼</p><p>&

90、lt;b>  PUSHA</b></p><p>  MOVA,#90H</p><p>  MOVDPTR,#MLK</p><p><b>  POPA</b></p><p>  MOVXDPTR,A</p><p>  MOVA, B_BIT;取十位數(shù)<

91、;/p><p>  MOVCA, @A+DPTR;查十位數(shù)的7段碼</p><p><b>  PUSHA</b></p><p>  MOVA,#90H</p><p>  MOVDPTR,#MLK</p><p><b>  POPA</b></p>

92、<p>  MOVXDPTR,A</p><p><b>  RET</b></p><p>  7段數(shù)碼管0~9數(shù)字的共陽極顯示代碼</p><p>  TABLE2:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8FH,8DH,90H,BFH,0FFH</p><p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論