1、 DHT21與C8051F020的連接方式
如圖5所示為C8051F020與DHT21的通信形式按單總線方式連接,即它們之間讀時(shí)鐘信號(hào)與傳送數(shù)據(jù)都在DATA單根信號(hào)信號(hào)線上完成。當(dāng)傳感器與單片機(jī)的連接距離在20m范圍內(nèi)時(shí),需要并接5KW電阻,超過(guò)20m距離則根據(jù)實(shí)際情況選擇不同的電阻值。單片機(jī)每次對(duì)DHT21的讀取與寫入操作時(shí)間不宜超過(guò)5毫秒,否則容易丟失數(shù)據(jù)。
2、讀DHT21時(shí)序
C8051F020與DHT21之間的數(shù)據(jù)傳輸操作是雙向的,在本設(shè)計(jì)中規(guī)定每次傳送時(shí)間為5ms。每次發(fā)送的數(shù)據(jù)格式為40bit,且地址高位先被傳送,按從高到低的順序,40bit數(shù)據(jù)內(nèi)容為:(8bit濕度整數(shù)值.8bit濕度小數(shù)值)+(8bit溫度整數(shù)值.8bit溫度小數(shù)值)+8bit校驗(yàn)值。校驗(yàn)值是8bit濕度整數(shù)值、8bit濕度小數(shù)值、8bit溫度整數(shù)值、8bit溫度小數(shù)值這四個(gè)8bit數(shù)值之和的末8位值,用來(lái)校驗(yàn)數(shù)據(jù)傳送是否正確。在試驗(yàn)中也驗(yàn)證過(guò)這樣的數(shù)據(jù)格式,當(dāng)系統(tǒng)顯示出65.2%RH和35.1℃時(shí),我們可以在keil環(huán)境里查看到存儲(chǔ)DHT21溫濕度數(shù)據(jù)值的寄存器內(nèi)容為:0000 0010 1000 1100 0000 0001 0101 1111。如果溫度低于0℃時(shí),16bit溫度數(shù)據(jù)的位會(huì)置1。
如圖6所示,空閑狀態(tài)時(shí)總線為高電平,需要讀取DHT21的測(cè)量數(shù)據(jù)時(shí),C8051F020拉低總線至少500s以上的低電平,表示主機(jī)發(fā)出開(kāi)始信號(hào),延時(shí)20~40s后主機(jī)開(kāi)始從總線讀取DHT21的響應(yīng)信號(hào),如果讀取響應(yīng)信號(hào)為高電平,說(shuō)明DHT 11沒(méi)有響應(yīng)這時(shí)需要檢查線路是否連接正常。如果檢測(cè)到的是低電平則說(shuō)明DHT21正常發(fā)送了響應(yīng)信號(hào)。假設(shè)傳感器良好,此時(shí)DHT21應(yīng)該從低功耗模式轉(zhuǎn)換到高速模式,檢測(cè)到總線上的開(kāi)始信號(hào)時(shí),等待20~40s延時(shí)結(jié)束后,發(fā)送80s低電平的響應(yīng)信號(hào)。
DHT21發(fā)送完響應(yīng)信號(hào)后,將總線拉高80ms,準(zhǔn)備發(fā)送數(shù)據(jù)。每一位數(shù)據(jù)都以50ms低電平時(shí)隙開(kāi)始,以高電平的時(shí)長(zhǎng)來(lái)區(qū)分?jǐn)?shù)據(jù)位是0或1,26~28ms的高電平表示0,70ms的高電平表示1。當(dāng)最后一位數(shù)據(jù)傳送完畢后,DHT21拉低總線50ms,隨后總線由上拉電阻拉高進(jìn)入空閑狀態(tài)。圖7為讀“0”與“1’的時(shí)序圖。
http://m.huacao1996.com