DHT11 模組的使用

2021-10-17 19:56:47 字數 1647 閱讀 9843

dht11模組  資料線是單線雙向

一次完整的資料傳輸為40bit 高位先出

資料格式:8bit濕度整數資料+8bit濕度小數資料

+8bi溫度整數資料+8bit溫度小數資料

+8bit校驗和

資料傳送正確時校驗和資料等於「8bit濕度整數資料+8bit濕度小數資料

+8bi溫度整數資料+8bit溫度小數資料」所得結果的末8位。

1.使用推挽模式進行匯流排的輸出

使用stm32將匯流排拉低等待dht11響應,拉低時間大於18ms

保證檢測到起始訊號

2.使用stm32將匯流排拉高 延時20us~40us 這裡選擇30us

讀取dht11的響應訊號

3.切換到輸入模式

3.0 檢測dht11產生低電平

即使用讀取dht11的輸入引腳,當讀取到低電平的時候進入

3.1 dht11等待主機stm32的開始訊號結束完成後傳送乙個80us的低電平訊號

while(macdht11_dout_in() ==reset);

檢測引腳的輸入訊號,當輸入訊號不是低電平的時候,即響應訊號結束的時候,跳出while

3.2 dht11傳送響應訊號後,把匯流排拉高80us,準備傳送資料

while(macdht11_dout_in() == set);

檢測引腳的輸入訊號,當輸入訊號不是高電平的時候,即標誌訊號結束的時候,跳出while迴圈,準備傳送資料

進行傳送資料,stm32接收傳送過來的資料

typedef

struct

dht11_data_typedef;

dht11的資料是msb先行 高位先行

static uint8_t dht11_readbyte (

void

)else

}return temp;

}

1.使用上面的函式讀取5次將dht11裡面的內容讀取出來

2.轉換成輸出模式,將匯流排拉高

3.檢查讀取到的資訊是不是正確資訊

if(dht11_data->check_sum == dht11_data->humi_int + dht11_data->humi_deci + dht11_data->temp_int+ dht11_data->temp_deci)

加入校驗和等於溫度的整數小數和濕度的整數和小數的和則返回success

uint8_t dht11_read_tempandhumidity

(dht11_data_typedef *dht11_data)

else

return error;

}

DHT11程式設計

通訊協議 單匯流排 測量範圍 20 90 0 50 精度 5 2 data 資料引腳用於微處理器與dht11之間的通訊和同步,採用單匯流排資料格式,一次通訊時間4ms左右,資料分小數部分和整數部分,具體格式在下面說明,當前小數部分用於以後擴充套件,現讀出為零。操作流程如下 一次完整的資料傳輸為40b...

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...

基於51的DHT11驅動

1.感測器效能說明 測溼範圍 20 90 測溫範圍 0 50c 測溫精度 2c 測溼精度 5 rh 2.介面說明 長度大於20m 時採用5k 上拉電阻 3.電源引腳 電源供電電壓 3 5.5v 電源引腳 vcc,gnd 可增加乙個 100nf 的電容用以去耦濾波 4.序列介面 單線雙向,採取但匯流排...