基于單片機的數(shù)字溫度計畢業(yè)設計_第1頁
已閱讀1頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  1 設計內(nèi)容及性能指標…………………………………………………………3</p><p>  2系統(tǒng)框架…………………………………………………………4</p><p>  3系統(tǒng)器件選擇……………………………………………………………………5</p><p>

2、  3.1 單片機的選擇……………………………………………………………………5</p><p>  3.2 89S51引腳介紹…………………………………………………5</p><p>  3.3溫度傳感器的選擇…………………………………………………6</p><p>  4 硬件設計電路…………………………………………………………………………13</p>

3、<p>  4.1顯示電路…………………………………………………………………………14</p><p>  4.2 溫度檢測電路…………………………………………………………………………14</p><p>  4.3 溫度報警電路…………………………………………………………………………16</p><p>  5軟件設計…………………………………………

4、……………………………………17</p><p>  5.1 概述… … … … … … … … … … … … … … … … … … … … … … … … …… 17</p><p>  5.2主程序模塊… … … … … … … … … … … … … … … … … … … … … … … 17</p><p>  5.3各模塊流程設計… … … … …

5、 … … … … … … … … … … … … … … … 18</p><p>  6.源程序…………………………………………………………………………22</p><p>  附錄1:參考文獻………………………………………………………………34</p><p>  附錄2:元件清單 ………………………………………………………35</p>&l

6、t;p>  附錄3: 電氣原理圖………………………………………………………………36</p><p><b>  摘要</b></p><p>  隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從

7、數(shù)單片機技術入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。隨著時代的進步和發(fā)展,單片機技術已經(jīng)普及到我們生活,工作,科研,各個領域,已經(jīng)成為一種比較成熟的技術,單片機已經(jīng)在測控領域中獲得了廣泛的應用</p><p>  本設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,該設計控制器使用單片機AT89S51,測溫傳感器使用DS18B20,用LCD數(shù)碼管以串口傳送

8、數(shù)據(jù),實現(xiàn)溫度顯示,能準確達到以上要求。</p><p>  關鍵詞 AT89S51 單片機 傳感器 DS18B20</p><p>  1 設計內(nèi)容及性能指標</p><p>  本設計主要是介紹了單片機控制下的溫度檢測系統(tǒng),詳細介紹了其硬件和軟件設計,并對其各功能模塊做了詳細介紹,其主要功能和指標如下:</p><p>  

9、●利用溫度傳感器(DS18B20)測量某一點環(huán)境溫度</p><p>  ●測量范圍為-50℃~+150℃,精度為±0.5℃</p><p>  ●用液晶進行實際溫度值顯示</p><p>  ●能夠根據(jù)需要方便設定上下限報警溫度</p><p><b>  2系統(tǒng)框架</b></p><p

10、>  采用數(shù)字溫度芯片DS18B20 測量溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20 的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89S51構成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的結構就比

11、較簡單,體積也不大。采用51 單片機控制,軟件編程的自由度大,可通過編程實現(xiàn)各種各樣的算術算法和邏輯控制,而且體積小,硬件實現(xiàn)簡單,安裝方便。既可以單獨對多DS18B20</p><p>  控制工作,還可以與PC 機通信上傳數(shù)據(jù),另外AT89S51 在工業(yè)控制上也有著廣泛的應用,編程技術及外圍功能電路的配合使用都很成熟。</p><p>  該系統(tǒng)利用AT89S51芯片控制溫度傳感器DS

12、18B20進行實時溫度檢測并顯示,能夠實現(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設定上下限報警溫度。該系統(tǒng)擴展性非常強,它可以在設計中加入時鐘芯片DS1302以獲取時間數(shù)據(jù),在數(shù)據(jù)處理同時顯示時間,并可以利用AT24C16芯片作為存儲器件,以此來對某些時間點的溫度數(shù)據(jù)進行存儲,利用鍵盤來進行調時和溫度查詢,獲得的數(shù)據(jù)可以通過MAX232芯片與計算機的RS232接口進行串口通信,方便的采集和整理時間溫度數(shù)據(jù)。</p><p&

13、gt;  圖 3.3 系統(tǒng)框圖 </p><p><b>  3系統(tǒng)器件選擇</b></p><p>  3.1 單片機的選擇</p><p>  AT89S51 是CMOS8 位單片機,它集 Flash 程序存儲器既可在線編程(ISP),也可用傳統(tǒng)方法進行編程,所以低價位 AT89S51單片機可為提供許多高性價比的應用場合,可靈活應用于各種控

14、制領域,對于簡單的測溫系統(tǒng)已經(jīng)足夠。單片機AT89S51 具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,很適合便攜手持式產(chǎn)品的設計使用系統(tǒng)可用二節(jié)電池供電。主要特性如下</p><p>  ●與MCS-51 兼容</p><p>  ●4K字節(jié)可編程閃爍存儲器</p><p>  ●壽命:1000寫/擦循環(huán)</p>&l

15、t;p>  ●數(shù)據(jù)保留時間:10年</p><p>  ●全靜態(tài)工作:0Hz-24Hz</p><p>  ●三級程序存儲器鎖定</p><p>  ●128*8位內(nèi)部RAM</p><p>  ●32可編程I/O線</p><p>  ●兩個16位定時器/計數(shù)器</p><p>  ●5

16、個中斷源 圖 4.1 AT89S51單片機引腳圖</p><p><b>  ●可編程串行通道</b></p><p>  ●低功耗的閑置和掉電模式</p><p>  ●片內(nèi)振蕩器和時鐘電路 </p><p>  3.2 89S51 引腳功能介紹

17、 </p><p>  AT89S51 單片機為40 引腳雙列直插式封裝。 </p><p>  其引腳排列和邏輯符號如圖4.1 所示。</p><p>  各引腳功能簡單介紹如下:</p><p>  ●VCC:供電電壓 </p&

18、gt;<p>  ●GND:接地 </p><p>  ●P0口:P0口為一個8位漏級開路雙向I/O口,每個管腳可吸收8TTL門電流。當P1口的管腳寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時,P0口作為原碼輸入口,當FLASH進行校驗時,P0輸出原碼,此時P0外部

19、電位必須被拉高。</p><p>  ●P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入“1”后,電位被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p><p>  ●P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖

20、器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳電位被內(nèi)部上拉電阻拉高,且作為輸入。作為輸入時,P2口的管腳電位被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉的優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。<

21、;/p><p>  ●P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。</p><p>  ●RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。</p><p>  ●ALE / PROG :當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位

22、字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。</p><p>  ●PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取址期間,每個機器周期PSEN兩次有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。</p><p>  ●EA/VPP:當E

23、A保持低電平時,訪問外部ROM;注意加密方式1時,EA將內(nèi)部鎖定為RESET;當EA端保持高電平時,訪問內(nèi)部ROM。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  ●XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p>  ●XTAL2:來自反向振蕩器的輸出。</p><p>  3.3溫度傳感器的選擇&l

24、t;/p><p>  由于傳統(tǒng)的熱敏電阻等測溫元件測出的一般都是電壓,再轉換成對應的溫度,需要比較多的外部元件支持,且硬件電路復雜,制作成本相對較高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測溫元件。</p><p>  3.3.1 DS18B20的介紹</p><p>  DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其

25、體積更小、更適用于多種場合、且適用電壓更寬、更經(jīng)濟。DALLAS 半導體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-50~+150 攝氏度,可編程為9位~12 位轉換精度,測溫分辨率可達0.0625攝氏度,分辨率設定參數(shù)以及用戶設定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠端引入,也可以采用寄生電源方式產(chǎn)生;

26、多個DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。</p><p>  DS18B20 的性能特點如下:</p><p>  ● 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線

27、即可實現(xiàn)微處理器與DS18B20的雙向通訊</p><p>  ● DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫</p><p>  ● DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內(nèi)</p><p>  ● 適應電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下

28、可由數(shù)據(jù)線供電</p><p>  ● 溫范圍-50℃~+150℃</p><p><b>  ● 零待機功耗</b></p><p>  ● 可編程的分辨率為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫</p><p>  ● 在9位分辨率時最多在93.75ms

29、內(nèi)把溫度轉換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉換為數(shù)字,速度更快</p><p>  ● 用戶可定義報警設置</p><p>  ● 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件</p><p>  ● 測量結果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力&

30、lt;/p><p>  ● 負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作</p><p>  3.3.2 DS18B20 使用中的注意事項</p><p>  DS18B20 雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題:</p><p>  ●DS18B20 從測溫結

31、束到將溫度值轉換成數(shù)字量需要一定的轉換時間,這是必須保證的,不然會出現(xiàn)轉換錯誤的現(xiàn)象,使溫度輸出總是顯示85。</p><p>  ●在實際使用中發(fā)現(xiàn),應使電源電壓保持在5V 左右,若電源電壓過低,會使所測得的溫度精度降低。</p><p>  ●在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級語言進行系統(tǒng)程序設計時,對DS1820操

32、作部分最好采用匯編語言實現(xiàn)。</p><p>  ●在DS18B20的有關資料中均未提及單總線上所掛DS18B20 數(shù)量問題,容易使人誤認為可以掛任意多個DS18B20,在實際應用中并非如此,當單總線上所掛DS18B20 超過8 個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統(tǒng)設計時要加以注意。</p><p>  ●在DS18B20測溫程序設計中,向DS18B20 發(fā)出溫

33、度轉換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20 接觸不好或斷線,當程序讀該DS18B20 時,將沒有返回信號,程序進入死循環(huán),這一點在進行DS18B20硬件連接和軟件設計時也要給予一定的重視。</p><p>  3.3.3 DS18B20 內(nèi)部結構</p><p>  圖為DS1820的內(nèi)部框圖,它主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中

34、間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM),用于存儲用戶設定的溫度上下限值的TH和TL觸發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗碼(CRC)發(fā)生器等七部分。</p><p>  DS18B20采用3腳PR-35 封裝或8腳SOIC封裝,其內(nèi)部結構框圖如圖 4.4所示</p><p>  圖 4.4 DS18B20內(nèi)部結構框圖</p><p>  64 b閃速ROM的結構如下

35、:</p><p>  開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48 位,最后8位是前面56 位的CRC 檢驗碼,這也是多個DS18B20 可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。主機操作ROM的命令有五種,如表所列</p><p>  DS18B20 溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EE

36、RAM。高速暫存RAM 的結構為8字節(jié)的存儲器,結構如圖 4.5所示。 </p><p>  圖 4.5 高速暫存RAM結構圖</p><p>  前2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的

37、溫度數(shù)值。</p><p>  LSB MSB</p><p>  當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1,2字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格

38、式以0.062 5 ℃/LSB形式表示。溫度值格式如下:</p><p>  這是12位轉化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。圖中,S表示位。對應的溫度計算:當符號位S=0時,表示測得的溫度

39、植為正值,直接將二進制位轉換為十進制;當S=1時,表示測得的溫度植為負值,先將補碼變換為原碼,再計算十進制值。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。</p><p>  DS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較,若T>TH或T<TL,則將該器件內(nèi)

40、的告警標志置位,并對主機發(fā)出的告警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行告警搜索。</p><p>  在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余校驗碼(CRC)。主機根據(jù)ROM的前 56位來計算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機收到的ROM數(shù) 據(jù)是否正確。</p><p>  3.3.4 DS18B20測溫原理</p>

41、<p>  DS18B20的測溫原理如圖2所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量.計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將50 ℃所對應的基數(shù)分別置入減法

42、計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預置在50 ℃所對應的一個基數(shù)值。</p><p>  減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時溫度寄存器的值將加1,減法計數(shù)器 1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫圖2中的斜率累加

43、器用于補償和修正測溫過程中的非線性其輸出用,于修正減法計數(shù)器的預置值,只要計數(shù)門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。另外,由于DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,因此讀寫時 序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20 (發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p>&l

44、t;p>  圖(2) DS18B20測溫原理圖</p><p>  3.3.5 提高DS1820測溫精度的途徑 </p><p>  1 .DS1820高精度測溫的理論依據(jù)</p><p>  DS1820正常使用時的測溫分辨率為0.5℃,這對于水輪發(fā)電機組軸瓦溫度監(jiān)測來講略顯不足,在對DS1820測溫原理詳細分析的基礎上,我們采取直接讀取DS1820內(nèi)部暫存

45、寄存器的方法,將DS1820的測溫分辨率提高到0.1℃~0.01℃.</p><p>  DS1820內(nèi)部暫存寄存器的分布如表1所示,其中第7字節(jié)存放的是當溫度寄存器停止增值時計數(shù)器1的計數(shù)剩余值,第8字節(jié)存放的是每度所對應的計數(shù)值,這樣,我們就可以通過下面的方法獲得高分辨率的溫度測量結果。首先用DS1820提供的讀暫存寄存器指令(BEH)讀出以0.5℃為分辨率的溫度測量結果,然后切去測量結果中的最低有效位(LS

46、B),得到所測實際溫度整數(shù)部分T整數(shù),然后再用BEH指令讀取計數(shù)器1的計數(shù)剩余值M剩余和每度計數(shù)值M每度,考慮到DS1820測量溫度的整數(shù)部分以0.25℃、0.75℃為進位界限的關系,實際溫度T實際可用下式計算得到:T實際=(T整數(shù)-0.25℃)+(M每度-M剩余)/M每度。</p><p>  表1 DS18B20暫存寄存器分布</p><p>  該字節(jié)各位的定義如下:</p&g

47、t;<p>  低5位一直都是1,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動,R1和R0決定溫度轉換的精度位數(shù),即是來設置分辨率,如表1所示(DS18B20出廠時被設置為12位)。 表2 R1和R2模式表</p><p>  由表1可見,設定的分辨率越高,所需要的溫度數(shù)據(jù)轉換時間就越長

48、。因此,在實際應用中要在分辨率和轉換時間權衡考慮。高速暫存存儲器除了配置寄存器外,還有其他8個字節(jié)組成,其分配如下所示。其中溫度信息(第1,2字節(jié))、TH和TL值第3,4字節(jié)、第6~8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個字節(jié)的CRC碼,可用來保證通信正確。</p><p>  根據(jù)DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉換必須經(jīng)過三個步驟:每一次讀寫之前 都要對DS

49、18B20進行復位,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。</p><p>  2 .測量數(shù)據(jù)比較</p><p>  表2為采用直接讀取測溫結果方法和采用計算方法得到的測

50、溫數(shù)據(jù)比較,通過比較可以看出,計算方法在DS1820測溫中不僅是可行的,也可以大大的提高DS1820的測溫分率。表3 DS18B20 直度測溫結果與計算測溫結果數(shù)據(jù)比較</p><p><b>  4 硬件設計電路</b></p><p>  溫度計電路設計原理圖如圖5.1所示,控制器使用單片機AT89C2051,溫度計傳感器使用DS18B20,用液晶實現(xiàn)溫度顯示。

51、本溫度計大體分三個工作過程。首先,由DS18820溫度傳感器芯片測量當前的溫度,并將結果送入單片機。然后,通過AT89S51單片機芯片對送來的測量溫度讀數(shù)進行計算和轉換,井將此結果送入液晶顯示模塊。最后,SMC1602A芯片將送來的值顯示于顯示屏上。 由圖1可看到,本電路主要由DSl8820溫度傳感器芯片、SMCl602A液晶顯示模塊芯片和AT89S51單片機芯片組成。其中,DSI8B20溫度傳感器芯片采用“一線制”與單片機相

52、連,它獨立地完成溫度測量以及將溫度測量結果送到單片機的工作。</p><p><b>  4.1 顯示電路</b></p><p>  顯示電路采用SMCI602A液晶顯示模塊芯片該芯片可顯示16×2個字符,比以前的七段數(shù)碼管LED顯示器在顯示字符的數(shù)量上要多得多。另外,由于SMCl602芯片編程比較簡單,界面直觀,因此更加易于使用者操作和觀測。SMCl60

53、2A芯片的接口信號說明如表1所列。表1 SMCl602A芯片的接口信號說明</p><p>  4.2 溫度檢測電路</p><p>  DS18B20 最大的特點是單總線數(shù)據(jù)傳輸方式,DS18B20 的數(shù)據(jù)I/O 均由同一條線來完成。DS18B20 的電源供電方式有2 種: 外部供電方式和寄生電源方式。工作于寄生電源方式時, VDD 和GND 均接地, 他在需要遠程溫度探測和空間受限的

54、場合特別有用, 原理是當1 W ire 總線的信號線DQ 為高電平時, 竊取信號能量給DS18B20 供電, 同時一部分能量給內(nèi)部電容充電, 當DQ為低電平時釋放能量為DS18B20 供電。但寄生電源方式需要強上拉電路, 軟件控制變得復雜(特別是在完成溫度轉換和拷貝數(shù)據(jù)到E2PROM 時) , 同時芯片的性能也有所降低。因此, 在條件允許的場合, 盡量采用外供電方式。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電。在這

55、里采用前者方式供電。DS18B20與芯片連接電路如圖 5.2所示:</p><p>  圖 5.2 DS18B20與單片機的連接</p><p>  外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬

56、電源電壓范圍的優(yōu)點,即使電源電壓VCC 降到3V 時,依然能夠保證溫度量精度。</p><p>  由于DS18B20 只有一根數(shù)據(jù)線,因此它和主機(單片機)通信是需要串行通信,而AT89S51 有兩個串行端口,所以可以不用軟件來模擬實現(xiàn)。經(jīng)過單線接口訪問DC18B20 必須遵循如下協(xié)議:初始化、ROM 操作命令、存儲器操作命令和控制操作。要使傳感器工作,一切處理均嚴格按照時序。</p><p

57、>  主機發(fā)送(Tx)--復位脈沖(最短為480μs 的低電平信號)。接著主機便釋放此線并進入接收方式(Rx)??偩€經(jīng)過4.7K的上拉電阻被拉至高電平狀態(tài)。在檢測到I/O 引腳上的上升沿之后,DS18B20 等待15~60μs,并且接著發(fā)送脈沖(60~240μs 的低電平信號)。然后以存在復位脈沖表示DS18B20 已經(jīng)準備好發(fā)送或接收,然后給出正確的ROM 命令和存儲操作命令的數(shù)據(jù)。DS18B20 通過使用時間片來讀出和寫入數(shù)據(jù)

58、,時間片用于處理數(shù)據(jù)位和進行何種指定操作的命令。它有寫時間片和讀時間片兩種:</p><p>  寫時間片:當主機把數(shù)據(jù)線從邏輯高電平拉至邏輯低電平時,產(chǎn)生寫時間片。有兩種類型的寫時間片:寫1 時間片和寫0 時間片。所有時間片必須有60 微秒的持續(xù)期,在各寫周期之間必須有最短為1微秒的恢復時間.</p><p>  讀時間片:從DS18B20 讀數(shù)據(jù)時,使用讀時間片。當主機把數(shù)據(jù)線從邏輯高

59、電平拉至邏輯低電平時產(chǎn)生讀時間片。數(shù)據(jù)線在邏輯低電平必須保持至少1 微秒;來自DS18B20 的輸出數(shù)據(jù)在時間下降沿之后的15 微秒內(nèi)有效。為了讀出從讀時間片開始算起15微秒的狀態(tài),主機必須停止把引腳驅動拉至低電平。在時間片結束時,I/O 引腳經(jīng)過外部的上拉電阻拉回高電平,所有讀時間片的最短持續(xù)期為60 微秒,包括兩個讀周期間至少1μs 的恢復時間。</p><p>  一旦主機檢測到DS18B20 的存在,它便

60、可以發(fā)送一個器件ROM 操作命令。所有ROM 操作命令均為8位長。</p><p>  所有的串行通訊,讀寫每一個bit 位數(shù)據(jù)都必須嚴格遵守器件的時序邏輯來編程,同時還必須遵守總線命令序列,對單總線的DS18B20 芯片來說,訪問每個器件都要遵守下列命令序列:首先是初始化;其次執(zhí)行ROM 命令;最后就是執(zhí)行功能命令(ROM 命令和功能命令后面以表格形式給出)。如果出現(xiàn)序列混亂,則單總線器件不會響應主機。當然,搜

61、索ROM命令和報警搜索命令,在執(zhí)行兩者中任何一條命令之后,要返回初始化。</p><p>  基于單總線上的所有傳輸過程都是以初始化開始的,初始化過程由主機發(fā)出的復位脈沖和從機響應的應答脈沖組成。應答脈沖使主機知道,總線上有從機,且準備就緒。</p><p>  在主機檢測到應答脈沖后,就可以發(fā)出ROM 命令。這些命令與各個從機設備的唯一64 位ROM 代碼相關。在主機發(fā)出ROM命令,以訪

62、問某個指定的DS18B20,接著就可以發(fā)出DS18B20支持的某個功能命令。這些命令允許主機寫入或讀出DS18B20便箋式RAM、啟動溫度轉換。軟件實現(xiàn)DS18B20的工作嚴格遵守單總線協(xié)議:</p><p>  (1)主機首先發(fā)出一個復位脈沖,信號線上的DS18B20 器件被復位。</p><p>  (2)接著主機發(fā)送ROM命令,程序開始讀取單個在線的芯片ROM編碼并保存在單片機數(shù)據(jù)存

63、儲器中,把用到的DS18B20 的ROM 編碼離線讀出,最后用一個二維數(shù)組保存ROM 編碼,數(shù)據(jù)保存在X25043中。</p><p>  (3)系統(tǒng)工作時,把讀取了編碼的DS18B20 掛在總線上。發(fā)溫度轉換命令,再總線復位。</p><p>  (4)然后就可以從剛才的二維數(shù)組匹配在線的溫度傳感器,隨后發(fā)溫度讀取命令就可以獲得對應的度值了。</p><p>  

64、在主機初始化過程,主機通過拉低單總線至少480us,來產(chǎn)生復位脈沖。接著,主機釋放總線,并進入接收模式。當總線被釋放后,上拉電阻將單總線拉高。在單總線器件檢測到上升沿后,延時15~60us,接著通過拉低總線60~240us,以產(chǎn)生應答脈沖。</p><p>  寫時序均起始于主機拉低總線,產(chǎn)生寫1 時序的方式:主機在拉低總線后,接著必須在15us之內(nèi)釋放總線。產(chǎn)生寫0 時序的方式:在主機拉低總線后,只需在整個時序

65、期間保持低電平即可(至少60us)。在寫字節(jié)程序中的寫一個bit 位的時候,沒有按照通常的分別寫0時序和寫1 時序,而是把兩者結合起來,當主機拉低總線后在15us 之內(nèi)將要寫的位c 給DO:如果c 是高電平滿足15us 內(nèi)釋放總線的要求,如果c是低電平,則DO=c這條語句仍然是把總線拉在低電平,最后都通過延時58us 完成一個寫時序(寫時序0或寫時序1)過程。</p><p>  寫時間時序:當主機把數(shù)據(jù)從邏輯高

66、電平拉到邏輯低電平的時候,寫時間隙開始。有兩種寫時間隙,寫1 時間隙和寫0 時間隙。所有寫時間隙必須最少持續(xù)60μs,包括兩個寫周期至少1μs 的恢復時間。I/O線電平變低后,DS18B20 在一個15μs 到60μs 的窗口內(nèi)對I/O 線采樣。如果線上事高電平,就是寫1,如果是低電平,就是寫0。主機要生成一個寫時間隙,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時間隙開始后的15μs 內(nèi)允許數(shù)據(jù)線拉到高電平。主機要生成一個寫0 時間隙,必須把

67、數(shù)據(jù)線拉到低電平并保存60μs。</p><p>  每個讀時隙都由主機發(fā)起,至少拉低總線1us,在主機發(fā)起讀時序之后,單總線器件才開始在總線上發(fā)送0 或1。所有讀時序至少需要60us。</p><p><b>  4.3溫度報警電路</b></p><p>  本此設計可以采用發(fā)光二級管報警電路,如過需要報警,則只需將相應位置1,當參數(shù)判斷完

68、畢后,再看報警模型單元ALARM 的內(nèi)容是否與預設一樣,如不一樣,則發(fā)光報警。但本次設計采軟件處理報警,利用有源蜂鳴器進行報警輸出,采用直流供電。當所測溫度超過獲低于所預設的溫度時,數(shù)據(jù)口相應拉高電平,報警輸出。報警電路硬件連接見圖 5.10。</p><p>  圖 5.10蜂鳴器電路連接圖</p><p><b>  5 軟件設計</b></p>&

69、lt;p><b>  5.1 概述</b></p><p>  整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個控制系統(tǒng)的核心,專門用來協(xié)調各執(zhí)行模塊和操作者的關系。二是執(zhí)行軟件(子程序),它是用來完成各種實質性的功能如測量、計算、顯示、通訊等。每一個執(zhí)行軟件也就是一個小的功能執(zhí)行模

70、塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結構,然后根據(jù)實時性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調度關系。</p><p><b>  5.2主程序模塊</b></p><p>  主程序需要調用4 個子程序,分別為數(shù)碼管顯示程序,溫度測試

71、及處理子程序,報警子程序,中斷設定子程序。各模塊程序功能如下:</p><p>  ●數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。</p><p>  ●溫度測試及處理程序:對溫度芯片送過來的數(shù)據(jù)進行處理,進行判斷和顯示。</p><p>  ●報警子程序:進行溫度上下限判斷及報警輸出。</p><p>  ●中斷設定程序:實現(xiàn)設定

72、上下限報警功能。</p><p>  圖 6.1主程序 圖 6.2 DS18B20初始化流程圖 </p><p>  5.3各模塊流程設計</p><p>  下面對主要子程序的流程圖做介紹</p><p>  5.3.1 溫度檢測流程</p><p>  DS18B20在

73、單片機控制下分三個階段:</p><p>  ●18B20 初始化:初始化流程圖見</p><p>  ●讀18B20時序:讀DS18B20流程見圖 6.3:</p><p>  ●寫18B20時序:寫18B20 流程見圖6.4</p><p>  圖 6.3讀DS18B20流程圖 圖 6.4寫DS18B20流程圖</p

74、><p>  5.3.2 中斷設定流程</p><p>  中斷模塊采用了外中斷和內(nèi)中斷套用方法。當設計需要實現(xiàn)上下限報警時,利用INT0口進行中斷,set 鍵進行上下限報警溫度設定,進入溫度設定狀態(tài)后(按一下溫度設定鍵),首先會提示顯示“UP”字母,表示要用戶設定高溫報警溫度,按S3 鍵 ,表示本位數(shù)字+1,按S4 表示移向下一位,如果4 位高溫設定完畢,則顯示“DO”,表示要用戶設定低溫報

75、警溫度。4位低溫設定完畢,如果用戶設置的高溫比設定的低溫高的話則顯示“ERRO”表示錯誤提示,同時會有蜂鳴器及時報警提示,然后自動顯示“UP”,讓用戶重新進行溫度設定。中斷設定子程序流程圖見下圖</p><p>  圖6.6 中斷設定子程序流程圖</p><p><b>  源程序</b></p><p>  TIMEL

76、EQU 0E0H</p><p>  TIMEH EQU 0B1H</p><p>  TEMPHEAD EQU 36H;</p><p>  BITST DATA 20H</p><p>  TIME1SOK

77、 BIT BITST.1</p><p>  TEMPONEOK BIT BITST.2</p><p>  TEMPL DATA 26H</p><p>  TEMPH DATA 27H</p><p>  TEMPHC

78、 DATA 28H</p><p>  TEMPLC DATA 29H;</p><p>  TEMPDIN BIT P3.7;</p><p>  ORG 0000H</p><p>  LJMP START&

79、lt;/p><p>  ORG 00BH</p><p>  LJMP T0IT;</p><p>  ORG 100H</p><p>  START: MOV SP,#60H</p><p>  CLSMEM: MOV

80、 R0,#20H</p><p>  MOV R1,#60H</p><p>  CLSMEM1: MOV @R0,#00H</p><p>  INC R0</p><p>  DJNZ R1,CLSMEM1</p><p>

81、  MOV TMOD,#00100001B</p><p>  MOV TH0,#TIMEL</p><p>  MOV TL0,#TIMEH</p><p>  SJMP INIT</p><p>  ERROR: NOP</p><p&g

82、t;  LJMP START</p><p><b>  NOP</b></p><p>  INIT: NOP</p><p>  SETB ET0</p><p>  SETB TR0</p><p>  SETB

83、EA</p><p>  MOV PSW,#00H</p><p>  CLR TEMPONEOK</p><p>  LJMP MAIN;</p><p>  TOIT: PUSH PSW</p><p>  MOV P

84、SW,#10H</p><p>  MOV TH0,#TIMEH</p><p>  MOV TL0,#TIMEL</p><p>  INC R7</p><p>  CJNE R7,#32H,T0IT1</p><p>  MOV R7,

85、#00H</p><p>  SETB TIME1SOK</p><p>  T0IT1: POP PSW</p><p><b>  RETI;</b></p><p>  MAIN: LCALL DISP1</p>&l

86、t;p>  JNB TIME1SOK,MIAN</p><p>  CLR TIME1SOK</p><p>  JNB TEMPONEOK,MAIN2</p><p>  LCALL READTEMP1</p><p>  LCALL CONVTEMP</p

87、><p>  LCALL DISPBCD</p><p>  LCALL DISP1</p><p>  MIAN: LCALL READTEMP</p><p>  SETB TEMPONEOK;</p><p>  INITDS1820:

88、 SETB TEMPDIN</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  CLR TEMPDIN</p><p>  MOV R6,#0A0H</p><p>  DJ

89、NZ R6,$</p><p>  MOV R6,#0A0H</p><p>  DJNZ R6,$</p><p>  SETB TEMPDIN</p><p>  MOV R6,#32H</p><p>  DJNZ R6,$&

90、lt;/p><p>  MOV R6,#3CH</p><p>  LOOP1820: MOV C,TEMPDIN</p><p>  JC INITDS1820OUT</p><p>  DJNZ R6,LOOP1820</p><p>  M

91、OV R6,#064H</p><p>  DJNZ R6,$</p><p>  SJMP INITDS1820</p><p><b>  RET</b></p><p>  INITDS1820OUT: SETB TEMPDIN</p>&

92、lt;p><b>  RET;</b></p><p>  READDS1820: MOV R7,#08H</p><p>  SETB TEMPDIN</p><p><b>  NOP</b></p><p><b>  NOP</b

93、></p><p>  READDS1820LOOP: CLR TEMPDIN</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p> 

94、 SETB TEMPDIN</p><p>  MOV R6,#07H</p><p>  DJNZ R6,$</p><p>  MOV C,TEMPDIN</p><p>  MOV R6,#3CH</p><p>  DJNZ

95、 R6,$</p><p>  RRC A</p><p>  SETB TEMPDIN</p><p>  DJNZ R7,READDS1820LOOP</p><p>  MOV R6,#3CH</p><p>  DJNZ R6,$<

96、;/p><p><b>  RET;</b></p><p>  WRITEDS1820: MOV R7,#08H</p><p>  SETB TEMPDIN</p><p><b>  NOP</b></p><p><b> 

97、 NOP</b></p><p>  WRITEDS1820LOP: CLR TEMPDIN</p><p>  MOV R6,#07H</p><p>  DJNZ R6,$</p><p>  RRC A</p><p>  MOV

98、 TEMPDIN,C</p><p>  MOV R6,#34H</p><p>  DJNZ R6,$</p><p>  SETB TEMPDIN</p><p>  DJNZ R7,WRITEDS1820LOP</p><p><b> 

99、 RET;</b></p><p>  READTEMP: LCALL INITDS1820</p><p>  MOV A,#FoH</p><p>  LCALL WRITEDS1820</p><p>  MOV R6,#34H</p>&l

100、t;p>  DJNZ R6,$</p><p>  MOV A,#44H</p><p>  LCALL WRITEDS1820</p><p>  MOV R6,#34H</p><p>  DJNZ R6,$</p><p><b&

101、gt;  RET</b></p><p>  READTEMP1: LCALL INITDS1820</p><p>  MOV A,#0CCH</p><p>  LCALL WRITEDS1820</p><p>  MOV R6,#34H</p>

102、<p>  DJNZ R6,$</p><p>  MOV A,#0BEH</p><p>  LCALL WRITEDS1820</p><p>  MOV R6,#34H</p><p>  DJNZ R6,$</p><p> 

103、 MOV R5,#09H</p><p>  MOV R0,#TEMPHEAD</p><p>  MOV B,#00H</p><p>  READTEMP2: LCALL READDS1820</p><p>  MOV @R0,A</p>

104、<p>  INC R0</p><p>  READTEMP21: LCALL CRC8CAL</p><p>  DJNZ R5,READTEMP2</p><p>  MOV A,B</p><p>  JNZ READTEMPOUT<

105、;/p><p>  MOV A,TEMPHEAD+0</p><p>  MOV TEMPL,A</p><p>  MOV A,TEMPHEAD+1</p><p>  MOV TEMPH,A</p><p>  READTEMPOUT: RET;&

106、lt;/p><p>  CONVTEMP: MOV A,TEMPH</p><p>  ANL A,#80H</p><p>  JZ TEMPC1</p><p>  CLR C</p><p>  MOV A,TEMPL&l

107、t;/p><p>  CPL A</p><p>  ADD A,#01H</p><p>  MOV TEMPL,A</p><p>  MOV A,TEMPH</p><p>  CPL A</p><p>  AD

108、DC A,#00H</p><p>  MOV TEMPH,A</p><p>  MOV TEMPHC,#0BH</p><p>  SJMP TEMPC11</p><p>  TEMPC1: MOV TEMPHC,#0AH</p>

109、<p>  TEMPC11: MOV A,TEMPHC</p><p>  SWAP A</p><p>  MOV TEMPHC,A</p><p>  MOV A,TEMPL</p><p>  ANL A,#0FH</p>

110、;<p>  MOV DPTR,#TEMPDOTTAB</p><p>  MOVC A,@A+DPTR</p><p>  MOV TEMPLC,A</p><p>  MOV A,TEMPL</p><p>  ANL A,#0F0H</p&

111、gt;<p>  SWAP A</p><p>  MOV TEMPL,A</p><p>  MOV A,TEMPH</p><p>  ANL A,#0FH</p><p>  SWAP A</p><p>  ORL

112、 A,TEMPL</p><p>  LCALL HEX2BCD1</p><p>  MOV TEMPL,A</p><p>  ANL A,#0F0H</p><p>  SWAP A</p><p>  ORL A,TEMPHC&l

113、t;/p><p>  MOV TEMPHC,A</p><p>  MOV A,TEMPL</p><p>  ANL A,#0FH</p><p>  SWAP A</p><p>  ORL A,TEMPLC</p><p

114、>  MOV TEMPLC,A</p><p>  MOV A,R7</p><p>  JZ TEMPC12</p><p>  ANL A,#0FH</p><p>  SWAP A</p><p>  MOV R

溫馨提示

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

評論

0/150

提交評論