關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 分布式測(cè)溫中傳感器時(shí)序與溫度讀取研究

分布式測(cè)溫中傳感器時(shí)序與溫度讀取研究

作者: 時(shí)間:2009-02-24 來(lái)源:網(wǎng)絡(luò) 收藏



圖3 數(shù)字

寫一位程序如下所示。程序中DAT為I/O口P1.0。
WIR11: SETB DAT ; 拉高電平
MOV R4, #5
NOP
CLR DAT ; 高電平持續(xù)2us后拉低
WIR12: DJNZ R4, WIR12 ; 等待10微秒
MOV DAT, C ; 發(fā)送1位
MOV R4, #23
WIR13: DJNZ R4, WIR13 ; 保證寫時(shí)間大于60us
SETB DAT
RET

2.3
DS18B20只有在檢測(cè)到主設(shè)備啟動(dòng)讀后才向主設(shè)備傳輸數(shù)據(jù)。所以一般在主設(shè)備發(fā)送了讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便DS18B20能夠傳輸數(shù)據(jù)。所有的讀時(shí)序都至少需要60μS,且在兩次獨(dú)立的讀時(shí)序之間至少需要1μS的恢復(fù)時(shí)間。每個(gè)讀時(shí)序都由主設(shè)備發(fā)起,先使數(shù)據(jù)線為高電平,然后拉低數(shù)據(jù)線至少1μS,再釋放數(shù)據(jù)線。在主設(shè)備發(fā)出讀時(shí)序之后,DS18B20開始在數(shù)據(jù)線上發(fā)送數(shù)據(jù)0或1。若其發(fā)送1,則保持?jǐn)?shù)據(jù)線為高電平。若發(fā)送0,則DS18B20拉低數(shù)據(jù)線,在該時(shí)序結(jié)束后釋放數(shù)據(jù)線。DS18B20發(fā)出的數(shù)據(jù)在起始時(shí)序之后15μS內(nèi)保證可靠有效。因而主設(shè)備在讀時(shí)序期間必須釋放數(shù)據(jù)線,并且要在時(shí)序開始后的15μS之內(nèi)數(shù)據(jù)線狀態(tài)。寫時(shí)序如圖4所示。


圖4 數(shù)字讀時(shí)序

讀一位程序如下所示:
RE11: SETB DAT ; 使數(shù)據(jù)線為高電平
NOP
NOP
CLR DAT ; 高電平持續(xù)2us后拉低數(shù)據(jù)線
MOV R4, #4
NOP ; 持續(xù)低電平2us
SETB DAT ; 釋放數(shù)據(jù)線
RE12: DJNZ R4, RE12 ; 等待8us
MOV C, DAT ; 讀入一位
MOV R5, #28
RE13: DJNZ R5, RE13 ; 保證一個(gè)讀周期持續(xù)60us
SETB DAT ; 使數(shù)據(jù)線為高電平
RET

3.初始化以及讀寫時(shí)序應(yīng)用
3.1 溫度采集程序設(shè)計(jì)
單總線數(shù)字溫度傳感器DS18B20要完成溫度的采集需要按順序完成如下幾個(gè)步驟:初始化、跳過(guò)ROM匹配、啟動(dòng)轉(zhuǎn)換、等待轉(zhuǎn)換完成、初始化、匹配ROM、讀便箋式存儲(chǔ)器、CRC校驗(yàn)、溫度格式轉(zhuǎn)換、保存溫度值以及顯示等其他處理。按照此步驟,程序設(shè)計(jì)時(shí)首先就要按照初始化時(shí)序執(zhí)行2.1所介紹的初始化程序INI10,其次要將跳過(guò)ROM匹配命令(代碼為CCH)寫入到DS18B20中,此時(shí)需根據(jù)2.2所介紹的數(shù)字溫度傳感器寫時(shí)序編寫對(duì)DS18B20一個(gè)寫入字節(jié)程序WRITE,將跳過(guò)ROM匹配命令寫入DS18B20。為了完成溫度啟動(dòng)轉(zhuǎn)換,需要將啟動(dòng)轉(zhuǎn)換命令寫入DS18B20中。用延時(shí)750ms等待轉(zhuǎn)換完成。隨后再按照初始化時(shí)序執(zhí)行本文中2.1所介紹的初始化程序INI10,用寫入一個(gè)字節(jié)程序?qū)⑵ヅ銻OM命令(代碼為55H)寫入到DS18B20中。為了完成讀便箋式存儲(chǔ)器操作,需要先結(jié)合數(shù)字溫度傳感器寫時(shí)序?qū)⒆x便箋式存儲(chǔ)器命令(代碼為BEH)寫入到DS18B20中,再用溫度傳感器讀時(shí)序編寫的讀一個(gè)字節(jié)程序READ,連續(xù)DS18B20便箋式存儲(chǔ)器中9個(gè)字節(jié)的內(nèi)容。由此可見,要想實(shí)現(xiàn)溫度正確采集,需要結(jié)合上述所介紹的初始化時(shí)序、溫度傳感器寫時(shí)序和溫度傳感器讀時(shí)序,才可以將所需的命令寫入與讀出。完成溫度的正確。

3.2 溫度傳感器序列號(hào)讀取程序設(shè)計(jì)
每個(gè)單總線數(shù)字溫度傳感器DS18B20出廠時(shí)都有唯一的一個(gè)64位序列號(hào),在使用溫度傳感器之前,需事先將每個(gè)溫度傳感器逐一掛接在I/O口如P1.0上,再讀取溫度傳感器的序列號(hào)。當(dāng)I/O口上掛接一個(gè)溫度傳感器DS18B20時(shí),可以用讀ROM命令完成64位序列號(hào)的讀取。程序設(shè)計(jì)思路是首先將讀ROM命令(代碼為33H)送入累加器A中,隨后調(diào)用寫入一個(gè)字節(jié)程序WRITE,然后調(diào)用讀64位序列號(hào)程序DXLH。在寫入一個(gè)字節(jié)程序WRITE中,置循環(huán)次數(shù)為8,再調(diào)用寫入一位子程序,嚴(yán)格按照時(shí)序關(guān)系,執(zhí)行傳感器寫時(shí)序,循環(huán)8次寫完一個(gè)字節(jié)。在讀64位序列號(hào)程序DXLH中,置內(nèi)部RAM首地址為30H,置循環(huán)次數(shù)為8,調(diào)用讀一個(gè)字節(jié)程序READ,將讀取數(shù)據(jù)存放在內(nèi)部RAM中。循環(huán)8次讀完8個(gè)字節(jié)即64位序列號(hào)。讀出的64位序列號(hào)將存放到內(nèi)部RAM 30H ~ 37H單元中。讀一個(gè)字節(jié)程序READ如下所示。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉