DHT11溫濕度感測器

2021-08-10 01:33:00 字數 2434 閱讀 7126

原理圖

資料傳輸

使用序列介面(單線雙向)

data 用於微處理器與 dht11之間的通訊和同步,採用單匯流排資料格式,一次

通訊時間4ms左右,資料分小數部分和整數部分,具體格式在下面說明,當前小數

部分用於以後擴充套件,現讀出為零.操作流程如下:

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

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

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

+8bit校驗和

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

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

使用者mcu傳送一次開始訊號後,dht11從低功耗模式轉換到高速模式,等待主

機開始訊號結束後,dht11傳送響應訊號,送出40bit的資料,並觸發一次訊號採集,

使用者可選擇讀取部分資料.從模式下,dht11接收到開始訊號觸發一次溫濕度採集,

如果沒有接收到主機傳送開始訊號,dht11不會主動進行溫濕度採集.採集資料後

轉換到低速模式。

通訊過程

匯流排空閒狀態為高電平,主機把匯流排拉低等待dht11響應,主機把匯流排拉低必

須大於18毫秒,保證dht11能檢測到起始訊號。 dht11接收到主機的開始訊號後,

等待主機開始訊號結束,然後傳送80us低電平響應訊號.主機傳送開始訊號結束

後,延時等待20-40us後, 讀取dht11的響應訊號,主機傳送開始訊號後,可以切換

到輸入模式,或者輸出高電平均可, 匯流排由上拉電阻拉高

匯流排為低電平,說明dht11傳送響應訊號,dht11傳送響應訊號後,再把匯流排拉

高80us,準備傳送資料,每一bit資料都以50us低電平時隙開始,高電平的長短定

了資料位是0還是1.格式見下面圖示.如果讀取響應訊號為高電平,則dht11沒有

響應,請檢查線路是否連線正常.當最後一bit資料傳送完畢後, dht11拉低匯流排

50us,隨後匯流排由上拉電阻拉高進入空閒狀態。

資料0表示

資料1表示

波特率

9600
問題

乙個引腳輸入模式的變換?

使用兩個不同的函式,乙個函式將引腳設定為輸入模式,乙個函式將引腳設定為輸出模式,注意不要忘了時鐘使能。

輸入和輸出初始化的時候不一樣,這是hal庫不同於標準庫的乙個地方

輸入/*configure gpio pin : pc1 */

gpio_initstruct.pin = gpio_pin_1;

gpio_initstruct.mode = gpio_mode_input;

gpio_initstruct.pull = gpio_pullup; //上拉模式

hal_gpio_init(gpioc, &gpio_initstruct);

輸出/*configure gpio pin : pc0 */

gpio_initstruct.pin = gpio_pin_0;

gpio_initstruct.mode = gpio_mode_output_pp; //輸出要由推挽輸出

gpio_initstruct.speed = gpio_speed_freq_low;

hal_gpio_init(gpioc, &gpio_initstruct);

如何將讀取到的0和1變成八位二進位制數?

主要步驟,左移和取和

delay_us(30);

temp = temp << 1;

temp |=1;

另乙個問題

讀到此時高低電平後,要等待相應的時間,判斷是0還是1,

剩下的問題就是輸出初始化了,只需要使用相應的延時函式,延時需要的時間即可。

最終結果

DHT11溫濕度感測器

dht11數字溫濕度感測器是一款含有已校準數碼訊號輸出的溫濕度復合感測器。它應用專用的數字模組採集技術和溫濕度感測技術,確保產品具有極高的可靠性與長期的穩定性。感測器包括乙個電阻式感溼元件和乙個ntc測溫元件,並與乙個8位微控制器相連線。因此該產品具有抗干擾能力強 價效比高等優點。dht11使用1 ...

DHT11溫濕度感測器

硬體連線 mcu通過一條資料線與dh11連線,mcu通過這條線發命令給dh11,dh11再通過這條線把資料傳送給mcu。溫濕度模組的核心就是 mcu發給dh11的命令格式和dh11返回的資料格式。首先mcu傳送乙個開始訊號s,這個開始訊號是乙個低脈衝,然後再拉高。等待dht11應答。然後,dh11拉...

溫濕度感測器之DHT11

起始訊號 時序圖 時序說明 mcu先拉低資料線至少18ms,然後拉高20 40us dht11將資料線拉低80us,然後拉高80us 程式 拉低20ms onewire 0 delay20ms 拉高,在50us內如果器件如果有應答會拉低 onewire 1 count 0 while 1 onewi...