數(shù)字溫度傳感器DS18B20的原理與應(yīng)用
4 DS18B20與單片機(jī)的典型接口設(shè)計(jì)
圖4以MCS-51系列單片機(jī)為例,畫出了DS18B20與微處理器的典型連接。圖4(a)中DS18B20采用寄生電源方式,其VDD和GND端均接地,圖4(b)中DS18B20采用外接電源方式,其VDD端用3V~5.5V電源供電。
a)寄生電源工作方式
(b)外接電源工作方式
圖4DS18B20與微處理器的典型連接圖
假設(shè)單片機(jī)系統(tǒng)所用的晶振頻率為12MHz,根據(jù)DS18B20的初始化時(shí)序、寫時(shí)序和讀時(shí)序,分別編寫了3個(gè)子程序:INIT為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開始。
DATEQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:CLRDAT
DJNZR2,INI11;主機(jī)發(fā)復(fù)位脈沖持續(xù)3μs×200=600μs
SETBDAT;主機(jī)釋放總線,口線改為輸入
MOVR2,#30
IN12:DJNZR2,INI12;DS18B20等待2μs×30=60μs
CLRC
ORLC,DAT;DS18B20數(shù)據(jù)線變低(存在脈沖)嗎?
JCINI10;DS18B20未準(zhǔn)備好,重新初始化
MOVR6,#80
INI13:ORLC,DAT
JCINI14;DS18B20數(shù)據(jù)線變高,初始化成功
DJNZR6,INI13;數(shù)據(jù)線低電平可持續(xù)3μs×80=240μs
SJMPINI10;初始化失敗,重來(lái)
INI14:MOVR2,#240
IN15:DJNZR2,INI15;DS18B20應(yīng)答最少2μs×240=480μs
RET
;------------------------
WRITE:CLREA
MOVR3,#8;循環(huán)8次,寫一個(gè)字節(jié)
WR11:SETBDAT
MOVR4,#8
RRCA;寫入位從A中移到CY
CLRDAT
WR12:DJNZR4,WR12
;等待16μs
MOVDAT,C;命令字按位依次送給DS18B20
MOVR4,#20
WR13:DJNZR4,WR13
;保證寫過(guò)程持續(xù)60μs
DJNZR3,WR11
;未送完一個(gè)字節(jié)繼續(xù)
SETBDAT
RET
評(píng)論