




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、/*程序名稱:溫度監(jiān)控系統(tǒng)*/*程序功能:利用 89C52單片機(jī)和DS18B20a度傳感器實(shí)現(xiàn)環(huán)境*/*溫度的實(shí)時(shí)測(cè)量和高、低溫報(bào)警*/*程序版本:*/*作 者:*/*編寫(xiě)時(shí)間:*/*/#include <>#include <>/含_nop_()延時(shí)函數(shù)/定義數(shù)據(jù)類型#define uchar unsigned char#define uint unsigned int/定義端口#define LED P0/段碼輸出口sbitDQ = P3 A2;/傳感器數(shù)據(jù)口sbitSMG_q = P1A0;/定義數(shù)碼管陽(yáng)級(jí)控制腳(千位)sbitSMG_b = P1A1;/定義數(shù)碼
2、管陽(yáng)級(jí)控制腳(百位)sbitSMG_s = P1A2;/定義數(shù)碼管陽(yáng)級(jí)控制腳(十位)sbitSMG_g = P1A3;/定義數(shù)碼管陽(yáng)級(jí)控制腳(個(gè)位)sbitbuzzer = P1A5;/蜂鳴器sbitled_low = P2A6;/低溫指示燈sbitled_high = P2A7;/高溫指示燈sbitled_ok = P2A5;/溫度正常指示燈sbitled_work = P2 A4;/工作指示燈sbitset = P3A7;/設(shè)置按鍵sbitadd = P3A4;/加一按鍵sbitdec = P3A5;/減一按鍵按鍵次數(shù)寄存器主函數(shù)用循環(huán)計(jì)數(shù)器溫度值溫度值整數(shù)形式上下限初值/定義變量和常量i
3、nt count = 0;/int h;/uint temp;/uchar r;/共陽(yáng)LED段碼表uchar high = 35,low = 20;/"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" uchar code LED_code12 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uchar code
4、 LED_code1口 = 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;uchar code ditab16 =0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/小數(shù)部分轉(zhuǎn)換碼表uchar data temp_data2 = 0x00,0x00;/存儲(chǔ)從傳感器讀出的溫度值uchar data dp5 = 0x00,0x00,0x00,0x00,0x00;/顯示單元數(shù)據(jù),共 4 個(gè)數(shù)據(jù)和一個(gè)運(yùn)算/子函數(shù)聲明voidds_reset
5、();/DS18B20初始化函數(shù)voidds_write(uchar ds_wrdata); /DS18B20寫(xiě)數(shù)據(jù)函數(shù)uchar ds_read();/DS18B20讀數(shù)據(jù)函數(shù)read_temp();/讀取溫度函數(shù)voidchange_temp(uint tem); /溫度數(shù)據(jù)處理voidxianshi(int horl);/溫度顯示轉(zhuǎn)換voiddisplay();/數(shù)碼管顯示函數(shù)voidkeyscan();/按鍵查詢函數(shù)voidwarn_led();/超限報(bào)警voiddelay(uint t);/延時(shí)函數(shù),單次25us/*主函數(shù)*/void main()LED=0x00;/初始化顯示端口l
6、ed1=0;led2=0;led3=0;led4=0;for(h=0;h<4;h+)dph=8;while(1)/循環(huán)執(zhí)行顯示和溫度讀取uchar i;for(i=0;i<200;i+) warn_led();/display();/keyscan();/change_temp(read_temp(); /指示燈控制顯示按鍵掃描溫度數(shù)據(jù)讀取和處理/*/* 函數(shù)名稱:ds_reset()*/*函數(shù)功能:DS18B20®始化*/*入口參數(shù):無(wú)*/*輸出參數(shù):無(wú)*/* 調(diào)用函數(shù):delay();_nop_();*/*全局變量:無(wú)*/* 局部變量:presence*/*/void
7、 ds_reset(void) char presence=1; while(presence) while(presence) DQ=1;/_nop_(); _nop_(); DQ=0;/delay(50); / DQ=1;/delay(6);/presence=DQ; / delay(45);/presence=DQ; DQ=1;/led_work=0; 傳感器數(shù)據(jù)段先置高電平/適當(dāng)延時(shí)傳感器數(shù)據(jù)段從高電平拉到低電平延時(shí)再置高電平延時(shí)初始化成功,繼續(xù)下一步延時(shí)拉高電平/開(kāi)工作指示燈/*/* 函數(shù)名稱:ds_write()*/*函數(shù)功能:向 DS18B20寫(xiě)數(shù)據(jù)*/* 入口參數(shù):ds_wrd
8、ata*/*輸出參數(shù):無(wú)*/* 調(diào)用函數(shù):delay();_nop_();*/*全局變量:無(wú)*/* 局部變量:ds_wrdata*/ /*/ void ds_write(uchar ds_wrdata) uchar i;for(i=8;i>0;i-)DQ=1;_nop_();_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();DQ=ds_wrdata&0x01;/最低位移出delay(6);ds_wrdata=ds_wrdata/2; /右移 1 位DQ=1;delay(1);/*/*函數(shù)名稱:ds_read()*/*函數(shù)功能:從 DS18B
9、20賣數(shù)據(jù)*/*入口參數(shù):無(wú)*/*輸出參數(shù):value*/*調(diào)用函數(shù):delay();_nop_();*/*全局變量:*/*局部變量:i;value;*/*/uchar ds_read(void)( 一uchar i;uchar value=0;for(i=8;i>0;i-)(DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();DQ=1;_nop_();_nop_();_nop_();_nop_();if(DQ)value|=0x80; delay(6);)DQ=1;return(value)
10、;)/*/* 函數(shù)名稱:read_temp()*/*函數(shù)功能:讀溫度數(shù)據(jù)數(shù)據(jù)*/*入口參數(shù):無(wú)*/*輸出參數(shù):yemp*/ /* 調(diào)用函數(shù):ds_reset();ds_write();ds_read(); */* delay();*/*全局變量:temp*/* 局部變量:temp_data口;*/*/*/* 函數(shù)名稱:chang_temp()*/*函數(shù)功能:將溫度法感器中獨(dú)到的數(shù)據(jù)進(jìn)行轉(zhuǎn)換/*入口參數(shù):tem*/*輸出參數(shù):dp口*/*調(diào)用函數(shù):無(wú)*/* 全局變量:dp口;ditab口;r;*/*局部變量:tem*/*/*/read_temp()ds_reset();/傳感器初始化delay(
11、200);ds_write(0xcc);/發(fā)跳過(guò)讀取序列號(hào)命令ds_write(0x44);/發(fā)溫度轉(zhuǎn)換命令ds_reset();delay(1);ds_write(0xcc);ds_write(0xbe);/讀18B20 44存儲(chǔ)器temp_data0=ds_read(); /讀溫度值的低字節(jié)命令temp_data1=ds_read(); /讀溫度值的高字節(jié)temp=temp_data1;temp<<=8;temp=temp|temp_data0; /兩字節(jié)合成一個(gè)整型變量)return temp;/返回溫度值void change_temp(uint tem)(一uchar n
12、=0; if(tem>6348) (/溫度值正負(fù)判斷tem=65536-tem;/負(fù)溫度求補(bǔ)碼n=1;/標(biāo)志位置1)dp4=tem&0x0f;/取小數(shù)部分的值dp0=ditabdp4;/存入小數(shù)部分顯示值dp4=tem>>4;/取中間八位,即整數(shù)部分的值dp3=dp4/100;/取百位數(shù)據(jù)dp1=dp4%100;/取后兩位數(shù)據(jù)dp2=dp1/10;/取十位數(shù)據(jù)dp1=dp1%10;/個(gè)位r=dp1+dp2*10+dp3*100; /實(shí)際溫度值(十進(jìn)制)if(!dp3) (/符號(hào)位顯示判斷dp3=0x0a; if(!dp2) (/最高位為0時(shí)不顯示dp2=0x0a;/次
13、高位為0時(shí)不顯示))if(n)(dp3=0x0b;/負(fù)溫度時(shí)最高位顯示 "-"),*/*函數(shù)名稱 /*函數(shù)功能 /*入口參數(shù) /*輸出參數(shù) /*調(diào)用函數(shù) /*全局變量 /*局部變量xianshi()*/溫度數(shù)據(jù)轉(zhuǎn)換成顯示所需LED段碼*/horl*/dp*/*/dp;*/n;*/*/void xianshi(int horl)(int n=0;if(horl>128)/負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換(horl=256-horl;n=1;)dp3=horl/100;dp3=dp3&0x0f;/dp2=horl%100/10;dp1=horl%10;dp0=0;if(!dp3)(d
14、p3=0x0a; if(!dp2) (dp2=0x0a;) if(n) (dp3=0x0b;)百位/ 十位/個(gè)位/小數(shù)位/高位為零不顯示/負(fù)數(shù)最高位顯示/*/* 函數(shù)名稱:display()*/*函數(shù)功能:數(shù)碼管顯示*/*入口參數(shù):無(wú)*/*輸出參數(shù):無(wú)*/*調(diào)用函數(shù):delay()*/* 全局變量:dp;LED_code;LED_code1口;*/* led1;led2;led3;led4; */*局部變量:j;*/,*void display()(int j;for(j=0;j<4;j+)/4位 LED掃描控制( switch(j) (case 0:LED=LED_codedp0;le
15、d4=1;delay(450);led4=0;break; /小數(shù)位case 1:LED=LED_code1dp1;led3=1;delay(450);led3=0;break; /個(gè)位case 2:LED=LED_codedp2;led2=1;delay(450);led2=0;break; /十位case 3:LED=LED_codedp3;led1=1;delay(450);led1=0;break; /百位/*/*函數(shù)名稱:keyscan()*/*函數(shù)功能:按鍵查詢*/*入口參數(shù):無(wú)*/*輸出參數(shù):無(wú)*/*調(diào)用函數(shù):delay();display();xianshi(); */*全局變
16、量:count;high;low;*/*局部變量:無(wú)*/*/void keyscan() if(set=0)while(1)delay(500);if(set=0)count+;while(!set)display();if(count=1)xianshi(high);display();if(add=0)/set 鍵按下/延時(shí)去抖動(dòng)/重新判斷set鍵是否按下/按鍵彈起繼續(xù)顯示前面內(nèi)容/set按下一次執(zhí)行此段/轉(zhuǎn)換上限溫度為段碼并顯示/add鍵是否按下while(!add) display();high+=1;)if(dec=0)(while(!dec) display(); high-=1;
17、)if(count=2)(xianshi(low);display();if(add=0)(while(!add) display();low+=1;)if(dec=0)(while(!dec) display();low-=1;)if(count>=3)(count=0;break;)/彈起時(shí)上限溫度加一并顯示/dec 鍵是否按下/彈起時(shí)上限溫度減一并顯示/set 鍵按下兩次執(zhí)行此段/轉(zhuǎn)換下限溫度為段碼并顯示/add 鍵是否按下/彈起時(shí)下限溫度加一并顯示/dec 鍵是否按下/彈起時(shí)下限溫度減一并顯示/set鍵按下三次回到溫度顯示狀態(tài)/*/* 函數(shù)名稱:warn_led()*/*函數(shù)功能:工作情況指示燈控制*/*入口參數(shù):無(wú)*/*輸出參數(shù):無(wú)*/*調(diào)用函數(shù):無(wú)*/* 全局變量:high;low;r;*/*局部變量:無(wú)*/*/void warn_led()( 一if(r>high)(led_low=1;led_high=0;led_ok =1;buzzer = 0;else if(r<low)(led_low=0;led_high=1;led_ok =1;buzzer = 0;else(led_low=1;led_high=1;led_ok =0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 室內(nèi)裝潢設(shè)計(jì)合同范本5篇
- Unit 2 Saving the earth Topic 3 Section D 教學(xué)設(shè)計(jì) 2024-2025學(xué)年仁愛(ài)科普版九年級(jí)英語(yǔ)上冊(cè)
- 苦丁茶苗木供貨合同7篇
- 2025年傳媒集團(tuán)合作服務(wù)合同樣本
- 2025年企業(yè)策劃投資合同樣本
- 2025年合同違約處理與防范措施
- 裝載機(jī)操作手安全責(zé)任狀與裝載機(jī)租聘合同6篇
- 2025年分期付款住宅交易合同范文
- 2025年北京市股權(quán)轉(zhuǎn)讓合同協(xié)議模板
- Unit 2 Section B 教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 2025年重慶三峽擔(dān)保集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 《快遞運(yùn)營(yíng)》課件-項(xiàng)目一 快遞運(yùn)營(yíng)認(rèn)知
- 2024糖尿病酮癥酸中毒診斷和治療課件
- GA/T 765-2020人血紅蛋白檢測(cè)金標(biāo)試劑條法
- 完整版三措兩案范文
- 鐵路總公司近期處理的七起突出質(zhì)量問(wèn)題的通報(bào)
- 常用洪水預(yù)報(bào)模型介紹
- 援外項(xiàng)目鋼結(jié)構(gòu)運(yùn)輸包裝作業(yè)指導(dǎo)書(shū)(共13頁(yè))
- 髖關(guān)節(jié)置換術(shù)男性患者留置尿管最佳時(shí)機(jī)探析和對(duì)策
- [爆笑小品校園劇本7人]爆笑小品校園劇本
- 同步帶輪設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論