• 
    <ul id="auswy"><sup id="auswy"></sup></ul>
  • <ul id="auswy"></ul>
    ABB
    關注中國自動化產業發展的先行者!
    CAIAC 2025
    2025工業安全大會
    OICT公益講堂
    當前位置:首頁 >> 案例 >> 案例首頁

    案例頻道

    一種簡易溫度測量裝置的設計
    • 企業:控制網     領域:工廠信息化     行業:建筑樓宇    
    • 點擊數:4265     發布時間:2007-07-27 22:04:31
    • 分享到:
    本文介紹了一種簡易溫度測量裝置的硬件與軟件設計。該裝置以DS18B20為溫度傳感器,溫度顯示采用虛擬總線方式。文中給出了溫度傳感器、溫度顯示與P89C51RD2單片機的接口技術及實例。這種溫度測量裝置結構簡單,使用方便、可靠。






    (中國船舶重工集團公司第七一○研究所,湖北   宜昌   443003) 梁中明,徐   陽
    梁中明(1978—)
    男,南京航空航天大學碩士畢業,現從事系統仿真研究工作,助理工程師。

        溫度是一個很重要的環境參數,人們的生活與環境的溫度息息相關,工業生產過程中需要實時測量溫度,在農業生產中也離不開溫度測量。因此,研究溫度測量裝置很有實際意義與實用價值。本文介紹了數字溫度傳感器DS18B20的內部結構與工作時序,虛擬 總線的溫度顯示方式,以及它們與單片機P89C51RD2的應用接口。該溫度測量裝置適用于人們的日常生活和工業、農業生產用于溫度測量。
        
    1 DS18B20數字溫度傳感器

        DS18B20是一種單線式數字溫度傳感器,具有3引腳TO-92小體積封裝形式;測溫范圍為-55℃~+125℃,可編程為9~12位A/D轉換精度,被測溫度用符號擴展的16位數字量方式串行輸出,工作電源為+3V~+5.5V,可在遠端引入,也可采用寄生電源方式產生。
        
       
    1.1 DS18B20的內部結構

        DS18B20內部結構如圖1所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。其中DQ為數字信號輸入/輸出端;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。



    圖1   DS18B20內部結構

        DS18B20用12位存貯溫度值,最高位為符號位,圖2為DS18B20的溫度存儲方式,負溫度S=1,正溫度S=0,如0550H為+85℃,FC90H為-55℃。



    圖2   DS18B20溫度寄存器存儲方式

        1.2  DS18B20的操作時序

        DS18B20的單線式工作協議流程是:初始化→ROM操作指令→存儲器操作指令→數據傳輸。其工作時序包括初始化時序、寫時序和讀時序,如圖3所示。



    (a) 初始化時序


    (b)寫時序


    (c)寫時序


    圖3   DS18B20工作時序圖

    2  虛擬總線顯示方式

        溫度顯示采用LED數碼管,其驅動芯片是ZLG7290。ZLG7290是接口的鍵盤及LED驅動器,可驅動8位共陰數碼管,無需外接元件即直接驅動LED,可擴展驅動電流及驅動電壓。在每個顯示刷新周期,ZLG7290按照掃描位數寄存器指定的顯示位數N,把顯示緩存DpRam0~DpRamN的內容先后順序送入LED驅動器實現動態顯示,減少N值可提高每位顯示掃描時間的占空比,以提高LED亮度,顯示緩存中的內容不受影響。修改閃爍控制寄存器(FlashOnOff)可改變閃爍頻率和占空比(亮與滅的時間)。
         
        總線是PHILIPS公司推出的芯片間串行數據傳輸總線,2根線(SCL、SDA)即可實現完善的全雙工同步數據傳送,能夠十分方便地構成多機系統和外圍器件擴展系統。

        ZLG7290的接口傳輸速率可達32Kbit/s,容易與處理器接口,本文采用單主總線形式,硬件接口是SCL、SDA。本文設計的硬件電路圖如圖4所示,采用P89C51RD2的P1.6與P1.7模擬的SCL與SDA,構成虛擬的總線顯示方式。

    3  程序設計

        溫度測量裝置的主程序流程,如圖5所示。P89C51RD2控制DS18B20完成溫度讀取必須經過三個步驟:初始化、ROM操作指令、存儲器操作指令。程序必須先啟動DS18B20開始轉換,再讀出溫度值,其中包括讀DS18B20,寫DS18B20以及延時子函數。

        溫度轉換主要是指將從DS18B20讀取的16進制溫度數據轉換成BCD碼。溫度顯示是顯示出DS18B20測量的溫度數值,包含有總線啟動、結束子函數,P89C51RD2發送命令、應答子函數以及向ZLG7290發送字節數據函數。程序設計采用匯編語言與C語言編程,其中DS18B20、總線啟動與結束程序代碼如下:

    /*DS18B20初始化程序*/
    INIT_1820:
       SETB  DQ
       NOP
       CLR  DQ
       MOV  R0,#80H
    TSR1: DJNZ  R0,TSR1 ; /*延時*/
       SETB  DQ
       MOV  R0,#25H
    TSR2: DJNZ  R0,TSR2
       JNB  DQ,TSR3
       LJMP  TSR4  ;/*延時*/
    TSR3: SETB  FLAG1  ; /*置標志位*/
       LJMP  TSR5
    TSR4: CLR  FLAG1  ;/*清標志位*/
       LJMP  TSR7
    TSR5: MOV  R0,#06BH ;/*200μs*/
    TSR6: DJNZ  R0,TSR6 ; /*延時*/
    TSR7: SETB  DQ
       RET

    void Start_I2c() /*啟動總線*/
    {
      SDA=1;  /*發送起始條件的數據信號*/
      _Nop();
      SCL=1;
      _Nop(); /*起始建立時間大于4.7μs*/
      _Nop();
      _Nop();
      _Nop();
      _Nop();   
      SDA=0;  /*發送起始信號*/
      _Nop();  /*起始鎖定時間大于4μs*/
      _Nop();
      _Nop();
      _Nop();
      _Nop();      
      SCL=0; /*鉗住總線*/
      _Nop();
      _Nop();
    }


       圖5   主程序流程圖

    void Stop_I2c()  /*結束總線*/
    {
      SDA=0;  /*發送結束條件的數據信號*/
      _Nop();  /*發送結束條件的時鐘信號*/
      SCL=1;  /*結束時建立時間大于4μs*/
      _Nop();
      _Nop();
      _Nop();
     _Nop();
      _Nop();
      SDA=1;   /*發送總線結束信號*/
      _Nop();
      _Nop();
      _Nop();
      _Nop();
    }



    圖4   硬件電路原理圖

    4  結束語

        數字式溫度傳感器DS18B20集溫度測量、A/D轉換于一體,具有單總線結構,數字量輸出,直接與微機接口等優點;虛擬總線占用微機接口資源少(一根SDA,一根SCL),總線構成簡單,能簡化系統設計。本文研制的簡易溫度測量裝置已成功應用于某實驗室溫度測控系統中,轉換精度較高,抗干擾能力較強,效果良好。

    參考文獻: 

        [1] DallasCorp.DS18B20[EB/OL].http://www.dalsem.com,2003.

        [2] 馬云峰等.數字溫度傳感器DS18B20原理與應[EB/OL].http://www.chinacd.com/dzkw//2002-1/9.htm,2002-01-12/2003-09-26.

        [3] 呂元穎等.總線概述及有關例程.科技情報開發與經濟,2005,No15.P177~180.

        [4] P89c51RA2xx/RB2xx/RC2xx/RD2xx.datasheet. Philips Semiconductors .2002.

    熱點新聞

    推薦產品

    x
    • 在線反饋
    1.我有以下需求:



    2.詳細的需求:
    姓名:
    單位:
    電話:
    郵件: