李萍
摘要:針對傳統(tǒng)測溫元件和測溫方法所存在的問題,提出了一種基于DS18820和AT89S51的高精度溫度測量儀。詳細介紹了單總線溫度傳感器DSl8820的結(jié)構(gòu)以及其單總線工作原理,并給出了單總線測溫儀的硬件電路和軟件設(shè)計流程。最后,利用Proteus軟件進行系統(tǒng)仿真調(diào)試,實現(xiàn)了溫度實時讀取、LCD顯示、超溫報警等功能。
關(guān)鍵詞:單總線;溫度測量;DS18820;AT89S51;Proteus;仿真
中圖分類號:TP274 文獻標識碼:A 文章編號:1009-3044(2017)14-0200-02
溫度是物體冷卻程度的物理量,也是一種基本的環(huán)境參數(shù)。在大棚種植、工業(yè)控制、電子測溫、家用電器等需要溫度監(jiān)測的領(lǐng)域中,溫度控制的精確性和實效性要求越來越高。傳統(tǒng)的溫度測量方法很多,測溫元件主要以熱電偶、熱電阻或者模擬式溫度傳感器為主,存在測量精度較低、可溫度是表征靠性較低、需要A/D轉(zhuǎn)換,且電路復雜等一系列問題。
本文提出一種采用Dallas公司的單總線數(shù)字溫度傳感器DS18820為測溫元件,AT89S51單片機為控制核心所構(gòu)成高精度的溫度測量儀,不僅具有控制方便、電路結(jié)構(gòu)簡單、靈活性大等優(yōu)點,且可以大大提升測溫指標,很好地解決上述問題。實現(xiàn)在單片機的控制下檢測溫度與顯示,并可設(shè)置高、低溫度超限報警等功能,廣泛使用于距離遠、節(jié)點分布多的場合,具有較強的推廣應用價值。
1 DSl8820測溫優(yōu)點
DS18820是Dallas公司繼DS1820之后推出的一種改進型的單總線智能溫度傳感器。溫度測量范圍為-55~+125℃,能夠直接讀出被測量的溫度;測量結(jié)果以9~12位數(shù)字量串行傳送,同時可傳送CRC校驗碼,最高分辨率可達0.0625℃,滿足高精度的測量要求;工作電源電范圍3.0~5.5V;獨特的單總線接口方式,在使用過程中不需要任何外圍元件,且支持多點組網(wǎng)功能。DS18820測溫可使系統(tǒng)結(jié)構(gòu)更加簡潔,可靠性高,使得其非常適用于高精度的溫度采集與檢測。DS18820的內(nèi)部結(jié)構(gòu)圖如圖1所示。
2硬件電路設(shè)計及分析
系統(tǒng)主要由AT89S51單片機、DS18820測溫元件、1602LCD顯示電路、超溫報警電路、時鐘電路以及復位電路等構(gòu)成,原理框圖如圖2所示。
系統(tǒng)采用DS18820進行測溫,通過單總線方式接至AT89S51的P3.3引腳。AT89S51單片機采集DS18820送來的溫度信息,經(jīng)過軟件算法將處理后的溫度信息通過LCD1602顯示器顯示出來。溫度的上下限值可通過P1.0-P1.2的按鍵來進行設(shè)定。若超過設(shè)定的上限或下限溫度值,將通過P3.6或P3.7進行高低溫報警。系統(tǒng)采用Proteus軟件設(shè)計的仿真電路如圖3所示。
2.1測溫電路
溫度采集模塊DS18820采用單總線結(jié)構(gòu),與單片機交換信息僅需要一根I/O線,其讀/寫及溫度轉(zhuǎn)換的功率也可來源于數(shù)據(jù)總線,而無需額外電源。DSl8 B20有3個引腳,1腳VDD是外電源輸入端,2腳DQ是數(shù)字信號輸入/輸出端,3腳GND是地線。
2.2 LCD液晶顯示電路
LCD1602顯示器用于顯示實時溫度數(shù)據(jù)。此外,剛上電時,先后顯示上下限溫度設(shè)定值。P2.0~P2.2分別接LCD1602的RS、RW及E端,P0口接LCDl602的數(shù)據(jù)輸出端DO到D7。
2.3按鍵輸入電路
采用獨立式鍵盤P1.0~P1.2用來修改溫度報警的上限與下限值。系統(tǒng)默認的溫度報警上限為50~C,下限為-10℃。系統(tǒng)上電后,LCD1602將先顯示溫度報警上限值。若按P1.0鍵報警值加1,按PI.1鍵報警值減1;P1.2為確定鍵,用于保存修改值。按下確定鍵后,接著顯示溫度報警的下限值,修改保存后,再進行實時溫度顯示。
3軟件設(shè)計及分析
軟件程序主要包括以下部分:
1)初始化部分,包括對LCD 1602及DS18820的初始化。
2)按鍵處理部分:上電后,LCD1602顯示上限報警溫度值,若20秒之內(nèi)有溫度加或溫度減鍵按下,則修改后保存溫度上限值;同理修改并保存溫度下限值。
3)設(shè)置溫度報警子程序:根據(jù)修改的溫度上下限值,在DS18820初始化后,發(fā)跳過ROM命令,將溫度報警值寫入DS18820,再發(fā)跳過ROM命令,將溫度報警值復制到EE-PROM中。
4)讀取溫度字程序:若檢測到DS18820無故障時,可讀取溫度。順序是:發(fā)出跳過序列號命令(0Xcc)→啟動溫度轉(zhuǎn)換命令(0x44)→DS18820初始化→跳過序列號命令(0Xec)→讀取溫度寄存器命令(0XBE)→分別保存溫度低8位、高8位以及高溫限值(TH)和低溫限值(TL)。
5)LCD顯示溫度子程序:顯示溫度前,需要先對溫度的符號進行判別。先由符號位判定溫度的正負,若溫度為負,則對應的溫度絕對值為原碼的補碼。根據(jù)讀取的2字節(jié)溫度值,判斷其符號位并分別讀取其整數(shù)部分和小數(shù)部分,通過運算后保存到顯示緩沖區(qū),并刷新LCD顯示緩沖,同時注意高位為0時不顯示,最后在LCD中第一行顯示標題,在第二行中顯示當前溫度及溫度符號。子程序流程圖見圖4。
6)溫度報警處理部分:讀取DS18820溫度值及報警上下限值后,進行比較,若超出范圍則驅(qū)動上/下限報警單元進行報警。
3.4軟件設(shè)計流程
4 Keil與Proteus的仿真調(diào)試
軟件上,采用C語言編程,在KeilC51軟件中,將編寫的程序進行編譯、調(diào)試,并生成十六進制目標代碼文件(XX.hex)。硬件上,利用Proteus軟件繪制出系統(tǒng)的仿真原理圖,并進行純電路的仿真后,雙擊CPU,在出現(xiàn)對話框中的“Programfile”加入目標代碼文件XX.hex,并進行系統(tǒng)的仿真調(diào)試,直至調(diào)試成功。仿真調(diào)試好之后,通過按鍵可修改溫度報警的上下限值,調(diào)試時可看到LCD1602上顯示所采集到的溫度值,誤差在0.1度范圍內(nèi),達到了良好的仿真效果,如圖2所示。
5結(jié)束語
本設(shè)計以Proteus和Keil軟件作為開發(fā)工具,以AT89S51單片機為控制核心,并采用單總線智能溫度傳感器DS18820作為溫度檢測元器件,加上合適的外圍電路,構(gòu)成了實時溫度檢測系統(tǒng)。該系統(tǒng)可實現(xiàn)溫度的實時讀取、LCD顯示及超溫報警等功能,且系統(tǒng)具有結(jié)構(gòu)簡潔、精度高、適應性強、維護方便,易于擴展成為多點測溫系統(tǒng)等優(yōu)點,在溫度采集與檢測領(lǐng)域中具有良好的應用前景。