單片機(jī)溫度濕度控制程序_第1頁(yè)
單片機(jī)溫度濕度控制程序_第2頁(yè)
單片機(jī)溫度濕度控制程序_第3頁(yè)
單片機(jī)溫度濕度控制程序_第4頁(yè)
單片機(jī)溫度濕度控制程序_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1、溫度濕度控制主程序(單片機(jī))#iiiclude#include dhtll.h”frdefine uchai unsigned char#define umt unsigned mtsbit beep=P2A3;sbit kl=P3A2;sbit k2=P3 八3;sbit k3=P3A6;sbit k4=P3 八 7;sbit rs=P3A5;sbit lcden=P3z 4;uchai table0=T:00.00 TM:00.0偵初始化液晶溫度實(shí)測(cè)值以及門(mén)限值緩存uchai tablel=”H:00.00 HM:00.0 ”力初始化液晶濕度實(shí)測(cè)值以及門(mén)限值緩存uchai table3

2、=Tliis is T/H test”;/系統(tǒng)開(kāi)機(jī)顯示內(nèi)容初始化緩存uchai table4=nResult is coming”;/系統(tǒng)開(kāi)機(jī)顯示內(nèi)容初始化緩存static uchar flag;extern mt temp_valuejiunu_value;void Delay_lnis(uint ms);umt TM,HM;void delay(uint x)/umt a,b;fbi(a=x;aO;a)foi(b=10;b0;b-);void delayx)延時(shí)程序umt a,b;fbi(a=x;a0;a)for(b=100;b0;b.);void wiite_com(uchai- com

3、)/液晶寫(xiě)指令操作P0=com;rs=O;lcden=0;delay(lO);lcden=l;delay(lO);lcden=0;void wiite_date(uchai- date)/液晶寫(xiě)數(shù)據(jù)操作PO=date;rs=l;lcden=0;delay(lO);lcden=l;delay(lO);lcden=0;void init()液晶初始化write_com(0 x3 8);delay(l);write_com(0 x0c);delay(l);wiite_com(0 x06);delay(l);write_com(0 x01);delay(l); _void LCD_Display(uc

4、har buffi,uchai- buff2)/液晶顯示程序 uchar aa;imtO;/液晶初始化wnte_com(0 x80+16);/寫(xiě)入第一行數(shù)據(jù)指令delay ;for(aa=0;aa 16;aa+)/寫(xiě)入第一行待顯示數(shù)據(jù) /wnte_date(buffl aa);wiite_com(OxcO+16);寫(xiě)入第二行數(shù)據(jù)指令for(aa=0;aa 16;aa+)寫(xiě)入第一行待顯示數(shù)據(jù)wiite_date(buff2aa);fbr(aa=O; aa(TM* 10)beep=0;elseif(hunii_value(HM* 10)(beep=0;else(beep=l;)void main(

5、)uiiit m=0;TM=25;設(shè)定溫度初始門(mén)限值:25 CHM=50;設(shè)定濕度初始門(mén)限值:50%YZ_Resh()y/更新液晶顯示緩存的門(mén)限值beep= 1;/關(guān)閉蜂鳴器LCD_Display(table3,table4)y/ 顯示系統(tǒng)本系統(tǒng)信息while(l)key_testO;/監(jiān)測(cè)按鍵狀態(tài),并根據(jù)對(duì)應(yīng)按鍵改變溫度濕度門(mén)限值,并顯示 if (m 100)循環(huán)計(jì)時(shí),3秒鐘 (m-H-;Delay_lms(30);else當(dāng)m=100時(shí)即為3秒時(shí)間到,則進(jìn)行溫度濕度數(shù)據(jù)采集(m=0;ReadTempAndHuiniO;/采集溫度濕度數(shù)據(jù)TempAiidHunu_Resh();/更新液晶顯示

6、緩存中的溫度濕度數(shù)值LCD_Display(tableO.tablel);/顯示當(dāng)前溫度濕度實(shí)測(cè)值以及門(mén)限值beep_control();/根據(jù)門(mén)限值以及實(shí)測(cè)值進(jìn)行警報(bào)狀態(tài)設(shè)置#iiiclude include dhtlLh”#define uchar unsigned char#define umt unsigned mtdefine NUMBER 20#define SIZE 5sbit dhtll=P2z 2;static uchar status;static uchar value_anaySIZE;/定義存放DHT11采集的5個(gè)字節(jié)的數(shù)組 mt temp_vah】e,humi_va

7、hie;static uchar ReadVhlue(void);extern void Delay_lms(uint ms)/秒延時(shí),延時(shí)時(shí)間為 ms 亳秒uiiit x,y;fbr (x=ms; x0 ;x)for(y=124;y0;y-);static void Delay_lOus(void)/!0 微秒延時(shí)uchar i;;i-;i-;i-;i-;i-;static uchar ReadValue(void)/ 讀一個(gè)字節(jié)數(shù)據(jù)的程序uchar count.value=04;statu s=OK;/設(shè)定標(biāo)志位正常狀態(tài)fbi(i=8;i0;i)value=l; 高位在前進(jìn)行接收數(shù)據(jù) co

8、unt=0;while(dhtl l=0&counti=NUNIBER)/若大于最大數(shù)值則出錯(cuò)(status=ERRORy/設(shè)定錯(cuò)誤標(biāo)志remni 0;/函數(shù)執(zhí)行過(guò)程發(fā)生錯(cuò)誤就退出函數(shù))Delay_10us0;/進(jìn)行 30us 的延時(shí)Delay_10usQ;Delay_10usQ;if(dhtll! =0)/再次檢測(cè)是否為高電平(value+;/進(jìn)入本函數(shù)說(shuō)明信號(hào)為1,則進(jìn)行自加while(dhtll !=0&countKNUMBER)(dhtll=l;if(count=NUMBER)(status=ERROR:return 0;)retuin(value)力返回讀取的結(jié)果extern uch

9、ar ReadTempAiidHumi(void)/讀取一次溫度濕度數(shù)據(jù),共5個(gè)字節(jié) uchar i=0.check_value=0.count=0;EA=0;dhtll=O;拉低數(shù)據(jù)線(xiàn)20msDelay_lms(20);dhtn=i;/w放數(shù)據(jù)線(xiàn),以用于檢測(cè)低電平應(yīng)答信號(hào)Delay_10us();/延時(shí) 40usDelay_10us();Delay_10us();Delay_10us();if(dhtl 1 !=0)檢測(cè)應(yīng)答信號(hào),應(yīng)答信號(hào)為低電平fEA=1;/無(wú)低電平。貝IJ報(bào)錯(cuò)return ERROR:else有應(yīng)答信號(hào)while(dht 11 =0&count4H-=NUNIBER)/若

10、計(jì)數(shù)大于最大計(jì)數(shù)值dhtll=l;EA=1;return ERROR/讀數(shù)錯(cuò)誤,退出函數(shù))count=0;dhtll=l;while(dhtl 1 !=0&count+=NUNIBER)(dhtll=l;EA=1;return ERROR:)for(i=0;iSIZE;i+)/開(kāi)始讀取濕度值、溫度值(value_airayi=ReadValueQ;/ 調(diào)用讀數(shù)據(jù)函數(shù)if(status=ERROR)(dhtll=l;EA=1;return ERROR;)if(i!=SIZE-l)(check_value+=value_arrayi;/進(jìn)行數(shù)據(jù)累加用于數(shù)據(jù)校驗(yàn))if(check_value=val

11、ue_airaySIZE-1 )/?校驗(yàn)數(shù)據(jù)正確,則輸出數(shù)據(jù)(擴(kuò)大溫度濕度10倍數(shù)值hunii_value=value_anayO * 10;temp_value=value_anay2 * 10;dhtll=l;EA=1;return OK;)elseEA=1;return ERROR;2、dhtll.c執(zhí)行文件include #include dhtll.h#define uchai unsigned chardefine umt unsigned mtdefine NUMBER 20define SIZE 5sbit dhtll=P2z 2;static uchar status;sta

12、tic uchar value_airaySIZE;/定義存放DHT11采集的5個(gè)字節(jié)的數(shù)組 mt temp_value ,hunn_value;static uchar ReadVhlue(void);extern void Delay_ 1 ms(uint ms)亳秒延時(shí),延時(shí)時(shí)間為ms亳秒uiiit x,y;fbr(x=ms; x0 ;x)for(y=124;y0;y-);static void Delayl0us(void)/l0 微秒延時(shí)uchar i;i-;1-;1-;1-;1-;static uchar ReadValue(void)/ 讀一個(gè)字節(jié)數(shù)據(jù)的程序uchar count

13、.value=04;statu s=OK;/設(shè)定標(biāo)志位正常狀態(tài)fbi(i=8;i0;i)value= 1 ;高位在前進(jìn)行接收數(shù)據(jù)count=0;while(dhtl l=0&countKNUMBER);if(count=NUNIBER)/若大于最大數(shù)值則出錯(cuò)statu s=ERROR;設(shè)定錯(cuò)誤標(biāo)志return 0;/函數(shù)執(zhí)行過(guò)程發(fā)生錯(cuò)誤就退出函數(shù))Delay_10usQ;/Z進(jìn)行 30us 的延時(shí)Delay_10usQ;Delay_10usQ;if(dhtll! =0)再次檢測(cè)是否為高電平(value+;/進(jìn)入本函數(shù)說(shuō)明信號(hào)為1,則進(jìn)行自加while(dhtll !=0&countT=NUMB

14、ER)(status=ERROR:return 0;)retuin(value)/返回讀取的結(jié)果extern uchar ReadTempAiidHumi(void)/讀取一次溫度濕度數(shù)據(jù),共5個(gè)字節(jié) uchar i=0.check_value=0.count=0;EA=0;dhtll=O;/拉低數(shù)據(jù)線(xiàn)20msDelay_lms(20);dhtll=l;釋放數(shù)據(jù)線(xiàn),以用于檢測(cè)低電平應(yīng)答信號(hào)Delay_10us();/延時(shí) 40usDelay_10us();Delay_10us();Delay_10us();if(dhtll!=O)檢測(cè)應(yīng)答信號(hào),應(yīng)答信號(hào)為低電平EA=1;/無(wú)低電平。則報(bào)錯(cuò)ret

15、urn ERROR:else 有應(yīng)答信號(hào)while(dhtll=0&count-=NUNIBER)/若計(jì)數(shù)大于最大計(jì)數(shù)值dhtll=l;EA=1;return ERROR/讀數(shù)錯(cuò)誤,退出函數(shù))count=0;dhtll=l;while(dhtl 1 !=0&count+=NUNIBER)(dhtll=l;EA=1;return ERROR:z)for(i=0:iSIZE;i+)/開(kāi)始讀取濕度值、溫度值(value_anayi=ReadValue();/ 調(diào)用讀數(shù)據(jù)函數(shù)if(status=ERROR)(dhtll=l;EA=1;return ERROR;)if(i!=SIZE-l)(check_value+=value_arrayi J!進(jìn)行數(shù)據(jù)累加用于數(shù)據(jù)校驗(yàn))if(check_value=value_anaySIZE-1 )/若校驗(yàn)數(shù)據(jù)正確,則輸出數(shù)據(jù) (擴(kuò)大溫度濕度10倍數(shù)值hunii_value=value_anayO *10:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論