通訊協議:單匯流排
測量範圍:20-90%,0-50℃
精度:±5%,±2℃
data 資料引腳用於微處理器與dht11之間的通訊和同步,採用單匯流排資料格式,一次通訊時間4ms左右,資料分小數部分和整數部分,具體格式在下面說明,當前小數部分用於以後擴充套件,現讀出為零。
操作流程如下:一次完整的資料傳輸為40bit,高位先出。
資料格式:8bit濕度整數資料+8bit濕度小數資料+8bi溫度整數資料+8bit溫度小數資料+8bit校驗和資料傳送正確時校驗和資料等於「8bit濕度整數資料+8bit濕度小數資料+8bi溫度整數資料+8bit溫度小數資料」所得結果的末8位。
使用者mcu傳送一次開始訊號後, dht11從低功耗模式轉換到高速模式,等待主機開始訊號結束後, dht11傳送響應訊號,送出40bit的資料,並觸發一次訊號採集,使用者可選擇讀取部分資料.從模式下, dht11接收到開始訊號觸發一次溫濕度採集,如果沒有接收到主機傳送開始訊號, dht11不會主動進行溫濕度採集.採集資料後轉換到低速模式。
通訊可以分為三個過程:
1.通訊的開始
2.通訊的內容
3.通訊的結束
時序圖
(1)pg9引腳變為輸出模式,pg9引腳變為低電平,持續至少18s,推薦20us,pg9引腳變為高電平,持續20us-40us,推薦30us
(2)pg9引腳變為輸入模式檢查dft11的響應訊號,低電平持續80us,高電平持續80us,也就是說dft11有響應,如果沒有響應,就一直為高電平。
數字0訊號表示
pg9引腳保持輸入模式,識別低電平50us,高電平26-28us,就為bit0數字1訊號表示
pg9引腳保持輸入模式,識別低電平50us,高電平70us,就為bit1通訊的結束
pg9引腳輸入模式識別低電平50us,pg9引腳輸出模式輸出高電平三、**
1.配置引腳的輸入輸出模式,記得在開啟時鐘rcc_ahb1periphclockcmd(rcc_ahb1periph_gpiog, enable);
2.編寫void
dht11_outputmode
(void
)void
dht11_inputmode
(void
)
(1)開始訊號函式,
(2)讀取乙個位元組函式,
(3)讀取所有資料函式,用乙個指標來儲存資料
開始訊號的函式
intdht11_start
(void
)//設定100,是為了證明已經超過80us時間,超時返回1
if(i >=
100)
return1;
//檢測是否有高電平
i=0;while
(i<
100)
//超時
if(i >=
100)
return1;
//沒有錯誤,正確的返回
return0;
}讀取乙個位元組的資料,並返回
uint8_t dht11_read_byte
(void)}
return d;
}下面把整個通訊過程進行組合:
uint32_t dht11_read_data
(uint8_t *pbuf)
//計算校驗和
check_sum = pbuf[0]
+pbuf[1]
+pbuf[2]
+pbuf[3]
;//檢驗和判斷
if(check_sum != pbuf[4]
)return1;
//不正確返回1
//結束部分
//pg9變為輸出模式
dht11_outputmode()
;//pg9引腳輸出高電平,這兩句可以不加,因為預設上拉電阻會自動上拉匯流排
pgout(9
)=1;
return0;
//正確返回0
}
注意需要將system_stm32f4xx.c中的pll_m 修改正確在主函式部分需要注意的幾個點以及stm32f4xx.h中的hse_value修改正確,外部晶振的值
如果出現沒有數值的情況,可以使用printf在校驗和那裡檢視是否輸出正確。建立乙個陣列用於儲存變數的值
uint8_t dht11_data[4]
=;if(
dht11_read_data
(dht_data)==0
)
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...
DHT11 模組的使用
dht11模組 資料線是單線雙向 一次完整的資料傳輸為40bit 高位先出 資料格式 8bit濕度整數資料 8bit濕度小數資料 8bi溫度整數資料 8bit溫度小數資料 8bit校驗和 資料傳送正確時校驗和資料等於 8bit濕度整數資料 8bit濕度小數資料 8bi溫度整數資料 8bit溫度小數資...
基於51的DHT11驅動
1.感測器效能說明 測溼範圍 20 90 測溫範圍 0 50c 測溫精度 2c 測溼精度 5 rh 2.介面說明 長度大於20m 時採用5k 上拉電阻 3.電源引腳 電源供電電壓 3 5.5v 電源引腳 vcc,gnd 可增加乙個 100nf 的電容用以去耦濾波 4.序列介面 單線雙向,採取但匯流排...