單體良
渤海大學(xué)
?
基于AT89C51單片機(jī)的數(shù)字溫度計設(shè)計
單體良
渤海大學(xué)
本系統(tǒng)設(shè)計了一款基于AT89C51單片機(jī)的數(shù)字溫度計,可以實現(xiàn)溫度的顯示和報警等功能。系統(tǒng)以AT89C51單片機(jī)為主控制芯片,采用溫度傳感器DS18B20來檢測電路的溫度,測量精度達(dá)到0.5℃,使用LCD1602A液晶顯示模塊,來顯示測出的溫度值。該系統(tǒng)具有結(jié)構(gòu)簡單、讀數(shù)方便、精度高、測溫范圍廣等特點(diǎn),具有很強(qiáng)的應(yīng)用價值。
數(shù)字溫度傳感器 AT89C51單片機(jī) 單總線 PTR2030無線收發(fā)模塊
隨著工業(yè)、農(nóng)業(yè)的發(fā)展,當(dāng)前的生活環(huán)境越來越不能滿足人們的要求,對溫度進(jìn)行測量和控制就顯得很重要?;趩纹瑱C(jī)的智能溫度控制系統(tǒng)在工農(nóng)業(yè)生產(chǎn)中以及人們?nèi)粘I钪卸紤?yīng)用很廣。傳統(tǒng)的監(jiān)控方法不能達(dá)到精確、快速的作用,很難達(dá)到較高的性能要求。隨著科學(xué)技術(shù)的發(fā)展,溫度傳感器的應(yīng)用范圍越來越廣,溫度傳感器DS18B20,可以把溫度信號轉(zhuǎn)換為數(shù)字信號。本文利用單片機(jī)和溫度傳感器結(jié)合,設(shè)計一款數(shù)字溫度計,來代替手工測量,可以省時間、省力氣。
本系統(tǒng)以AT89C51單片機(jī)為主控芯片,用DS18B20傳感器來測量外界的溫度,利用4×4鍵盤模塊設(shè)定溫度的最大值和最小值,當(dāng)溫度超過最大值或者最小值時就報警。顯示電路采用LCD1602A液晶模塊,報警電路由三極管、蜂鳴組成,溫度測量系統(tǒng)總體設(shè)計框圖如圖1所示:
圖1 溫度測量系統(tǒng)總體框圖
2.1主控制器
本系統(tǒng)選用AT89C51單片機(jī),該單片機(jī)是一種低功耗,高性能的8位COMS微控制器,其片內(nèi)含有4KB只讀存儲器,引腳和指令和80C51兼容,可以多次編程。
2.2溫度傳感器
2.2.1DS18B20的工作原理
溫度傳感器選擇DS18B20,它是一款數(shù)字溫度傳感器,不需要模數(shù)轉(zhuǎn)換就能讀取電路溫度,而且可以采用編程的方式實現(xiàn)9位到12位的轉(zhuǎn)換,具有線路簡單、體積小等優(yōu)點(diǎn)。可以測量的溫度范圍為-55.C到+125.C,電壓范圍為3.0到5.5V,并且只利用一個端口就可以完成通信,不同器件有不同的序號,在實際工作中不需要依靠外部元器件就可以完成對溫度的測量。
2.2.2DS18B20與單片機(jī)的接口電路
DS18B20的單總線和單片機(jī)P2.0引腳連接。單片機(jī)P2口內(nèi)部帶上拉電阻,當(dāng)P2口輸出高電平時,P2口做為輸入口使用。在主機(jī)發(fā)送讀時序的時候,傳感器給主機(jī)傳送數(shù)據(jù)。主控制器配合采集數(shù)據(jù)時,把溫度傳感器的信號線和主控制器的一位I/O口線連接,主控制器的一位I/O 口線可以和多個溫度傳感器相連接,完成一個節(jié)點(diǎn)或者多個節(jié)點(diǎn)的溫度檢測。DS18B20有三個引腳,分別和地、電源以及主控制器的I/O口連接,電源和數(shù)字輸入、輸出管腳之間接一個4.7K的電阻。
DS18B20溫度的計算方法如下:
SSSSS = 11111 b 溫度值:
T=[ (MSB and 7) ×256 + LSB] ×0.0625 ℃
SSSSS = 00000 b 溫度值:
T=-[ (256 - MSB) ×256 - LSB] ×0.0625 ℃
2.3鍵盤電路
根據(jù)系統(tǒng)中需要實現(xiàn)的功能,采用4X4=16的矩陣式鍵盤設(shè)定溫度的最大值和最小值,這種矩陣式的鍵盤可以提高主控制器的I/O口使用效率。
當(dāng)按多個鍵時,為了充分提高單片機(jī)I/O口的使用效率,避免線路過于復(fù)雜,把按鍵排成矩陣的形式,分為行線和列線,其中行線是輸出端,列線是輸入端。假如無按鍵按下,系統(tǒng)輸出端置高電平,假如有按鍵按下,系統(tǒng)輸入端置低電平。鍵盤電路工作原理為:
a)判斷有無鍵按下。
b)去除鍵的機(jī)械抖動。假如判斷有鍵按下,也就是輸入端有低電平,延時10ms,第二次讀取,假如兩次都判斷為有鍵按下,確定為有按鍵按下,否則不判為鍵按下,判為抖動。
c)判別哪個鍵按下。
d)CPU采取等鍵釋放后,處理一次按鍵的閉合。
2.4顯示電路
LCD1602和單片機(jī)連接方法有:采用8位數(shù)據(jù)總線連接和三個控制端口連接;采用D4-D7作為四位數(shù)據(jù)分為兩次傳送。本實驗將使用并采用八位數(shù)據(jù)方式來控制1602顯示。單片機(jī)的P3.5口-P3.7口分別和液晶的使能端、讀寫選擇端、以及RS端相連,當(dāng)使能端有效時,利用命令選擇端控制數(shù)據(jù)的讀和寫。主控制器的P2口和液晶的數(shù)據(jù)端口相連,用來傳輸數(shù)據(jù)。
2.5報警電路
報警電路主要由三極管和蜂鳴器組成,單片機(jī)的P1.1引腳信號,經(jīng)三極管Q1驅(qū)動后發(fā)聲。當(dāng)P1.1口輸出電平為低時,蜂鳴器不響;當(dāng)P1.1口輸出電平為高時,蜂鳴器發(fā)出聲響,其音調(diào)高低和脈沖信號的頻率有關(guān)系。
2.6電源電路
系統(tǒng)需要5V的穩(wěn)定電源,因此需要把電壓穩(wěn)定在5V。采用LM7805三端穩(wěn)壓器實現(xiàn),LM7805內(nèi)部有過溫、過流保護(hù)電路,并且和外部電路連接時需要的元器件少、使用方便、可靠。
系統(tǒng)使用C語言為編程語言,主程序主要由溫度采集模塊、溫度處理模塊、數(shù)據(jù)顯示模塊以及鍵盤處理模塊四部分組成,系統(tǒng)初始化后,分別實現(xiàn)各個功能。其中溫度采集部分的功能是實現(xiàn)被測溫度的采集;溫度處理部分的功能是把采集到的溫度數(shù)據(jù)進(jìn)行比較、處理和判斷,如果處理判斷后的數(shù)值大于設(shè)定值,蜂鳴器就報警,提醒注意;數(shù)據(jù)顯示部分可以顯示溫度值;鍵盤處理部分能夠設(shè)定系統(tǒng)的參數(shù),實現(xiàn)用戶和系統(tǒng)之間的人機(jī)對接。系統(tǒng)軟件主流程如圖2所示。
3.1測溫模塊流程圖
測溫模塊操作流程圖如3所示。
圖2 系統(tǒng)軟件總流程圖
圖3 測溫模塊操作流程圖
圖4 多點(diǎn)溫度測量電路流程圖
3.2多點(diǎn)溫度的測量
多點(diǎn)溫度測量的過程如下:
(1)發(fā)送跳過ROM命令。
(2)發(fā)啟動溫度傳感器命令,開始溫度轉(zhuǎn)換。
(3)延遲1s。
(4)發(fā)匹配ROM命令。
(5)取出64位ROM代碼并發(fā)送到單總線中。
(6)發(fā)讀溫度值命令,然后讀測量的溫度值。
(7)對結(jié)果進(jìn)行CRC校驗,在顯示器中顯示出來。
(8)重復(fù)(4)到(7)歩鄹,直到所有的測量結(jié)束。
(9)測量結(jié)完成后,重復(fù)上面過程,重新進(jìn)行下一輪溫度測量。
多點(diǎn)溫度測量電路流程圖如圖4所示。
3.3顯示模塊流程圖
顯示模塊流程圖如圖5所示。
圖5 LCD1602A操作流程圖
圖6 鍵盤掃描程序流程圖
3.4鍵盤掃描流程圖
按鍵處理程序主要實現(xiàn)報警參數(shù)設(shè)置以及顯示模式設(shè)置,其工作流程如下文所示。通過掃描鍵盤讀取鍵值,通過溫度傳感器設(shè)置溫度的最大值報警值和最小值報警值,鍵盤掃描流程圖如圖6所示。
把系統(tǒng)設(shè)計的溫度計放在既有水又有冰的混合物里面,讓溫度計在混合物中靜置一段時間后,把此時系統(tǒng)顯示的溫度值設(shè)置為0.00,即0℃;然后讀取當(dāng)?shù)氐孛娴拇髿鈮簭?qiáng),并計算出當(dāng)時的實際壓強(qiáng),再把溫度計放到沸騰的水中,根據(jù)物理中水的沸點(diǎn)和實際壓強(qiáng)的關(guān)系確定此時水沸騰的實際溫度,讓顯示屏的數(shù)據(jù)和當(dāng)?shù)禺?dāng)時的沸點(diǎn)溫度相等[6]。經(jīng)過測試,系統(tǒng)設(shè)計的溫度計可以測量-30℃~ 150℃之間的溫度,測量精度為 0.5℃,常用的溫度為0℃~ 100℃。分別測試幾個溫度點(diǎn),然后用精密水銀再測試這幾個溫度點(diǎn),把兩種溫度計測試的結(jié)果進(jìn)行對比,經(jīng)過測試表明,該系統(tǒng)設(shè)計的數(shù)字溫度計精確度達(dá)到測量精度要求。
本測溫系統(tǒng)充分利用了單片機(jī)強(qiáng)大資源,功能齊全,設(shè)計電路簡單、美觀,不僅具有精度高、速度快的特點(diǎn),還具有穩(wěn)定性好、使用范圍廣的特點(diǎn),適用于對溫度要求比較高的場所,具有很強(qiáng)的實用性。
[1]李海玲,王航宇.基于AT89C51&;DS18B20的數(shù)字溫度計設(shè)計[J]. 國外電子元器件,2008,11:82-84.
[2]陳慕君,唐慧剛,劉其群,袁富娟. 一種基于AT89C51單片機(jī)控制的數(shù)字溫度計設(shè)計[J]. 黑龍江科技信息,2009,14:26+127.
[3]丁磊,佟彤.基于AT89C51單片機(jī)的數(shù)字溫度計的設(shè)計與研究[J].才智,2011,19:58.
[4]龍吉. 基于AT89C2051單片機(jī)的數(shù)字溫度計的設(shè)計[J]. 科學(xué)之友,2010,20:36+38.
[5]曹文祥.AT89C51單片機(jī)數(shù)字體溫計的設(shè)計[J]. 武漢工程職業(yè)技術(shù)學(xué)院學(xué)報,2012,03:32-34+37.
[6]廖月琴.基于AT89S51單片機(jī)數(shù)字溫度計的設(shè)計[J].咸寧學(xué)院學(xué)報,2010,12:13-14.