溫報警課程設計報告_第1頁
溫報警課程設計報告_第2頁
溫報警課程設計報告_第3頁
溫報警課程設計報告_第4頁
溫報警課程設計報告_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應用 課程設計報告書題 目:基于DS18B20的溫度測量及報警系統(tǒng)設計姓 名:崔銀海學 號:1210702103專 業(yè):電子信息工程指導老師:沈兆軍 曹瑞設計時間:2015年 6月/信息工程學院目 錄1 引 言11.1 設計意義11.2系統(tǒng)功能要求12 方案設計13硬件設計63.1單片機最小系統(tǒng)6(1).時鐘電路7(2).復位電路8(1). DS18B20介紹94軟件設計134.1主程序模塊135系統(tǒng)調試162)proteus仿真圖17高溫報警 低溫報警:176 設計總結187參考文獻188附 錄A;源程序199附 錄B;電路原理總圖、作品實物圖片28基于DS18B20的溫度測量及

2、報警系統(tǒng)設計1 引 言1.1 設計意義溫度是一個很重要的物理量,它直接影響化學反應、發(fā)酵、煅燒、濃度、蒸餾、結晶以及空氣流動等物理及化學過程。溫度控制失誤就可能引起生產(chǎn)安全、質量和產(chǎn)量等一系列問題。溫度測量無論是在工業(yè)生產(chǎn)過程中,還是在日常生活中都起著非常重要的作用。傳統(tǒng)的溫度采集方法不僅費時費力,而且精度差,而單片機的出現(xiàn)使得溫度的采集和數(shù)據(jù)處理問題能夠得到很好的解決。特別是在環(huán)境惡劣或溫度較高等場合下,為了保證生產(chǎn)過程正常安全地進行,提高產(chǎn)品的質量和數(shù)量,以及減輕工人的勞動強度、節(jié)約能源,要求對加熱爐內溫度進行測量、顯示、報警及控制,使之達到工藝標準,以單片機為核心設計的溫度測量系統(tǒng),可以

3、對溫度進行實時測量,并將溫度數(shù)據(jù)進行顯示和報警以及進行相應控制。1.2 系統(tǒng)功能要求本設計是對溫度進行實時監(jiān)測與控制,設計的溫度控制系統(tǒng)實現(xiàn)了基本的溫度控制功能:當溫度低于設定下限溫度時,蜂鳴器報警,同時紅燈亮,模擬加熱過程,使溫度上升;當溫度高于設定上限溫度時,蜂鳴器報警,同時綠燈亮,模擬制冷過程,使溫度下降;溫度在上下限溫度之間時,蜂鳴器和紅綠燈不動作;LCD1602實時時顯示溫度,精確到小數(shù)點一位;通過獨立按鍵可以設置溫度的控制范圍。 2 方案設計2.1 系統(tǒng)方案選擇采用數(shù)字溫度芯片DS18B20測量溫度,輸出信號全數(shù)字化。便于單片機控制及處理,省去傳統(tǒng)測溫方法的很多外圍電路。且該芯片的

4、性能比較穩(wěn)定,線形較好,在0100°C時,最大線性偏差小于1°C。DS18B20采用了單總線的數(shù)據(jù)傳輸,由DS18B20和微控制器STC89C52構成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與單片機連接。這樣,測溫系統(tǒng)的結構就比較簡單,體積也不大。采用51單片機控制,軟件編程的自由度很大,可通過C語言編程實現(xiàn)各種各樣的算術算法和邏輯控制,而且硬件實現(xiàn)簡單,安裝方便。另外51單片機在工業(yè)控制上也有著廣泛的應用,編程技術及外圍功能電路的配合使用都很成熟。該系統(tǒng)利用STC89C52芯片控制溫度傳感器DS18B20進行實時溫度檢測并顯示,能夠實現(xiàn)快速測量環(huán)境溫度并可以根據(jù)需

5、要設定上下限報警溫度進行報警和相應的控制處理。該系統(tǒng)擴展性很強,它可以利用鍵盤來進行溫度范圍調整,利用AT24C02芯片作為存儲器件,獲得的數(shù)據(jù)可以通過I2C總線協(xié)議與AT24C02通信而把溫度范圍數(shù)據(jù)儲存起來,方便應用中的實時調整以及關機重啟后加載數(shù)據(jù)。2.2 系統(tǒng)的電路設計方框圖在本系統(tǒng)的電路設計方框圖如圖2.1所示,它由五部分組成: 51單片機DS18b20溫度測量電路用戶按鍵LCD1602顯示蜂鳴器報警電路 圖21 溫度計電路總體設計方案1. 控制部分單片機AT89S52具有低電壓供電和體積小等特點,它所具有的資源能足夠滿足此次電路系統(tǒng)的設計需要,并且很適合便攜手持式產(chǎn)品的設計使用。2

6、. 顯示部分顯示電路采用LCD1602,第一行顯示當前溫度,第二行顯示控制溫度范圍。3. 用戶按鍵用戶按鍵采用4位獨立按鍵,能夠對溫度上下限進行設置。4. 蜂鳴器報警電路當前溫度超出設定的溫度上下限時,蜂鳴器報警。5. 溫度測量電路DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫。這一部分主要完成對溫度信號的采集和轉換工作,由DS18B20數(shù)字溫度傳感器及其與單片機的接口部分組成。數(shù)字溫度傳感器DS18B20把采集到的溫度通過數(shù)據(jù)引腳傳到單片機的P1.4口。此部分只用到DS18B20和單片機,硬件很簡單。

7、(1) DS18B20的性能特點如下:1) 獨特的單線接口僅需要一個端口引腳進行通信;2) 多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;3) 無須外部器件;4) 可通過數(shù)據(jù)線供電,電壓范圍為3.05.5V;5) 零待機功耗;6) 溫度以3位數(shù)字顯示;7) 用戶可定義報警設置;8) 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;9) 負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。 (2) DS18B20的內部結構DS18B20采用3腳PR35封裝,如圖1.2所示;DS18B20的內部結構,如圖3所示。圖22 DS18B20封裝(3) DS18

8、B20內部結構主要由四部分組成:1) 64位光刻ROM。開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前56位的CRC校驗碼,這也是多個DS18B20可以采用一線進行通信的原因。64位閃速ROM的結構如下.表21 ROM結構8b檢驗CRC48b序列號8b工廠代碼(10H) MSB LSB MSB LSB MSB LSB圖23 DS18B20內部結構2) 非揮發(fā)的溫度報警觸發(fā)器TH和TL,可通過軟件寫入用戶報警上下限值。3) 高速暫存存儲,可以設置DS18B20溫度轉換的精度。DS18B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的E2

9、PRAM。高速暫存RAM的結構為8字節(jié)的存儲器,結構如圖1.3所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內容用于確定溫度值的數(shù)字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數(shù)值。它的內部存儲器結構和字節(jié)定義如圖1.3所示。低5位一直為,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式。 表22 DS18B20內部存儲器結構Byte0溫度測量值LSB(50H)Byte1溫度測量值MSB(50H)E2PROMByte2TH高溫寄存器ß-àTH高溫寄存器

10、Byte3TL低溫寄存器ß-àTL 低溫寄存器Byte4配位寄存器ß-à配位寄存器Byte5預留(FFH)Byte6預留(0CH)Byte7預留(IOH)Byte8循環(huán)冗余碼校驗(CRC)2) 非揮發(fā)的溫度報警觸發(fā)器TH和TL,可通過軟件寫入用戶報警上下限值。3) 高速暫存存儲,可以設置DS18B20溫度轉換的精度。DS18B20出廠時該位被設置為0,用戶要去改動,R1和R0決定溫度轉換的精度位數(shù),來設置分辨率,如圖1.4。圖23 DS18B20字節(jié)定義TM R1R0 1 1 1 1 1由表1.1可見,分辨率越高,所需要的溫度數(shù)據(jù)轉換時間越長。因此,在實

11、際應用中要將分辨率和轉換時間權衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625LSB形式表示。當符號位S0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。 表1.2是一部分溫度值對應的二

12、進制溫度數(shù)據(jù)6。表24 DS18B20溫度轉換時間表R1R0分辨率/位溫度最大轉向時間/ms00993.750110187.510113751112750表25一部分溫度對應值表溫度/二進制表示十六進制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF

13、8H續(xù)表25-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H4) CRC的產(chǎn)生 在64 b ROM的最高有效字節(jié)中存儲有循環(huán)冗余校驗碼(CRC)。主機根據(jù)ROM的前56位來計算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機收到的ROM數(shù)據(jù)是否正確。另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)發(fā)ROM功能命令發(fā)存儲器操

14、作命令處理數(shù)3 硬件設計3.1單片機最小系統(tǒng)單片機最小應用系統(tǒng),是指用最少的原件組成的單片機可以工作的系統(tǒng)。對51系列單片機來說,最小系統(tǒng)應包括單片機、晶振電路、復位電路。下面介紹51單片機的最小系統(tǒng)電路圖。 圖2.2 單片機最小系統(tǒng)單片機的最小系統(tǒng)是由電源、復位、時鐘,下面介紹一下每一個組成部分。(1).時鐘電路圖2.3時鐘電路XTAL1是片內振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應直接加到XTAL1,而XTAL2懸空。內部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內選擇。電容取3

15、0PF左右。系統(tǒng)的時鐘電路設計是采用的內部方式,即利用芯片內部的振蕩電路。AT89單片機內部有一個用于構成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體諧振器一起構成一個自激振蕩器。外接晶體諧振器以及電容C1和C2構成并聯(lián)諧振電路,接在放大器的反饋回路中。對外接電容的值雖然沒有嚴格的要求,但電容的大小會影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應盡可能的選擇陶瓷電容,電容值約為22F。在焊接刷電路板時,晶體振蕩器和電容應盡可能安裝得與單片機芯片靠近,

16、以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。(2).復位電路在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現(xiàn)在此引腿時,將使單片機復位,只要這個腳保持高電平,51芯片便循環(huán)復位。復位后P0P3口均置1引腳表現(xiàn)為高電平,程序計數(shù)器和特殊功能寄存器SFR全部清零。當復位腳由高電平變?yōu)榈碗娖綍r,芯片為ROM的00H處開始運行程序。復位是由外部的復位電路來實現(xiàn)的。片內復位電路是復位引腳RST通過一個斯密特觸發(fā)器與復位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個機器周期的S5P2,由復位電路采樣一次。復位電路通常采用上電自動復位和按鈕復位兩種方式,此電路系統(tǒng)采用的是上電與按鈕

17、復位電路。當時鐘頻率選用6MHz時,C取22F,Rs約為200,Rk約為1K。復位操作不會對內部RAM有所影響。常用的復位電路如下圖所示: 圖2.4 復位電路圖3.2 溫度檢測電路及DS18B20測溫原理(1). DS18B20介紹DS18B20引腳如圖3-4所示。圖3-4 DS18B20的管腳排列DALLAS半導體公司的單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積小、適用于多種場合。DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55+125 °C,可編程為9位12 位轉換精度,測溫分辨率可達0.0625°C。被測溫度用符

18、號擴展的16位數(shù)字量方式串行輸出。多個DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口很少,可節(jié)省大量的引線和邏輯電路。(2).DS18B20特性(1) 適應電壓范圍寬:3.0 V5.5V,在寄生電源方式下可由數(shù)據(jù)線供電。(2) 獨特的單線接口方式,在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。(3) DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。(4) 測溫范圍55125,在-10+85時精度為±0.5。(5) 可編程的分辨率為912位,對

19、應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫。(6) 在9位分辨率時最多在93.75ms內把溫度轉換為數(shù)字,12位分辨率時最多在750ms內把溫度值轉換為數(shù)字。(7) 測量結果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有很強的抗干擾糾錯能力。(8) 負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作2。(3).DS18B20硬件電路在硬件上,DS18B20與單片機的連接有兩種方法,一種是VCC接外部電源,GND接地,I/O與單片機的I/O線相連;另一種是用寄生電源供電,此時VDD、GND接地,I/O接單片機I

20、/O。無論是內部寄生電源還是外部供電,I/O口線要接10K左右的上拉電阻。我們采用的是第一種連接方法,如圖3-5所示,把DS18B20的數(shù)據(jù)線與單片機的P2.5管腳連接,再加上上拉電阻。 圖3-5 DS18B20連接圖3.3 報警溫度調節(jié)電路本系統(tǒng)一共設置了3個按鍵,系統(tǒng)運作時按key1鍵切換到下限溫度設置模式,同時數(shù)碼管顯示下限溫度,按key2,key3可以對相應的下限溫度進行加減設置。再按key1鍵切換到上限溫度設置模式,同時顯示上限溫度,同樣按key2,key3可以進行設置。再按key1切換到正常顯示溫度模式,同時將上下限溫度值儲存到AT24C02中。按鍵電路如圖3-6所示,直接將I/O

21、口通過按鍵接地即可,程序運行時檢測到低電平即為按鍵按下。圖3-6 溫度調整按鍵電路3.4 報警及控制電路由于只對溫度太高和太低報警,報警功能并不復雜,這里沒有采用語音報警功能,而用蜂鳴器代替,這樣系統(tǒng)更簡潔,軟件方面也比較好控制,成本也更低。蜂鳴器電路如圖3-9,采用PNP三極管驅動蜂鳴器4 圖 3-9蜂鳴器電路在溫度控制方面,降溫利用小風扇實現(xiàn),而考慮到成本和簡便,加熱器用紅色LED燈模擬。電路如圖3-10圖 3-10 溫度控制電路4 軟件設計4.1主程序模塊主程序需要調用3個子程序,分別為:l DS18B20測溫子程序:l 實時溫度顯示子程序:驅動LCD1602把實時溫度值顯示出來l 溫度

22、設定、報警子程序:設定報警溫度值,當溫度超過該值時產(chǎn)生報警,即驅動蜂鳴器鳴叫、2個發(fā)光二極管發(fā)光主程序流程圖:開 始初始化DS18B20顯示當前溫度判斷當前溫度值超過設定溫度上限蜂鳴器報警紅燈亮設定溫度上、下限蜂鳴器報警是否低于設定溫度下限是綠燈亮否4.2 主程序設計系統(tǒng)軟件主要在溫度顯示和鍵盤掃描之間循環(huán),隔一段時間才對DS18B20進行溫度獲取,所以顯示和掃描循環(huán)50次后再和溫度測量部分構成系統(tǒng)大循環(huán),即大約每一秒獲取一次溫度數(shù)據(jù)。如下為系統(tǒng)主程序:void main()uint j; /計數(shù)器xia=read_add(2);delayms(10);shang=read_add(4); /

23、讀出保存的上限數(shù)據(jù)TMOD=0x01; /定時器工作在方式1ET0=1;EA=1;TH0=(65536-250)/256;TL0=(65536-250)%256;TR0=0; /先關閉定時器while(1)tempchange(); /溫度轉換dis_temp(temp); /顯示溫度dis_temp(temp);get_temp(); /獲取溫度dis_temp(temp);dis_temp(temp); deal(); /溫度處理j=50;while(j-)dis_temp(temp); if(KEY1=0)set(); /鍵盤掃描4.3 測溫程序設計DS18B20與單片機通信采用的是單總

24、線技術,它采用單條信號線,既可傳輸時鐘,又可傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,因而這種單總線技術具有線路簡單,硬件開銷少,成本低廉,便于總線擴展和維護等優(yōu)點。DS18B20測溫過程主要分三個步驟:DS18B20溫度轉換,DS18B20度暫存數(shù)據(jù),數(shù)據(jù)求出十進制,如圖4-2:圖 4-2 測溫流程4.3.1溫度轉換工作流程1. DS18B20復位2. 寫入跳過ROM的字節(jié)命令0xcc3. 寫入開始轉換的功能命令0x444. 延遲月750900ms4.3.2讀暫存器數(shù)據(jù)流程1. DS18B20復位2. 寫入跳過ROM的字節(jié)命令0xcc3. 寫入讀暫存器功能命令0xee4. 讀入第0個字節(jié)LS,轉換結果

25、低八位5. 讀入第1個字節(jié)MS,轉換結果高八位6. 復位,表示讀取暫存結果4.3.3數(shù)據(jù)求出十進制1. 整合LS和MS數(shù)據(jù)2. 判斷是否為正(由于本系統(tǒng)測量范圍在0到99.9之間,故不要)5 系統(tǒng)調試5.1硬件調試(1)在本溫度控制電路的設計調試中遇到了很多的問題?;叵脒@些問題只要認真多思考都是可以避免的,以下為主要的問題:1)了解到作為上拉電阻的排阻具有公共腳,不可接錯。2)單片機(31腳)應接高電平,是內外存儲器選擇引腳。當信號為低電平時,無論單片機是否有內部程序存儲器在,只訪問外部程序存儲器;當信號為高電平時,先訪問內部程序存儲器,當程序計數(shù)器PC超過片內程序存儲器容量時,將自動轉向外部

26、程序存儲器。本設計使用單片機的內部程序存儲器,故應接高電平。(2)程序編寫完以后,我們先對其進行仿真,初步驗證電路圖和程序的可行性和正確性。1) proteus簡介Proteus 是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是: 1 實現(xiàn)了單片機仿真和SPICE電路仿真相結合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調試器、SPI調試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。 2 支持主流

27、單片機系統(tǒng)的仿真。目前支持的單片機類型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。 3 提供軟件調試功能。在硬件仿真系統(tǒng)中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環(huán)境,如Keil C51 uVision2、MPLAB等軟件。 具有強大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C和SPICE分析于一身的仿真軟件,功能極其強大。 proteus6.5是目前最好的模擬單片機外圍器件的工具,真的很不錯??梢?/p>

28、仿真51系列、AVR,PIC等常用的MCU及其外圍電路(如LCD,RAM,ROM,鍵盤,馬達,LED,AD/DA,部分SPI器件,部分IIC器件,.) 其實proteus 與 multisim比較類似,只不過它可以仿真MCU。proteus仿真圖高溫報警: 低溫報警:6 設計總結本設計使用的溫度控制器結構簡單、測溫準確,具有一定的實際應用價值。該智能溫度控制器只是DS18B20在溫度控制領域的一個簡單實例,還有許多需要完善的地方,例如可以將測得的溫度通過單片機與通訊模塊相連接,以手機短消息的方式發(fā)送給用戶,使用戶能夠隨時對溫度進行監(jiān)控。此外,還能廣泛地應用于其他一些工業(yè)生產(chǎn)領域,如建筑,倉儲等

29、行業(yè)。本溫度控制系統(tǒng)可以應用于多種場合,像的溫度、育嬰房的溫度、水溫的控制。用戶可靈活選擇本設計的用途,有很強的實用價值。7參考文獻1張毅剛、彭喜元.單片機原理與應用設計M.北京:電子工業(yè)出版社,2008.4:10-132 郭天祥.新概念51單片機C語言教程M.北京:電子工業(yè)出版社,2009.1:3433 鄒振春.王宗和.單片機實訓M.高等教育出版社.20024 周志德.單片機原理及應用M.高等教育出版社.20075蘇麟祥.DS1820數(shù)字溫度傳感器的功能特性及其應用.世界采礦快報,2000(9)6. 沙占友等.智能化集成溫度傳感器原理與應用.北京:機械工業(yè)出版社,20028 附 錄A;源程序

30、 /*- 名稱:18B20溫度測量報警 內容:在LCD1602第一行可以顯示當前溫度,第二行顯示設定的溫度區(qū)間,超過此溫度區(qū)間,蜂鳴器報警。溫度區(qū)間可以通過用戶按鍵設置-*/#include<reg52.h> #include<math.h>#include<INTRINS.H>#define uchar unsigned char#define uint unsigned int /*/* 定義端口 */*/sbit led1=P10;/ 溫度超出范圍指示燈sbit led2=P11;sbit buzzer=P13;/蜂鳴器引腳sbit DQ=P14;/d

31、s18b20 端口sbit RS = P24;/1602數(shù)據(jù)/命令選擇端(H:數(shù)據(jù)寄存器L:指令寄存器) sbit RW = P25;/1602讀/寫選擇端 sbit E = P26;/1602使能信號端sbit key1=P34;/用戶按鍵sbit key2=P35;sbit key3=P36;sbit key4=P37;/*/* 全局變量 */*/int temp;/測得溫度char temp_max=40,temp_min=10;/設定的溫度 char TempH,TempL;uchar flag_get,num=0;uchar code tab='0','1&#

32、39;,'2','3','4','5','6','7','8','9'/液晶顯示uchar tab1="min:010 max:040"/液晶第二行顯示內容uchar str8;/*/* 延時函數(shù) */*/void delay1(uint i)/短延時函數(shù) while(i-);void delay(uint z) /長延時函數(shù)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*/* DS18B20 初

33、始化 */*/void Init_DS18B20(void)uchar x=0; DQ = 0; /單片機將DQ拉低 delay1(4800); /精確延時 大于 480us DQ = 1; /拉高總線,等待 delay1(100); x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay1(50); /*/* DS18B20讀一個字節(jié) */*/uchar ReadOneChar(void)/ DS18B20讀一個字節(jié)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號 dat>>=1; D

34、Q = 1; / 給脈沖信號,主機在讀時隙期間必須釋放總線 if(DQ) dat|=0x80;delay1(50); return(dat);/*/* DS18B20寫一個字節(jié) */*/void WriteOneChar(uchar dat) /DS18B20寫一個字節(jié) uchar i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01;/取最低位 delay1(50); DQ = 1; dat>>=1;/左移 delay1(50);/*/* DS18B20讀取溫度 */*/uint ReadTemperature(void) /D

35、S18B20讀取溫度uchar a=0;uint b=0;uint t=0;Init_DS18B20();/DS18B20初始化WriteOneChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉換delay1(2000); /延時以求信號的穩(wěn)定Init_DS18B20(); /DS18B20再次初始化WriteOneChar(0xCC); /跳過讀序號列號的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b<

36、;<=8; /b左移8位t=a+b; /把a與b結合,放在16位的t中return(t);/*/* LCD1602寫命令操作 */*/void WriteCommand(uchar com)delay(50);/操作前短暫延時,保證信號穩(wěn)定E=0;RS=0;RW=0;P0=com;E=1;delay(50);E=0;/*/* LCD1602寫數(shù)據(jù)操作 */*/void WriteData(uchar dat)delay(50); /操作前短暫延時,保證信號穩(wěn)定E=0;RS=1;RW=0;P0=dat;E=1;delay(50);E=0;/*/* LCD1602初始化程序 */*/void

37、 InitLcd()uchar i;delay(150);WriteCommand(0x38); /display modeWriteCommand(0x38); /display modeWriteCommand(0x38); /display modeWriteCommand(0x06); /顯示光標移動位置WriteCommand(0x0c); /顯示開及光標設置WriteCommand(0x01); /顯示清屏WriteCommand(0x80+0x40);/將光標移到第二行for(i=0;i<16;i+)/顯示初始化內容WriteData(tab1i);delay(10);/*

38、/* 蜂鳴器報警程序 */*/void alarm()if(TempH>=temp_max)/當溫度高于設置的最高溫報警buzzer=0;delay(500);buzzer=1;delay(500);led1=0;led2=1;else if(TempH<temp_min)/當溫度低于設置的最低溫報警buzzer=0;delay(500);buzzer=1;delay(500);led1=1;led2=0;else/報警解除 buzzer=1;led1=1;led2=1;/*/* 顯示測得的溫度 */*/void handle_T()uchar i;str0=0x20;/顯示為空s

39、tr1=tabTempH/100; /百位溫度 str2=tab(TempH%100)/10; /十位溫度 str3=tab(TempH%100)%10; /個位溫度,帶小數(shù)點 str5=tabTempL;str4='.' str6=0xdf; str7='C' if(flag_get=1) /定時讀取當前溫度 flag_get=0; /清標志位 temp=ReadTemperature();/讀取溫度值 if(temp&0x8000) str0=0xb0;/負號標志 temp=temp; / 取反加1 temp +=1; TempH=temp>>4;/由權重表知移4位就是整數(shù)位 TempL=temp&0x0F; TempL=TempL*6/10;/小數(shù)近似處理alarm(); /判斷是否需要報警 WriteCommand(0x80+0x04);/光標指向第一行第一個字符for(i=0;i<8

溫馨提示

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

評論

0/150

提交評論