數字溫度傳感器DS18B20的原理與應用
;------------------------
READ:CLREA
MOVR6,#8;循環8次,讀一個字節
RD11:CLRDAT
MOVR4,#4
NOP;低電平持續2μs
SETBDAT;口線設為輸入
RD12:DJNZR4,RD12
;等待8μs
MOVC,DAT
;主機按位依次讀入DS18B20的數據
RRCA;讀取的數據移入A
MOVR5,#30
RD13:DJNZR5,RD13
;保證讀過程持續60μs
DJNZR6,RD11
;讀完一個字節的數據,存入A中
SETBDAT
RET
;------------------------
主機控制DS18B20完成溫度轉換必須經過三個步驟:初始化、ROM操作指令、存儲器操作指令。必須先啟動DS18B20開始轉換,再讀出溫度轉換值。假設一線僅掛接一個芯片,使用默認的12位轉換精度,外接供電電源,可寫出完成一次轉換并讀取溫度值子程序GETWD。 本文引用地址:http://www.104case.com/article/163163.htm
GETWD:LCALLINIT
MOVA,#0CCH
LCALLWRITE;發跳過ROM命令
MOVA,#44H
LCALLWRITE;發啟動轉換命令
LCALLINIT
MOVA,#0CCH;發跳過ROM命令
LCALLWRITE
MOVA,#0BEH;發讀存儲器命令
LCALLWRITE
LCALLREAD
MOVWDLSB,A
;溫度值低位字節送WDLSB
LCALLREAD
MOVWDMSB,A
;溫度值高位字節送WDMSB
RET
……
子程序GETWD讀取的溫度值高位字節送WDMSB單元,低位字節送WDLSB單元,再按照溫度值字節的表示格式及其符號位,經過簡單的變換即可得到實際溫度值。
如果一線上掛接多個DS18B20、采用寄生電源連接方式、需要進行轉換精度配置、高低限報警等,則子程序GETWD的編寫就要復雜一些,限于篇幅,這一部分不再詳述,請參閱相關內容。
我們已成功地將DS18B20應用于所開發的“家用采暖洗浴器”控制系統中,其轉換速度快,轉換精度高,與微處理器的接口簡單,給硬件設計工作帶來了極大的方便,能有效地降低成本,縮短開發周期。
評論