菜鳥的ds18b20總結

2021-10-23 22:39:07 字數 1893 閱讀 8931

之前玩了一下ds18b20,但一直沒有總結,忽然有種總結的衝動,所以就寫了這些。

以下的這些只是我個人對部分文件的理解,水平不夠,難免會有誤,請各位指正,

一、 初始化,如圖一:

資料線拉低至少480us後再將其拉高,大約等待15~60us,就會收到60~240us的低電平的存在脈衝,其後資料線會恢復被拉高狀態,在資料線被拉高到初始化結束經過的時間至少為480us,以下是我根據對初始化時序寫的子程式,用的是51:

#include

#define uchar unsigned char

#define uint unsigned int

void delay1(uint z)//延時子程式

void reset()

其實這個子程式並沒考慮到干擾,因為假設在初始化過程有低電平脈衝的干擾,那麼即使ds18b20沒有傳送低電平,也會認為初始化成功。

二、 寫時隙

(1)寫1時隙,如上右圖:主控器將資料線拉低至少1us,並在拉低後的15us內再將其拉高,整個過程大於60us,子程式如下

uchar bit1_write18b20()

(2)寫0時隙,如上左圖,主控器將資料線拉低至少60us後將其拉高,子程式如下:

uchar bit0_write18b20()

三、 讀時隙

我發現有很多人被時序圖的陰影部分嚇到了,其實這表示資料線的在這個時間段狀態不確定,整個時序圖的意思是主控制器將資料線拉高至少1us後,再將其拉低,在拉低後15us內的資料有效,整個時隙時間要大於60us.

雖然pdf中,用兩個時序圖分別表示讀0時隙和讀1時隙,實際上讀一位數的子程式只要乙個,資料線拉低後1us,將資料線拉高,在15us內儲存資料,再延時,使其滿足總時間大於60us,下面給個例子:

uchar bit_read18b20(void)

四、 我寫的寫、讀乙個位元組數子程式:

/*寫一位元組數*/

void byte_write18b20(uint w)

}/*讀一位元組*/

uchar byte_read18b20(void)

return(value);

}五、溫度轉換和顯示那些子程式有很多,在這裡就不重複了,接下來再寫幾個其他的子程式(單個ds18b20):

(1)/*電源模式讀取*/

unsigned int readpower( )

(2)/*將快速暫存暫存器的th,tl和配置暫存器複製到eeprom*/

void copyram()

說明:這個指令與write scratchpad(4eh)指令結合可以將所要設定的溫度上下限值寫入ds18b20中的eeprom中,實現斷電後所設定的數值仍然儲存,可已通過這種方式做乙個可報警的溫度計,下面給個例子:

void send(uchar th,uchartl)//將要寫的溫度上下限值存入eeprom

(3)讀單個ds18b20的序列號子程式

uint a[7];

uint b[7];

void num_read()

}後記:

對於ds18b20,有一點遺憾的是alarm search(ech)指令並沒有試出來,據說是當ds18b20的溫度超過所設定的溫度範圍時,會返回唯一的id即序列號,但無論我怎麼弄,讀取的數值各個位都是一,也有可能是我只用乙個ds18b20的原因,過一段時間我會用幾個ds18b20再測試一次。

我覺得作為乙個微控制器菜鳥,只是修改別人的程式是不夠的,還要自己去學習怎樣寫程式去測試,現成的程式只能在必要的時候參考,還要在菜鳥階段,把必要的閱讀文件的能力掌握,不能依靠中文文件,在玩ds18b20時對這點體會很深,ds18b20的很多中文文件都有錯,例如在我看的乙份中文文件中有說ds18b20中有eeram,事實上eeram是ds1820帶有的,而ds18b20帶有的eeprom.。

qqiummo

2023年12月23日

我寫DS18B20總結

unsigned int n for n 0 n void chushihua dq 0 delay 600 送480us脈衝 根據時序 dq 1 delay 35 大約60us左右 這樣就完成了ds18b20的初始化工作。初始化之後要向資料埠dq寫資料,寫0或者是1 當主機匯流排從高電平拉到低電平...

unsp C編寫的DS18B20驅動

分享 u nsp c編寫的ds18b20驅動 本人寫的乙個ds18b20的驅動程式,這是我寫的第乙個時序程式,厚臉皮地拿出來與大家 分享 希望大家支援。不足之處還望大家不吝賜教。謝謝!工程名稱 ds18b20 功能描述 溫度感測器 涉及的庫 組成檔案 硬體連線 ioa15 s18b20的dq腳 ed...

基於DS18B20的溫控系統實習報告

河南農業大學 智慧型儀器設計實習 設計說明書 題目 基於ds18b20的溫控系統 學院理學院 專業 電子資訊科學與技術 班級07電科4班 學號0708101099 姓名徐亞利 指導教師 成績時間 2010 年 11 月 29 日至 2010 年 12 月 13 日 智慧型儀器設計實習 設計任務書 題...