分布式測(cè)溫中傳感器時(shí)序與溫度讀取研究
READ: MOV R6, #8 ; 循環(huán)次數(shù)為8
SETB DAT ; 讀出一位程序,執(zhí)行傳感器讀時(shí)序
NOP
NOP
RD11: CLR DAT
MOV R4, #4
NOP ; 持續(xù)低電平2us
SETB DAT ; 釋放數(shù)據(jù)線
RD12: DJNZ R4, RD12 ; 等待8us
MOV C, DAT ; 讀入一位
RRC A ; 將讀入數(shù)據(jù)移入累加器A
MOV R5, #28
RD13: DJNZ R5, RD13 ; 保證一個(gè)讀周期持續(xù)60us
DJNZ R6, RD11 ; 循環(huán)8次讀一個(gè)字節(jié)
SETB DAT
RET
上述程序執(zhí)行完畢,可將溫度傳感器的64位序列號(hào)存放在單片機(jī)內(nèi)部RAM 30H ~ 37H單元中。
4.分布式測(cè)溫系統(tǒng)中溫度顯示
分布式測(cè)溫系統(tǒng)中,采用液晶顯示可以實(shí)現(xiàn)房間號(hào)的顯示,實(shí)際溫度的顯示,報(bào)警上限值的顯示以及報(bào)警發(fā)生時(shí)的時(shí)間。還可以循環(huán)顯示多個(gè)房間的實(shí)際溫度和上限值。如圖5所示。
圖5 分布式測(cè)溫系統(tǒng)中對(duì)應(yīng)房間溫度以及報(bào)警上限顯示
5.結(jié)束語(yǔ)
正確讀取多個(gè)單總線數(shù)字溫度傳感器DS18B20的溫度在分布式測(cè)溫系統(tǒng)中是非常重要的。由于在程序設(shè)計(jì)時(shí)必須根據(jù)嚴(yán)格的時(shí)序關(guān)系,因此本文作者創(chuàng)新點(diǎn)是詳細(xì)闡述了初始化時(shí)序、讀寫(xiě)時(shí)序等復(fù)雜邏輯關(guān)系,設(shè)計(jì)了正確的溫度序列號(hào)讀取程序和溫度讀寫(xiě)程序并能夠進(jìn)行液晶顯示。由于單總線數(shù)字溫度傳感器DS18B20各個(gè)功能的實(shí)現(xiàn)是通過(guò)各種ROM命令與操作功能命令實(shí)現(xiàn)的,這些命令一環(huán)扣著一環(huán),每個(gè)環(huán)都是一個(gè)時(shí)序的集合。在進(jìn)行程序調(diào)試時(shí),不能像調(diào)試其它程序一樣用單步執(zhí)行來(lái)進(jìn)行跟蹤,因此對(duì)錯(cuò)誤查找和程序優(yōu)化帶來(lái)了很大的難度。在遇到程序運(yùn)行出錯(cuò)時(shí),只能夠根據(jù)錯(cuò)誤現(xiàn)象來(lái)分析、推測(cè)、修改和再運(yùn)行來(lái)解決,而不能直接定位。文中所介紹的單總線數(shù)字溫度傳感器DS18B20程序設(shè)計(jì)思路與方法,目前已較好地應(yīng)用于分布式測(cè)溫系統(tǒng)中,并且滿(mǎn)足一定精度要求。
評(píng)論