基于DHT11的溫度檢測_第1頁
基于DHT11的溫度檢測_第2頁
基于DHT11的溫度檢測_第3頁
基于DHT11的溫度檢測_第4頁
基于DHT11的溫度檢測_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西安郵電大學(xué)溫度測控與報警系統(tǒng)課程設(shè)計報告書系部名稱:自動化學(xué)院學(xué)生姓名:專業(yè)名稱:測控技術(shù)與儀器班級:1001班時間:2013年4月8日至2013年4月19日溫濕度測控與報警系統(tǒng)設(shè)計一、設(shè)計要求:以DHT11作為溫度傳感器,進行環(huán)境溫濕度測試。將結(jié)果顯示在數(shù)碼管或液晶屏上。同時,設(shè)定溫度上下限,當(dāng)溫度越限即報警。二、設(shè)計方案分析1、方案設(shè)計:顯示部分控制部分溫度收集部分報警部分2、背景知識介紹:(1)控制部分控制部分是采納單片機STC89C52。STC89C52簡介STC89C52是一種帶8K字節(jié)閃耀可編程可檫除只讀儲存器的低電壓,高性能COMOS8的微辦理器,俗稱單片機。該器件采納ATME

2、L搞密度非易失儲存器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。單片機總控制電路以以下圖復(fù)位操作復(fù)位操作有上電自動復(fù)位相按鍵手動復(fù)位兩種方式。上電自動復(fù)位是經(jīng)過外面復(fù)位電路的電容充電來實現(xiàn)的,其電路如圖所示。這佯,只要電源Vcc的上升時間不超出1ms,即能夠?qū)崿F(xiàn)自動上電復(fù)位,即接通電源就成了系統(tǒng)的復(fù)位初始化。按鍵手動復(fù)位有電平方式和脈沖方式兩種。此中,按鍵電平復(fù)位是通過使復(fù)位端經(jīng)電阻與Vcc電源接通而實現(xiàn)的,其電路如圖(b)所示;而按鍵脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來實現(xiàn)的,其電路以以下圖所示:(a)上電復(fù)位(b)按鍵電平復(fù)位(c)按鍵脈沖復(fù)位上述電路圖中的電阻、電

3、容參數(shù)適用于6MHz晶振,能保證復(fù)位信號高電平連續(xù)時間大于2個機器周期。本系統(tǒng)的復(fù)位電路采納上電復(fù)位方式。(2)丈量部分丈量部分我們采納DHT11溫度傳感器。1歸納:DHT11是廣州奧松有限公司生產(chǎn)的一款濕溫度一體化的數(shù)字傳感器。該傳感器包含一個電阻式測濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。經(jīng)過單片機等微辦理器簡單的電路連接即能夠及時的收集當(dāng)?shù)貪穸群蜏囟?。DHT11與單片機之間能采納簡單的單總線進行通信,不過需要一個I/O口。傳感器內(nèi)部濕度和溫度數(shù)據(jù)40Bit的數(shù)據(jù)一次性傳給單片機,數(shù)據(jù)采納校驗和方式進行校驗,有效的保證數(shù)據(jù)傳輸?shù)恼_性。DHT11功耗很低,5V電源電壓下

4、,工作平均最大電流0.5mA。性能指標(biāo)和特征以下:工作電壓范圍:工作電流:均勻0.5mA濕度丈量范圍:2090RH溫度丈量范圍:050濕度分辨率:1RH8位溫度分辨率:18位采樣周期:1S單總線結(jié)構(gòu)與TTL兼容(5V)2管腳擺列以下:3應(yīng)用電路連接說明DHT11數(shù)字濕溫度傳感器連接方法極為簡單。第一腳接電源正,第四腳接電源地端。數(shù)據(jù)端為第二腳。可直接接主機(單片機)的I/O口。為提升穩(wěn)固性,建議在數(shù)據(jù)端和電源正之間接一只4.7K的上拉電阻。第三腳為空腳,此管腳懸空不用。引腳說明:Vcc正電源Dout輸出NC空腳GND地4DHT11數(shù)據(jù)結(jié)構(gòu)DHT11數(shù)字濕溫度傳感器采納單總線數(shù)據(jù)格式。即,單個數(shù)

5、據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5Byte(40Bit)構(gòu)成。數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下邊說明。一次完好的數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和校驗和數(shù)據(jù)為前四個字節(jié)相加。傳感器數(shù)據(jù)輸出的是未編碼的二進制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間應(yīng)該分創(chuàng)辦理。假如,某次從傳感器中讀取以下5Byte數(shù)據(jù):byte4byte3byte2byte1byte00010110100000000000111000000000001001001整數(shù)小數(shù)整數(shù)小數(shù)校驗和濕度溫度校驗和由以

6、上數(shù)據(jù)即可獲取濕度和溫度的值,計算方法:humi(濕度)=byte4.byte3=45.0(RH)temp(溫度)=byte2.byte1=28.0()jiaoyan(校驗)=byte4+byte3+byte2+byte1=73(=humi+temp)(校驗正確)注意:DHT11一次通信時間最大3ms,主機連續(xù)采樣間隔建議不小于100ms。5DHT11的傳輸時序5.1DHT11開始發(fā)送數(shù)據(jù)流程主機發(fā)送開始信號后,延時等候20us-40us后讀取DH11T的回應(yīng)信號,讀取總線為低電平,說明DHT11發(fā)送響應(yīng)信號,DHT11發(fā)送響應(yīng)信號后,再把總線拉高,準(zhǔn)備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以低電平開始,

7、格式見下邊圖示。假如讀取響應(yīng)信號為高電平,則DHT11沒有響應(yīng),請檢查線路能否連接正常。5.2主機復(fù)位信號和DHT11響應(yīng)信號5.3數(shù)字0信號表示方法5.4數(shù)字1信號表示方法(3)顯示部分1602采納標(biāo)準(zhǔn)的16腳接口,此中:第1腳:VSS為地電源第2腳:VDD接5V正電源第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時能夠經(jīng)過一個10K的電位器調(diào)整對比度第4腳:RS為寄存器選擇,高電平常選擇數(shù)據(jù)寄存器、低電平常選擇指令寄存器。第5腳:RW為讀寫信號線,高電平常進行讀操作,低電平常進行寫操作。當(dāng)RS和RW共同為低電平常能夠?qū)懭胫?/p>

8、令也許顯示位置,當(dāng)RS為低電平RW為高電平常能夠讀忙信號,當(dāng)RS為高電平RW為低電平常能夠?qū)懭霐?shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變?yōu)榈碗娖匠?,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第1516腳:空腳1602液晶模塊內(nèi)部的字符發(fā)生儲存器(CGROM)已經(jīng)儲存了160個不一樣的點陣字符圖形,如表1所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比方大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把位置41H中的點陣字符圖形顯示出來,我們就能看到字母“A”1602液晶模塊內(nèi)部的控制器共有11條控制

9、指令,如表2所示它的讀寫操作、屏幕和光標(biāo)的操作都是經(jīng)過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到位置00H位置指令2:光標(biāo)復(fù)位,光標(biāo)返回到位置00H指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)挪動方向,高電平右移,低電平左移S:屏幕上所有文字能否左移也許右移。高電平表示有效,低電平則無效指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B:控制光標(biāo)能否閃耀,高電平閃耀,低電平不閃耀指令5:光標(biāo)或顯示移位S/C:高電平常挪動顯示的文字,低電平常挪動光標(biāo)指令6:功能設(shè)置

10、命令DL:高電平常為4位總線,低電平常為8位總線N:低電平常為單行顯示,高電平常雙行顯示F:低電平常顯示5x7的點陣字符,高電平常顯示5x10的點陣字符指令7:字符發(fā)生器RAM位置設(shè)置指令8:DDRAM位置設(shè)置指令9:讀忙信號和光標(biāo)位置BF:為忙標(biāo)記位,高電平表示忙,此時模塊不能夠接收命令也許數(shù)據(jù),假如為低電平表示不忙。指令10:寫數(shù)據(jù)指令11:讀數(shù)據(jù)三、硬件設(shè)計:四、軟件設(shè)計:(見附錄)五、測試數(shù)據(jù)及設(shè)計結(jié)果:六、調(diào)試中出現(xiàn)的錯誤及解決方法:用Proteus仿真軟件仿真的時候里面的器件符號里找不到DHT11,只好用DS18B20取代。在電路調(diào)試方面,我們組四個人先把每一個外頭電路的工作原理弄

11、懂,對它的工作電壓電流核實,而后我們在實驗板上把實質(zhì)的電路連接起來,加上實質(zhì)的電源,一個一個的調(diào)試,發(fā)現(xiàn)它的確能夠正常工作時在做下一步。:本次設(shè)計我主若是做軟件部分,采納的是STC89C52單片機,該單片機的穩(wěn)固性比較好,編程簡單,功能易實現(xiàn)。在本次設(shè)計的過程中,發(fā)現(xiàn)很多的問題,單片機課程設(shè)計要點就在于軟件算法的設(shè)計,需要有很奇妙的程序算法,固然以前寫過幾次程序,但我覺的寫好一個程序其實不是一件簡單的事。:經(jīng)過此次對數(shù)字溫度計的設(shè)計與制作,讓我認(rèn)識了設(shè)計電路的程序,也讓我認(rèn)識了關(guān)于數(shù)字溫度計的原理與設(shè)計理念。要設(shè)計一個電路總要先用仿真,仿真成功以后才實質(zhì)接線的。但是最后的成品卻不必定與仿真時完

12、好相同。由于,再實質(zhì)接線中有著各類各類的條件限制著。并且,在仿真中沒法成功的電路接法。在實質(zhì)中由于芯片自己的特征而能夠成功。因此,在設(shè)計時應(yīng)試慮二者的差異,從中找出最合適的設(shè)計方法。經(jīng)過此次學(xué)習(xí),讓我對各類電路都有了大概的認(rèn)識,因此說,坐而言不如立而行,關(guān)于這些電路還是應(yīng)該自己著手實質(zhì)操作才會有深刻理解。:我做的焊接的工作,從此次的課程設(shè)計中,我真真切正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實質(zhì),把我們所學(xué)的理論知識用到實質(zhì)中間,學(xué)習(xí)單機片機更是這樣,程序只有在常常的寫與讀的過程中才能提升,在焊接晶振電路時,沒有注意兩個電容的大小,以致程序燒進去卻不工作,此后自己的檢查后發(fā)現(xiàn)錯誤的根源,換了電容

13、,數(shù)碼管立馬顯示數(shù)據(jù)。那刻真的很快樂。附程序:#ifndef_TOU_H_#define_TOU_H_#include#include#include#include#include#defineuintunsignedint#defineucharunsignedchar/1602宏定義#defineLCD_SCREEN_ON0 x0C/顯示開#defineLCD_SCREEN_OFF0 x08/顯示關(guān)#defineLCD_CURSOR_ON0 x0A/顯示光標(biāo)#defineLCD_CURSOR_OFF0 x0c/無光標(biāo)#defineLCD_C_FLASH_ON0 x0f/有光標(biāo),光標(biāo)閃耀#

14、defineLCD_C_FLASH_OFF0 x0e/有光標(biāo),光標(biāo)不閃耀進入模式設(shè)置指令#defineLCD_AC_UP0 x06/新數(shù)據(jù)后光標(biāo)右移#defineLCD_AC_DOWN0 x04/新數(shù)據(jù)后光標(biāo)左移#defineLCD_S_MOVE_ON0 x05/畫面可平移#defineLCD_S_MOVE_OFF0 x04/畫面不行平移/設(shè)定顯示屏或光標(biāo)挪動方向指令#defineLCD_C_LEFT0 x10/光標(biāo)左移1格,且AC值減1#defineLCD_C_RIGHT0 x11/光標(biāo)右移1格,且AC值加1#defineLCD_CHAR_LEFT0 x18/顯示器上字符所有左移一格,但光標(biāo)

15、不動#defineLCD_CHAR_RIGHT0 x1C/顯示器上字符所有右移一格,但光標(biāo)不動*/#defineLCD_DATAP0/*1602端口定義/sbitBF=P07;/忙碌標(biāo)記位,將BF位定義為P0.7引腳/sbitRS=P24;/sbitRW=P23;/sbitEN=P22;sbitRS=P26;sbitRW=P24;sbitEN=P20;/*DHT11端口定義/sbitDHT11=P34;/sbitDHT11=P21;/sbitBUZZ=P17;sbitBUZZ=P23;/全局變量申明*/externfloatF16T,F16RH;/LCD函數(shù)申明*/voidInit_Lcd(v

16、oid);voidLCD_write_str(ucharX,ucharY,uchar*s);voidLCD_set_xy(ucharx,uchary);voidLCD_en_write(void);voidLCD_write_char(ucharcd,ucharab);voidLCD_byte(ucharabc);intLCD_value(ucharx,uchary,floatf);voidDelay_ms(uintn);voidDelay_us(ucharn);/DHT11函數(shù)申明/voidgetDHT11(void);#endif#includeucharU8T_data_H,U8T_da

17、ta_L,U8RH_data_H,U8RH_data_L,U8checkdata;floatF16T,F16RH;/floatF16T,F16RH;用于最后讀取的溫濕度數(shù)據(jù)/以下為延時函數(shù)voidDelay_ms(uintn)ucharj;while(n-)for(j=0;j125;j+);voidDelay_us(ucharn)/Nus延時函數(shù)精度4usn=n/2;while(-n);/讀取數(shù)據(jù)charCOM(void)chari,U8temp,U8comdata;for(i=0;i8;i+)while(!DHT11);/表示讀取的高電位延時大于20多us則讀取的是1不然讀取的是0Delay

18、_us(35);/經(jīng)過U8FLAG可判斷bit11顯示數(shù)據(jù)的脈長U8temp=0;if(DHT11)U8temp=1;while(DHT11);U8comdata=1;U8comdata|=U8temp;returnU8comdata;/-以下變量均為全局變量-/-溫度高8位=U8T_data_H-/-溫度低8位=U8T_data_L-/-濕度高8位=U8RH_data_H-/-濕度低8位=U8RH_data_L-/-校驗8位=U8checkdata-voidgetDHT11(void)GO1:DHT11=0;Delay_ms(20);/主機拉低18msDHT11=1;/總線由上拉電阻拉高主機

19、延時20usDelay_us(60);/主機設(shè)為輸入判斷從機響應(yīng)信號if(!DHT11)/判斷從機能否有低電平響應(yīng)信號如不響應(yīng)則跳出,響應(yīng)則向下運轉(zhuǎn)/T!while(!DHT11);/waitDHTgotohighwhile(DHT11);/數(shù)據(jù)接收狀態(tài)U8RH_data_H=COM();U8RH_data_L=COM();U8T_data_H=COM();U8T_data_L=COM();U8checkdata=COM();DHT11=1;/數(shù)據(jù)校驗if(U8T_data_H+U8T_data_L+U8RH_data_H+U8RH_data_L)!=U8checkdata)gotoGO1;F

20、16T=U8T_data_H+(float)U8T_data_L)/256;F16RH=U8RH_data_H+(float)U8RH_data_L)/256;/F16T=33;/F16=(U8T_data_H*10+(float)U8T_data_L*10/256)/10;#include/*名稱:LCD_write_char(ucharcd,ucharab)*功能:寫指令或數(shù)據(jù)當(dāng)寫ab時應(yīng)使cd=0當(dāng)cd不為0則寫cd且ab的賦值無效進口參數(shù):cd:指令內(nèi)容ab:數(shù)據(jù)內(nèi)容指令常量已在上邊定義但一般不用出口參數(shù):無*模范:LCD_write_char(0,f)*CD_set_xy*/void

21、LCD_write_char(ucharcd,ucharab)Delay_us(20);if(cd=0)RS=1;/RS=1,寫顯示內(nèi)容LCD_byte(ab);elseRS=0;/RS=0,寫命令LCD_byte(cd);/*名稱:Init_Lcd()主函數(shù)調(diào)用功能:Lcd初始化進口參數(shù):無出口參數(shù):無模范:在主函數(shù)中直接調(diào)用/voidInit_Lcd()LCD_write_char(0 x38,0);Delay_ms(1);LCD_write_char(0 x38,0);Delay_ms(1);LCD_write_char(0 x38,0);Delay_ms(1);LCD_write_ch

22、ar(0 x0c,0);Delay_ms(1);LCD_write_char(0 x06,0);Delay_ms(1);LCD_write_char(0 x0c,0);Delay_ms(1);LCD_write_char(0 x01,0);Delay_ms(1);/*名稱:LCD_write_str(ucharX,ucharY,uchar*s)主函數(shù)調(diào)用*功能:在指定位置寫一個字符串eg:Y=0,1,2,3,4,5,6,7,8,9,10.15。X=0,1。進口參數(shù):X:橫坐標(biāo)Y:縱坐標(biāo)*s:字符串首位置出口參數(shù):無模范:LCD_write_str(1,1,uchar*s)/voidLCD_write_str(ucharX,ucharY,uchar*s)LCD_write_char(0,);LCD_set_xy(X,Y);while(*s)/寫位置寫顯示字符LCD_write_char(0,*s);s+;/*名稱:LCD_set_xy(ucharx,uchary)/寫位置函數(shù)功能:指定一個位置進口參數(shù):X:橫坐標(biāo)Y:縱坐標(biāo)出口參數(shù):無模范:LCD_set_x

溫馨提示

  • 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

提交評論