一, DS18B20的初始化
(1) 先將數(shù)據(jù)線置高電平“1”。
(2) 延時(該時間要求的不是很嚴(yán)格,但是盡可能的短一點)
(3) 數(shù)據(jù)線拉到低電平“0”。
(4) 延時750微秒(該時間的時間范圍可以從480到960微秒)。
(5) 數(shù)據(jù)線拉到高電平“1”。
(6) 延時等待(如果初始化成功則在15到60毫秒時間之內(nèi)產(chǎn)生一個由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會使程序進(jìn)入死循環(huán),所以要進(jìn)行超時控制)。
(7) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。
(8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。
二, DS18B20的寫操作
(1) 數(shù)據(jù)線先置低電平“0”。
(2) 延時確定的時間為15微秒。
(3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。
(4) 延時時間為45微秒。
(5) 將數(shù)據(jù)線拉到高電平。
(6) 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。
(7) 最后將數(shù)據(jù)線拉高。
三, DS18B20的讀操作
(1)將數(shù)據(jù)線拉高“1”。
(2)延時2微秒。
(3)將數(shù)據(jù)線拉低“0”。
(4)延時15微秒。
(5)將數(shù)據(jù)線拉高“1”。
(6)延時15微秒。
(7)讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。
(8)延時30微秒。