DHT11程式設計

2021-10-22 18:41:17 字數 2719 閱讀 3725

通訊協議:單匯流排

測量範圍: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);

void

dht11_outputmode

(void

)void

dht11_inputmode

(void

)

2.編寫

(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修改正確,外部晶振的值

在主函式部分需要注意的幾個點

建立乙個陣列用於儲存變數的值

uint8_t dht11_data[4]

=;if(

dht11_read_data

(dht_data)==0

)

如果出現沒有數值的情況,可以使用printf在校驗和那裡檢視是否輸出正確。

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