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