日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DHT11型温湿度传感器的使用(附源码)

發(fā)布時(shí)間:2024/5/15 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DHT11型温湿度传感器的使用(附源码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、產(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ù)部分作為拓展用,目前輸出為0

4.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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。