DHT11型温湿度传感器的使用(附源码)
一、產(chǎn)品概述
DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長(zhǎng)期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲(chǔ)存在OTP內(nèi)存中,傳感器內(nèi)部在檢測(cè)信號(hào)的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡(jiǎn)易快捷。超小的體積、極低的功耗,信號(hào)傳輸距離可達(dá)20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場(chǎng)合的最佳選則。產(chǎn)品為?4?針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。
二、產(chǎn)品參數(shù)
2.1 原理圖
2.2 封裝信息
2.3 引腳說明
2.4 傳感器性能說明
2.5 典型應(yīng)用電路
三、傳感器工作時(shí)序圖說明
3.1 發(fā)送數(shù)據(jù)前的準(zhǔn)備
總線空閑狀態(tài)為高電平,主機(jī)把總線拉低等待DHT11響應(yīng),主機(jī)把總線拉低必須大于18毫秒,保證DHT11能檢測(cè)到起始信號(hào)。DHT11接收到主機(jī)的開始信號(hào)后,?等待主機(jī)開始信號(hào)結(jié)束,然后發(fā)送80us低電平響應(yīng)信號(hào).主機(jī)發(fā)送開始信號(hào)結(jié)束后,延時(shí)等待20-40us后, 讀取DHT11的響應(yīng)信號(hào),主機(jī)發(fā)送開始信號(hào)后,可以切換到輸入模式,或者輸出高電平均可,?總線由上拉電阻拉高。
3.2 通訊過程
一次完整的數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和。數(shù)據(jù)傳送正確時(shí)校驗(yàn)和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。
用戶MCU發(fā)送一次開始信號(hào)后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開始信號(hào)結(jié)束后,DHT11發(fā)送響應(yīng)信號(hào),送出40bit的數(shù)據(jù),并觸發(fā)一次信號(hào)采集,?用戶可選擇讀取部分?jǐn)?shù)據(jù).從模式下,DHT11接收到開始信號(hào)觸發(fā)一次溫濕度采集,?如果沒有接收到主機(jī)發(fā)送開始信號(hào),DHT11不會(huì)主動(dòng)進(jìn)行溫濕度采集.采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。
四、例程(例程均為自己編寫且通過驗(yàn)證成功)
/*所用單片機(jī)型號(hào)為STC89C52RC,晶振為11.0592MHz*,將測(cè)得的溫濕度用8段數(shù)碼管由低位向高位一位一位顯示/
4.1 頭文件、子函數(shù)聲明、變量聲明等
#include<reg51.h> #include<intrins.h> #define ERROR 0 #define OK 1typedef unsigned char unchar; typedef unsigned int unint;sbit Bus=P2^2;//數(shù)據(jù)總線unchar value[5];//儲(chǔ)存檢測(cè)值 unint check;void Delay10us(void); void Delay20ms(void); void Delay1s(void); unchar Read_Temp(); void show(int x);//上電需要越過1s的不穩(wěn)定期,測(cè)試間隔不能小于1s //讀數(shù)時(shí)高位先出 //校驗(yàn)和等于前四個(gè)字節(jié)相加的低八位 //溫濕度小數(shù)部分作為拓展用,目前輸出為04.2?溫濕度讀取函數(shù)
unchar Read_Temp() {unchar i,j=0,mask;Bus=0;//主機(jī)主動(dòng)拉低并持續(xù)20ms(超過18ms)Delay20ms();Bus=1;//主機(jī)再主動(dòng)拉高40us(20-40us)Delay10us();Delay10us();Delay10us();Delay10us();if(Bus==1)//如果總線沒有響應(yīng){return ERROR;}else //如果總線有響應(yīng){while(!Bus);//等待總線的低響應(yīng)(80us)while(Bus);//等待總線的高響應(yīng)(80us)while(j<5){mask=0x80;for(i=0;i<8;i++)//一次接收一個(gè)字節(jié){while(!Bus);//等待過一個(gè)低電平間隙Delay10us();//0保持26-28us的高電平,1保持70us的高電平,取40us的處的電平監(jiān)測(cè)Delay10us();Delay10us();Delay10us();if(Bus==0){value[j]&=(~mask); }else{value[j]|=mask;}mask>>=1;while(Bus);//等待該位傳送結(jié)束}j++;//繼續(xù)接受下一個(gè)字節(jié)}}check=(value[0]+value[2])&0x00ff;//計(jì)算校驗(yàn)和if(check==value[4])//如果校驗(yàn)和沒錯(cuò){return OK;}else{return ERROR;}}?4.3?數(shù)碼管顯示子函數(shù)
void show(int x) {while(x>0){switch(x%10){case 0:P0=0xc0;break; case 1:P0=0xf9;break;case 2:P0=0xa4;break;case 3:P0=0xb0;break;case 4:P0=0x99;break;case 5:P0=0x92;break;case 6:P0=0x82;break;case 7:P0=0xf8;break;case 8:P0=0x80;break;case 9:P0=0x90;break;}x=x/10;Delay1s();P0=0xff;Delay1s();} }4.4?各延時(shí)子函數(shù)
/*10us延時(shí)子函數(shù)*/ void Delay10us() {unchar i;i=2;while(--i); }/*20ms延時(shí)子函數(shù)*/ void Delay20ms(void) //誤差 -0.000000000005us {unsigned char a,b,c;for(c=1;c>0;c--)for(b=222;b>0;b--)for(a=40;a>0;a--); } /*1s延時(shí)子函數(shù)*/ void Delay1s(void) //誤差 -0.000000000227us {unsigned char a,b,c;for(c=13;c>0;c--)for(b=247;b>0;b--)for(a=142;a>0;a--);_nop_(); //if Keil,require use intrins.h }4.5?主函數(shù)
int main() {unchar result,temp,hum;Delay1s();//越過1s不穩(wěn)定期while(1){result=Read_Temp();if(result==OK){temp=value[2];hum=value[0];show(temp);Delay1s();show(hum);Delay1s();Delay1s();Delay1s();}else{continue;}}return 0; }?
左肩理想右肩擔(dān)當(dāng),君子不怨永遠(yuǎn)不會(huì)停下腳步!
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的DHT11型温湿度传感器的使用(附源码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 法大大再获6奖
- 下一篇: 【北交所周报】新赣江等多只准新股下调发行