設計要求
1. 測量溫度值精度為±1℃; 2. 系統允許的誤差范圍為1℃以內; 3. 系統可由用戶預設溫度值,測溫范圍為-55℃~+125℃; 4. 通過DS18B20傳感器和系統連接,能實時準確檢測到現場溫度; 5. 把現場實時檢測到的溫度值通過LCD1602液晶顯示出來; 6. 報警溫度設定和報警:根據需要可以設置報警溫度,并且當達到報警溫度時會發出報警提示;
內容介紹
本文介紹一種基于AT89C52的溫度監控報警系統設計,系統采用DS18B20作為溫度監測元件,測量范圍-55℃-~+125℃,使用LCD1602液晶模塊顯示測取的溫度值,通過按鍵設置溫度報警上下限。若當前獲取的溫度不在設定溫度上下限范圍內時,蜂鳴器報警,LED燈點亮,指示當前報警信息。
系統框架
系統框圖.jpg (35.85 KB, 下載次數: 95)
下載附件
2019-9-18 18:15 上傳
仿真結果
仿真結果運行.jpg (187.68 KB, 下載次數: 98)
下載附件
2019-9-18 18:15 上傳
部分程序如下 /***********Main主程序**************/ void main() { init(); Init_time(); Init_DS18B20(); while(1) { if(s1==0||s1num>=1) {keyscan(); TR0 = 0; D1 =1; D2 = 1;} else { ReadTemp(); write_temp_value(0,temp_value); comp(); } } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /***********LCD初始化程序**************/ void init() { lcden=0; lcdrw=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); write_com(0x80+9); write_data('H'); write_data(':'); write_data('+'); write_data('2'); write_data('0'); write_data(0xdf); write_data('C'); write_com(0x80+9+0x40); write_data('L'); write_data(':'); write_data('+'); write_data('1'); write_data('0'); write_data(0xdf); write_data('C'); h=0x14; l=0+0x0a; D1=1; D2=1; figh=0; figl=1; } /***********LCD寫指令**************/ voidwrite_com(uchar com) { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } /***********LCD寫數據**************/ voidwrite_data(uchar date) { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } /***********LCD顯示讀取溫度值**************/ voidwrite_temp_value(uchar add,char date) { uchar bai,shi,ge; bai=date/100; shi=date%100/10; ge=date%10; if((bai|shi)==0) shi=0x70; if(bai==0) bai=0x70; write_com(0x80+add); if(fig==0&&shi!=0x70) { write_data('-'); write_data(0x30+shi); } if(fig==0&&shi==0x70) { write_data(0x30+0x70); write_data('-'); } if(fig==1)write_data(0x30+bai); if(fig==1)write_data(0x30+shi); write_data(0x30+ge); write_data(0xdf); write_data('C');
|