關 閉

        新聞中心

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

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

        作者: 時間:2009-02-24 來源:網絡 收藏



        圖3 數字

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

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


        圖4 數字讀時序

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

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

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广东省| 八宿县| 屏东县| 铜梁县| 呼伦贝尔市| 惠来县| 黑水县| 黄大仙区| 桃江县| 宁津县| 互助| 万州区| 吴桥县| 望谟县| 灯塔市| 钟祥市| 澄城县| 克拉玛依市| 武宣县| 景东| 微博| 扶余县| 蓬莱市| 福建省| 监利县| 连云港市| 东台市| 阳朔县| 雷州市| 内乡县| 额济纳旗| 乌鲁木齐市| 罗城| 水城县| 资溪县| 白水县| 牡丹江市| 陆河县| 塔城市| 田阳县| 安康市|