關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > 分布式測溫中傳感器時序與溫度讀取研究

分布式測溫中傳感器時序與溫度讀取研究

作者: 時間:2009-02-24 來源:網(wǎng)絡 收藏



圖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 ; 保證寫時間大于60us
SETB DAT
RET

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


圖4 數(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 ; 保證一個讀周期持續(xù)60us
SETB DAT ; 使數(shù)據(jù)線為高電平
RET

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

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



評論


相關推薦

技術專區(qū)

關閉