
DS18B20 有三只引腳,VCC,DQ ,和 VDD。
而 HJ-2G 板子上,采用了外部供電的鏈接方式,而總線必須鏈接上拉電阻。這一目的告 訴我們,一線總線在空置狀態(tài)時(shí),都是一直處于高電平。




要求出正數(shù)的十進(jìn)制值,必須將讀取到的 LSB 字節(jié),MSB 字節(jié)進(jìn)行整合處理,然后乘 以 0.0625 即可。
Eg:假設(shè)從,字節(jié) 0 讀取到 0xD0 賦值于 Temp1,而字節(jié) 1 讀取到 0x07 賦值于 Temp2, 然后求出十進(jìn)制值。
在這里我們遇見了一個(gè)問題,就是如何求出負(fù)數(shù)的值呢?很遺憾的,單片機(jī)不像人腦那 樣會心算,我們必須判斷 BIT11~15 是否是 1,然后人為置一負(fù)數(shù)標(biāo)志。
Eg. 假設(shè)從,字節(jié) 0 讀取到 0x90 賦值于 Temp1,而字節(jié) 1 讀取到 0xFC 賦值于 Temp2, 然后求出該值是不是負(fù)數(shù),和轉(zhuǎn)換成十進(jìn)制值。
繼續(xù)繼續(xù),以上我們是求出沒有小數(shù)點(diǎn)的正數(shù)。如果我要求出小數(shù)點(diǎn)的值的話,那么我 應(yīng)該這樣做。
Eg:假設(shè)從,字節(jié) 0 讀取到 0xA2 賦值于 Temp1,而字節(jié) 1 讀取到 0x00 賦值于 Temp2, 然后求出十進(jìn)制值,要求連同小數(shù)點(diǎn)也求出。
如以上的例題,我們可以 先將 0.0625 乘以 10,然后再乘以整合后的 Temperature 變量 , 就可以求出后面 一個(gè)小數(shù)點(diǎn)的值(求出更多的小數(shù) 點(diǎn),方法都是以此類推 )。得出的結(jié) 果是 101,然后再利用簡單的算法,求出每一位的值。
求出負(fù)數(shù)的思路也一樣,只不過多出人為置一負(fù)數(shù)標(biāo)志,求反補(bǔ)一的動作而已。自己發(fā) 揮想象力吧。

BIT7 出廠的時(shí)候就已經(jīng)設(shè)置為 0,用戶不建議去更改。而 R1 與 R0 位組合了四個(gè)不同 的轉(zhuǎn)換精度, 00 為 9 位轉(zhuǎn)換精度而轉(zhuǎn)換時(shí)間是 93.75ms,01 為 10 位轉(zhuǎn)換精度而轉(zhuǎn)換 時(shí) 間是 187.5ms,10 為 11 位轉(zhuǎn)換精度而轉(zhuǎn)換時(shí)間是 375ms,11 為 12 位轉(zhuǎn)換精度而轉(zhuǎn)換時(shí) 間是 750ms(默認(rèn))。該寄存器還是留默認(rèn)的好,畢竟轉(zhuǎn)換精度表示了轉(zhuǎn)換的質(zhì)量。
補(bǔ)充一下 。一般上我們都 是使用單點(diǎn),也就 是說單線總線上 僅有一個(gè) DS18B20 存在而 已。所以 我們無需刻意讀 取 ROM里邊的序 列號來,然后匹 配 那個(gè) DS18B20?而是更 直接的,跳過 ROM 指令,然后直接執(zhí)行 DS18B20 功能指令。
ROM 指令,也就是訪問,搜索,匹配,DS18B20 個(gè)別的 64 位序列號的動作。在單點(diǎn)情 況下,可以直接跳過 ROM 指令。而跳過 ROM 指令的字節(jié)是 0xCC。
DS18B20 功能指令有很多種,我就不一一的介紹了 ,數(shù)據(jù)手冊里有更詳細(xì)的介紹。這里 僅列出比較常用的幾個(gè) DS18B20功能指令。


DDRA|=BIT(DQ); //DQ 為輸 出狀態(tài) PORTA&=~BIT(DQ); //輸出 低電平Delay_1us (500); //延遲 500 微妙 PORTA|=BIT(DQ); //示范 總線 Delay_1us(60); //延遲 60 微妙 DDRA&=~BIT(DQ); //DQ 位輸 出狀態(tài)

DS18B20 寫邏 輯 0 的步 驟如下 :
DS18B20 讀邏 輯 0 的步 驟如下 :14.10簡單歸納 實(shí)驗(yàn)開始之前,簡單的歸納一些重點(diǎn)。單線總線高電平為閑置狀態(tài)。單片機(jī)訪問 DS18B20 必須遵守, DS18B20 復(fù)位-->執(zhí)行 ROM 指令-->執(zhí)行 DS18B20 功能指令。而在單點(diǎn)上, 可以直接跳過 ROM 指令。DS18B20 的轉(zhuǎn)換精度默認(rèn)為 12 位,而分辨率是 0.0625。

DS18B20 接口 ATMega 16 對應(yīng)引腳實(shí)驗(yàn)的要求是以 DS18B20 默認(rèn)的配置,亦即 12 位的轉(zhuǎn)換精度。然而輸出的結(jié)果為兩個(gè) 小數(shù)點(diǎn) xx.xx。HJ-2G 板子上設(shè)計(jì)得DS18B20 的接口和典型,沒有什么特別需要注意的。 而 DS18B20 DQ 引腳對應(yīng)的鏈接是 PA5。
以上的程式只有一個(gè)注意點(diǎn)就是 :DS18B20 的轉(zhuǎn)啟動換頻率不要超過 750ms。其他的沒 有什么需要特別注意了。

50 KB, 下載次數(shù): 61, 下載積分: 黑幣 -5
z
340.54 KB, 下載次數(shù): 124, 下載積分: 黑幣 -5
z


| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |