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.序列介面 單線雙向,採取但匯流排...