1.感測器效能說明
測溼範圍:20%
~90%
測溫範圍:0~
50c
測溫精度:±2c 測溼精度: ±5%rh
2.介面說明
長度大於20m
時採用5k
上拉電阻
3.電源引腳
電源供電電壓:3
~5.5v
,電源引腳(
vcc,
gnd)可增加乙個
100nf
的電容用以去耦濾波
4.序列介面
單線雙向,採取但匯流排方式,一次通訊時間為4ms,
資料格式如下:
濕度整數部分+
濕度小數部分
+溫度整數部分
+溫度小數部分
+溫濕度校驗和
5.資料讀取時序分析
圖一 單匯流排讀取時序(完整過程)
圖2
單匯流排讀取時序(初始部分)
圖三 資料0
表示方法
圖四 資料1
表示方法
匯流排空閒狀態為高電平,匯流排把電平拉低等待dht11
響應,拉低時間必須大於
18ms
。dht11
接到主機起始訊號後,等待主機訊號結束,然後傳送
80us
電平表示響應。主機傳送起始訊號後延時
30-40us
,讀取響應訊號。(主機傳送起始訊號後可切換為輸入模式,高電平亦可)
7.基於51
驅動的原始碼分析
/*
* 基於51微控制器的dht11驅動程式
* 其中假定51微控制器的時鐘頻率為12m,並且單指令單週期,可得每個機器週期的時間為1/12m × 12 = 1us
* */
#include "dht11.h"
#include "reg52.h"
#define size 5 //設定陣列的大小
#define numble_50us 25 //設定延時的計數值
#define numble_40us 20
#define numble_80us 40
#define error -1
#define ok 0
sbit dht11 = p1^0; //dht11的單匯流排
unsigned int status; //dht11的資料讀取狀態
unsigned char humi_value,temp_value; //溫濕度值
unsigned char arry_value[size]; //定義訪問陣列
static void delay_ms(int x) //ms延時函式
return ;
}static void delay_10us() //10us延時函式
static unsigned char dht11_readvalue()
delay_10us;
delay_10us;
delay_10us;
if(dht11 != 0)}}
return value;
}static int dht11_readhum_temp(void)
else
dht11 = 1;
count = 0;
while(dht11 !=0 && count ++ < numble_80us); //從機拉高延時準備輸出
if(count >= numble_80us)
for(i = 0; i < size -1 ; i ++) //讀取溫濕度值
}if(arry_value[size -1] != checkvalue) //比較讀取結果
else
}return 0;
}
DHT11程式設計
通訊協議 單匯流排 測量範圍 20 90 0 50 精度 5 2 data 資料引腳用於微處理器與dht11之間的通訊和同步,採用單匯流排資料格式,一次通訊時間4ms左右,資料分小數部分和整數部分,具體格式在下面說明,當前小數部分用於以後擴充套件,現讀出為零。操作流程如下 一次完整的資料傳輸為40b...
DHT11 模組的使用
dht11模組 資料線是單線雙向 一次完整的資料傳輸為40bit 高位先出 資料格式 8bit濕度整數資料 8bit濕度小數資料 8bi溫度整數資料 8bit溫度小數資料 8bit校驗和 資料傳送正確時校驗和資料等於 8bit濕度整數資料 8bit濕度小數資料 8bi溫度整數資料 8bit溫度小數資...
DHT11除錯程式
一 主程式 while 1 二 模組除錯函式 include bsp dht11.h include delay.h include bsp 485.h 函式名 dht11 gpio config 描述 配置dht11用到的i o口 輸入 無 輸出 無 static void dht11 in in...