【藍橋杯單片機11】單總線溫度傳感器DS18B20的基本操做框架
www.xmf393.com / 廣東職業技術學院 歐浩源函數
單總線數字溫度傳感器DS18B20幾乎成了各種單片機甚至ARM實驗板的標配模塊來,在藍橋杯的往屆省賽和國賽中,這個內容考查的頻率也至關的高。無論是單片機學習仍是藍橋杯備賽,都應掌握DS18B20的基本操做,也就是把傳感器的數據讀出來。學習
一、關於DS18B20你應該知道
在藍橋杯「單片機設計與開發」賽項中,會提供一個關於DS18B20的庫文件,裏面有傳感器復位、寫字節和讀字節三個函數。因此,你不必定要把單總線的時序搞清楚,但你必定要把DS18B20的基本操做流程弄明白。
DS18B20單線通訊功能是分時完成的,它有嚴格的時隙概念,若是出現序列混亂,器件將不響應主機,所以讀寫時序很重要。
經過單線總線端口訪問DS18B20的協議以下:
步驟1: 復位初始化
步驟2: ROM操做指令
步驟3: DS18B20功能指令
DS18B20的高速暫存存儲器由9個字節組成,當溫度轉換命令發佈後,經轉換所得的溫度值以二字節補碼形式存放在高速暫存存儲器的第0和第1個字節。在上電狀態下,DS18B20默認的精度爲12位。啓動後它保持低功耗等待狀態。當須要執行溫度測量和AD轉換時,總線控制器必須發出溫度轉換命令。在那以後,產生的溫度數據以兩個字節的形式被存儲到高速暫存器的溫度寄存器中,DS18B20繼續保持等待狀態。單片機可經過單線接口能夠讀到該數據,讀取時低位在前,高位在後。spa
二、三個重要的DS18B20指令
<1> CCH:跳過ROM指令,忽略64位ROM地址,直接向DS18B20發起各類溫度轉換指令。
<2> 44H:溫度轉換指令,啓動DS18B20進行溫度轉換,轉換時間最長爲500ms(典型值爲200ms),結果保存在高速RAM中。
<3> BEH:讀暫存器指令,讀取高速暫存存儲器9個字節的內容。設計
三、讀取一次DS18B20溫度的基本操做
<1> 主機對DS18B20進行復位初始化。調試
<2> 主機向DS18B20寫0xCC命令,跳過ROM。blog
<3> 主機向DS18B20寫0x44命令,開始進行溫度轉換。接口
<4> 等待溫度轉換完成。資源
<5> 主機對DS18B20進行復位初始化。開發
<6> 主機向DS18B20寫0xCC命令,跳過ROM。
<7> 主機向DS18B20寫0xBE命令,依次讀取DS18B20發出的從第0一第8,共九個字節的數據。若是隻想讀取溫度數據,那在讀完第0和第1個數據後就再也不理會後面DS18B20發出的數據便可,或者經過DS18B20復位,中止數據的輸出。
具體的代碼實現,能夠參考一下框架:
四、單元實訓題目
注意:若是你利用大賽提供的DS18B20的庫文件,也就是onewire.c和onewire.h,進行程序設計的時候,沒能正確的讀出溫度傳感器的數值,對庫文件中代碼的時序進行適當的調整便可。至於怎麼調整,調整多少,要實際調試。
【注】:更多的資源和資料、MM模式源碼下載、IO模式源碼資源,詳見「小蜜蜂筆記」如下連接: