基于單片機的溫濕度控制的畢業(yè)論文_第1頁
基于單片機的溫濕度控制的畢業(yè)論文_第2頁
基于單片機的溫濕度控制的畢業(yè)論文_第3頁
基于單片機的溫濕度控制的畢業(yè)論文_第4頁
基于單片機的溫濕度控制的畢業(yè)論文_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、傳感器性能說明參數(shù)條件MinTypMax單位濕度分辨率111%RH8Bit重復(fù)性±1%RH精度25℃±4%RH0-50℃±5%RH互換性可完全互換量程范圍0℃3090%RH25℃2090%RH50℃2080%RH響應(yīng)時間1/e(63%)25℃,1m/s空氣61015S遲滯±1%RH長期穩(wěn)定性典型值±1%RH/yr溫度分辨率111℃888Bit重復(fù)性±1℃精度±1±2℃量程范圍050℃響應(yīng)時間1/e(63%)630S

2、接口說明建議連接線長度短于20米時用5K上拉電阻,大于20米時根據(jù)實際情況使用合適的上拉電阻

3、電源引腳DHT11的供電電壓為3-5.5V。傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF的電容,用以去耦濾波。

4、串行接口(單線雙向)DATA用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當(dāng)前小數(shù)部分用于以后擴展,現(xiàn)讀出為零.操作流程如下:一次完整的數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束后,DHT11發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分?jǐn)?shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。1.

通訊過程如圖1所示

圖1總線空閑狀態(tài)為高電平,主機把總線拉低等待DHT11響應(yīng),主機把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結(jié)束,然后發(fā)送80us低電平響應(yīng)信號.主機發(fā)送開始信號結(jié)束后,延時等待20-40us后,讀取DHT11的響應(yīng)信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉高。

圖2

總線為低電平,說明DHT11發(fā)送響應(yīng)信號,DHT11發(fā)送響應(yīng)信號后,再把總線拉高80us,準(zhǔn)備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式見下面圖示.如果讀取響應(yīng)信號為高電平,則DHT11沒有響應(yīng),請檢查線路是否連接正常.當(dāng)最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。數(shù)字0信號表示方法如圖4所示

數(shù)字1信號表示方法.如圖5所示

5、測量分辨率測量分辨率分別為8bit(溫度)、8bit(濕度)。

6、電氣特性VDD=5V,T=25℃,除非特殊標(biāo)注參數(shù)條件mintypmax單位供電DC355.5V供電電流測量0.52.5mA平均0.21mA待機100150uA采樣周期秒1次

注:采樣周期間隔不得低于1秒鐘。

2.2.3復(fù)位電路設(shè)計STC89C51的復(fù)位輸入引腳RST為單片機提供了初始化的手段,可以使程序從指定處開始執(zhí)行,在STC89C51的時鐘電路工作后,只要RST引腳上出現(xiàn)超過兩個機器周期以上的高電平時,即可產(chǎn)生復(fù)位的操作,只要RST保持高電平,則STC89C51循環(huán)復(fù)位,只有當(dāng)RET由高電平變成低電平以后,STC89C51才從0000H地址開始執(zhí)行程序,本系統(tǒng)采用按鍵復(fù)位方式的復(fù)位電路。圖3-3復(fù)位電路2.2.4外部晶振時鐘電路設(shè)計STC89C51的時鐘可以由兩種方式產(chǎn)生,一種是內(nèi)部方式,利用芯片內(nèi)部的振蕩電路;另外一種為外部方式,本論文根據(jù)實際需要和簡便,采用內(nèi)部振蕩方式,MCS-51內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端,這個放大器與作為反饋元件的片外晶體或陶瓷諧振器一起構(gòu)成了一個自激振蕩器。STC89C51雖然有內(nèi)部振蕩電路,但要形成時鐘,必須外接元件,所以實際構(gòu)成的振蕩時鐘電路,外接晶振以及電容C1和C2構(gòu)成了并聯(lián)諧振電路接在放大器的反饋回路中,對接電容的值雖然沒有嚴(yán)格的要求,但電容的大小會影響振蕩頻率的高低,振蕩器的穩(wěn)定性,起振的快速性和溫度的穩(wěn)定性。晶振的頻率可在1.2MHZ~12MHZ之間任選,電容C1和C2的典型值在20pf~100pf之間選擇,由于本系統(tǒng)用到定時器,為了方便計算,采用了12MHZ的晶振,采用電容選擇30pf。圖3-4晶振電路的設(shè)計2.2.5鍵盤及讀數(shù)原理搶答器輸入信號由八個小按鍵控制與單片機的P1口連接,當(dāng)有按鍵按下的時候,就產(chǎn)生了有效地輸入信號。根據(jù)P1口按鍵輸入的高低電平,判斷是哪個按鍵按下,并執(zhí)行相應(yīng)的操作。鍵盤是人與微機打交道的主要設(shè)備,按鍵的讀取容易引起誤動作。可采用軟件去抖動的方法處理,軟件的觸點在閉合和斷開的時候會產(chǎn)生抖動,這時觸點的邏輯電平是不穩(wěn)定的,如不采取妥善處理的話,將引起按鍵命令錯誤或重復(fù)執(zhí)行,在這里采用軟件延時的方法來避開抖動。圖3-5鍵盤電路設(shè)計LED液晶顯示部分顯示器LCD1602特點與簡介液晶顯示器的有以下特點:1.液晶顯示屏是以若干個5X8或5X11點陣塊組成的顯示字符群。每個點陣塊為一個字符位,字符間距和行距都為一個點的寬度。2.主控制驅(qū)動電路為HD44780(HITACHI)及其他公司全兼容電路,如SED1278(SEIKOEPSON),KS0066(SAMSUNG),NJU6408(NERJAPANRADIO)。3.具有字符發(fā)生器ROM可顯示192種字符(160個5X7點陣字符和32個5X10點陣字符,見附錄3。4.具有64個字節(jié)的自定義字符RAM,可自定義8個5X8點陣字符或4個5X11點陣字符。5.具有80個字節(jié)的RAM。7.模塊結(jié)構(gòu)緊湊,輕巧,裝配容易。8.單+5V電源供電(寬溫型需要一個-7V的電源供電)。9.低功耗,長壽命,高可靠性。LCD1602的引腳功能說明如表2-8。二、顯示電路與單片機的連接就時鐘而言,通常采用LCD或LED顯示,對LED來說AT89C52本身設(shè)有專門的液晶驅(qū)動電路,LED結(jié)構(gòu)簡單,體積小,功耗低,響應(yīng)速度快,壽命長,可靠性也高,等優(yōu)點,而且亮度也高,價格也便宜,但是本時鐘設(shè)計要一個很直觀的顯示效果,LED就會除了8段的顯示,位選也要占用大量的資源,不易控制。如果選用LCD的話,顯示就比較直觀,占用的硬件資源就相對少些。而且對我們研究學(xué)習(xí),不在于便宜,是我們要學(xué)到更多的知識,本設(shè)計采用1602顯示,其與單片機的連接如圖2-9[4]。圖2-9單片機與LCD1602的連接圖表2-8LCD1602的引腳功能說明引腳號符號狀態(tài)功能1Vss電源地2Vdd+5V邏輯電源3V0液晶驅(qū)動電源4RS輸入寄存器1數(shù)據(jù),0命令5R/W輸入讀寫操作選擇1讀,0寫6E輸入是能信號7DB0三態(tài)數(shù)據(jù)總線8DB1三態(tài)數(shù)據(jù)總線9DB2三態(tài)數(shù)據(jù)總線10DB3三態(tài)數(shù)據(jù)總線11DB4三態(tài)數(shù)據(jù)總線12DB5三態(tài)數(shù)據(jù)總線13DB6三態(tài)數(shù)據(jù)總線14DB7三態(tài)數(shù)據(jù)總線15A輸入上兩行使能信號16K輸入下兩行使能信號指示燈的設(shè)計報警電路設(shè)計采用三極管的鎖存原理,當(dāng)P10為低電平時,三極管導(dǎo)通,蜂鳴器響三、軟件設(shè)計系統(tǒng)單片機代碼采用C語言編寫,以KeiluVision4為開發(fā)環(huán)境。系統(tǒng)軟件實現(xiàn)的功能:1)通過LCD顯示溫濕度值;2)比較監(jiān)測到的溫濕度值和報警設(shè)置值,發(fā)現(xiàn)超限則蜂鳴器報警提示;3)根據(jù)相應(yīng)的溫濕度值控制溫濕度調(diào)節(jié)系統(tǒng)運行。根據(jù)溫濕度監(jiān)控系統(tǒng)功能,系統(tǒng)軟件流程圖如圖8所示。3.1總程序流程圖:圖3.1主程序流程圖3.2溫濕度處理 圖3.2溫度控制處理流程圖3.3按鍵處理子程序圖3.3按鍵控制流程圖圖3.4設(shè)置按鍵流程圖參考文獻[1]丁元杰.《單片微機的原理與應(yīng)用》.機械工業(yè)出版社[2]童詩白,華成英,模擬電子技術(shù)基礎(chǔ),高等教育出版社[3]趙娜,趙剛,于珍珠等.基于51單片機的溫度測量系統(tǒng)[J].高等教育出版社[4]胡輝,王曉,戴永茂,陳光軍。MCS-51單片機原理及工程應(yīng)用[M]。國防工業(yè)出版社附錄1:原理圖附錄2:PCB圖附錄3:程序源代碼#include<reg52.h>#include"DHT11.C"#include"LCD1602.H"#defineucharunsignedchar#defineuintunsignedintsbitkey=P3^0;sbitjia=P3^1;sbitjian=P3^2;sbitbeep=P1^0;sbitled1=P1^1;sbitled2=P1^2;sbitled3=P1^3;sbitled4=P1^4;ucharflag;charht=50,lt=20,hh=50,lh=20;/************************************延時子程序 延時時間(xms*1)ms*************************************/voiddelayms(uintxms){ uintx,y; for(x=xms;x>0;x--) for(y=110;y>0;y--);}voidbeep1() //鬧鐘響{ beep=0; delayms(80); beep=1;}voidbeeps() //鬧鐘檢測{ if(U8T_data_H>ht) //大于上限溫度鬧鐘響 { led1=0; //燈亮 beep1(); } if(U8T_data_H<=ht) //小于上限溫度不響 { beep=1; led1=1; } if(U8T_data_H<lt) //小于下限溫度鬧鐘響 { led2=0; beep1(); } if(U8T_data_H>=lt) { beep=1; led2=1; } if(U8RH_data_H>hh) //大于上限濕度鬧鐘響 { led3=0; beep1(); } if(U8RH_data_H<=hh) { beep=1; led3=1; } if(U8RH_data_H<lh) //小于下限濕度鬧鐘響 { led4=0; beep1(); } if(U8RH_data_H>=lh) { beep=1; led4=1; }}voiddisplay(ucharadd,ucharnum) //重新賦值顯示{ ucharshi,ge; shi=num/10; ge=num%10; WRITE_LCD1602_COM(add); WRITE_LCD1602_DAT(LCD1602_Table[shi]); WRITE_LCD1602_DAT(LCD1602_Table[ge]);}voidkeys() //按鍵掃描設(shè)定限制值{ unsignedchari;if(key==0) //檢測key按下{ delayms(5); { if(key==0) { flag++; while(!key); if(flag==1) { WRITE_LCD1602_COM(0x01); //清屏 WRITE_LCD1602_COM(0x80); for(i=0;i<5;i++) //顯示溫度濕度提示界面 { WRITE_LCD1602_DAT(DIS1[i]); } WRITE_LCD1602_DAT(0xDF); WRITE_LCD1602_DAT(0x43); WRITE_LCD1602_COM(0x80+9); for(i=0;i<5;i++) { WRITE_LCD1602_DAT(DIS2[i]); } WRITE_LCD1602_DAT(0xDF); WRITE_LCD1602_DAT(0x43); WRITE_LCD1602_COM(0x80+0x40); for(i=0;i<15;i++) { WRITE_LCD1602_DAT(DIS3[i]); } display(0x80+3,ht); display(0x80+12,lt); display(0x80+0x40+3,hh); display(0x80+0x40+12,lh); } if(flag==2) { WRITE_LCD1602_COM(0x80+3); WRITE_LCD1602_COM(0x0f); } if(flag==3) { WRITE_LCD1602_COM(0x80+12); WRITE_LCD1602_COM(0x0f); } if(flag==4) { WRITE_LCD1602_COM(0x80+0x40+3); WRITE_LCD1602_COM(0x0f); } if(flag==5) { WRITE_LCD1602_COM(0x80+0x40+12); WRITE_LCD1602_COM(0x0f); } if(flag==6) //最后返回主頁面 { flag=0; WRITE_LCD1602_COM(0x01);//清屏 WRITE_LCD1602_COM(0x0c); } } } } if(flag!=0) { //按下jia增加 if(jia==0) { delayms(5); if(jia==0) { while(!jia); if(flag==2) { ht++; if(ht==50) ht=0; display(0x80+3,ht); WRITE_LCD1602_COM(0x0c); } if(flag==3) { lt++; if(lt==50) lt=0; display(0x80+12,lt); WRITE_LCD1602_COM(0x0c); } if(flag==4) { hh++; if(hh==50) hh=0; display(0x80+0x40+3,hh); WRITE_LCD1602_COM(0x0c); } if(flag==5) { lh++; if(lh==50) lh=0; display(0x80+0x40+12,lh); WRITE_LCD1602_COM(0x0c); } } } if(jian==0) { delayms(5); if(jian==0) { while(!jian); if(flag==2) { ht--; if(ht==-1) ht=50; display(0x80+3,ht); WRITE_LCD1602_COM(0x0c); } if(flag==3) { lt--; if(lt==-1) lt=50; display(0x80+12,lt); WRITE_LCD1602_COM(0x0c); } if(flag==4) { hh--; if(hh==-1) hh=50; display(0x80+0x40+3,hh); WRITE_LCD1602_COM(0x0c); } if(flag==5) { lh--; if(lh==-1) lh=50; display(0x80+0x40+12,lh); WRITE_LCD1602_COM(0x0c); } } } }}voidMain_display() //提取dht11的值并顯示{ WRITE_LCD1602_COM(0x80+12); WRITE_LCD1602_DAT(LCD1602_Table[U8T_data_H/10]); WRITE_LCD1602_DAT(LCD1602_Table[U8T_data_H%10]); WRITE_LCD1602_DAT(0xDF); WRITE_LCD1602_DAT(0x43); WRITE_LCD1602_COM(0x80+0x40+11); WRITE_LCD1602_DAT(LCD1602_Table[U8RH_data_H/10]); WRITE_LCD1602_DAT(LCD1602_Table[U8RH_data_H%10]); WRITE_LCD1602_DAT(0x25); WRITE_LCD1602_DAT(0x52); WRITE_LCD1602_DAT(0x48); }voidmain(){ unsignedchari; init_1602(); RH();beep=1; led1=1; led2=1; led3=1; led4=1; flag=0; while(1) { keys(); //按鍵檢測 if(flag==0) { RH(); WRITE_LCD1602_COM(0x80); //顯示初始界面 for(i=0;i<12;i++) WRITE_LCD1602_DAT(DIS_TEM[i]); WRITE_LCD1602_COM(0x80+0x40); for(i=0;i<9;i++) WRITE_LCD1602_DAT(DIS_HUM[i]); Main_display(); delayms(100); beeps(); } } } DHT程序部分typedefunsignedcharU8;typedefunsignedintU16;sbitDHT1_IO=P2^0;U8U8FLAG,U8temp;U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8U8comdata;voidDelay(U16z){ U8x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidDelay_10us(void){U8i;i--;i--;i--;i--;i--;i--;}voidCOM(void){U8i;for(i=0;i<8;i++) { U8FLAG=2; while((!DHT1_IO)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(DHT1_IO)U8temp=1; U8FLAG=2; while((DHT1_IO)&&U8FLAG++); if(U8FLAG==1)break; U8comdata<<=1; U8comdata|=U8temp;} }voidRH(void){staticU16dat1;staticU16dat2;DHT1_IO=0;Delay(34);DHT1_IO=1;Delay_10us();Delay_10us();Delay_10us();Delay_10us();DHT1_IO=1; if(!DHT1_IO){ U8FLAG=2; while((!DHT1_IO)&&U8FLAG++); U8FLAG=2; while((DHT1_IO)&&U8FLAG++); COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; DHT1_IO=1; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; dat1=dat1*4+U

溫馨提示

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

評論

0/150

提交評論