ds18b20與微控制器採用單匯流排連線方式,比賽中使用到的檔案為提供的「onewire.c」
程式設計步驟:
(1)初始化
(2)傳送rom操作命令,包括:read rom(讀rom) [33h]、match rom(匹配rom) [55h]、skip rom(跳過rom] [cch]、search rom(搜尋rom) [f0h]、alarm search(告警搜尋) [ech]
(3)傳送儲存器操作命令,包括:write scratchpad(寫暫存儲存器) [4eh]、read scratchpad(讀暫存儲存器) [beh]、copy scratchpad(複製暫存儲存器) [48h]、convert temperature(溫度變換) [44h]、recall eprom(重新調出) [b8h]、read power supply(讀電源) [b4h]
(4)儲存器或適當延時
p.s:使用iap15時應對onewire.c中的void delay_onewire(unsigned int t)做一下改變:
//單匯流排延時函式
void delay_onewire(unsigned int t)
}
將之前的延時時間乘以12,因為使用的iap15的機器週期為振盪週期,若不修改則無法讀數。
附:測量溫度的**
uchar low,high;
int gettemper()
該函式返回的是在ds18b20溫度暫存器中的精確資料嗎,若要選擇返回整數值或浮點值,則需要資料處理。
延時的2數值(200)不可以改變。
附:資料處理函式
float get_f_temp()
注意:當讀出的溫度是負數時,gettemper()返回的最高位為1,此時需要將返回的數值取反再加一
,最後乘以12位的精確度0.0625. 51微控制器ds18b20
溫度感測器是比較簡單的外設之一,學習51微控制器都會學習ds18b20來學習51的ad轉換。ds18b20是通過iic匯流排來進行通行的,屬於比較簡單的模組之一,這裡貼出ds18b20的驅動程式,呼叫時只要直接讀取對應位址的資料即可。include temp.h void delay1ms uint...
藍橋杯微控制器 2 系統掌握ds18b20
有需要複習基礎模組的同學可以見我的這篇部落格 藍橋杯微控制器 1 一帖複習全模組 基礎模組 後面將陸續寫其他各模組的詳細分析,歡迎關注!具體掌握一款晶元的驅動過程和使用方法才能夠真正掌握它。首先,在開始工作前我們應該對硬體進行初始化 圖中存在三種線 從上到下,依次 1.master拉低 2.ds18...
DS18B20與微控制器應用
ds18b20與微控制器應用 2012年01月19日 ds18b20溫度感測器和7個led數碼顯示程式 原創程式,請支援 org 0000h led數碼管採用動態,p0口接八個資料口,p2.0 p2.2採用3 8解碼器控制七個led tx bit p2.3 ds18b20資料口接p2.3 flag ...