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