宋東亞
(鄭州華信學(xué)院,河南鄭州,451150)
單片機作為微控制器,已廣泛用于工業(yè)控制、機電一體化設(shè)備、儀器儀表、信號處理、現(xiàn)代兵器、交通能源、商用設(shè)備、醫(yī)療設(shè)備及家用電器等各個領(lǐng)域。該設(shè)計就是以單片機為核心設(shè)計的一個溫度控制器,首先進行溫度檢測,當(dāng)檢測溫度小于設(shè)定溫度加熱,溫度上升到設(shè)定溫度時停止加熱。
在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測及控制,傳統(tǒng)的測溫傳感器有熱電偶和熱電阻。而熱電偶和熱電阻測出的一般都是電壓信號,再轉(zhuǎn)換成對應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試復(fù)雜,制作成本高。本設(shè)計采用DALLAS半導(dǎo)體公司繼DS1820之后推出的一種可改進型智能溫度傳感器DS18B20作為溫度檢測元件。
利用單片機AT89C51和DS18B20溫度傳感器設(shè)計一個溫度控制系統(tǒng),能夠完成對水溫的控制,當(dāng)水溫低于預(yù)設(shè)溫度值時系統(tǒng)開始加熱(點亮紅色發(fā)光二極管表示加熱狀態(tài)) 達(dá)到預(yù)設(shè)溫度值時自動停止加熱,并由數(shù)碼管顯示溫度,預(yù)設(shè)溫度值和實測溫度值分別由兩個4位數(shù)碼管顯示,范圍為0~99℃。
按照系統(tǒng)設(shè)計功能的要求,確定該系統(tǒng)由3部分組成:主控制器、測溫電路及顯示電路。水溫控制系統(tǒng)總體電路結(jié)構(gòu)框圖如下:
AT89C51是51系列單片機中的一種,其內(nèi)部帶有4K字節(jié)閃爍可編程可擦除只讀存儲器,低電壓、高性能。單片機AT89C51具有低電壓供電和小體積等特點,其并行口資源剛好滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用,系統(tǒng)采用兩節(jié)電池供電即可。
DS18B20可以直接讀出被測溫度值,而且采用3線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。DS18B20的外形如下圖,其引腳功能如下表所示:
根據(jù)DS18B20的引腳功能說明,我們可以很快地把VCC接一個5V的電源,而GND接地。由于DS18B20采用了單總線技術(shù),我們只要把DQ與單片機的一個I/O口相連接就可以了,如下圖所示(如圖1)。
7SEG-MPX4-CA-BLUE是7段4位一體共陽極藍(lán)色數(shù)碼管顯示器,顯示因為是4位共陽LED數(shù)碼管,所以低電平點亮,利用P1口輸出段碼,P2.0至P2.3口輸出位碼來實現(xiàn)列掃描,列驅(qū)動用NOT非門。打開ISIS選擇所需的器件AT89C51、7SEG-MPX4-CA-BLUE、BUTTON、CAP、RES、OPTOCOUPLER-MAND DS18B20 74HC245 LED-RED NOT。繪制仿真圖如下(如圖2):
系統(tǒng)程序主要包括主程序、溫度測量子程序、溫度轉(zhuǎn)換子程序、溫度設(shè)置子程序、溫度顯示子程序等等。
主程序的主要功能是負(fù)責(zé)中斷初始化、各寄存器的初始化和各子程序的調(diào)用(如圖3)。
圖3
圖4
圖5
主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫(如圖4)。
此子程序主要功能是進行BCD轉(zhuǎn)換,因單片機輸入端接受的是16位的二進制數(shù),顯示時必須化成BCD碼才能顯示正確結(jié)果(如圖5)。
此子程序主要功能是完成溫度的設(shè)置,主要是利用兩個外部中斷來設(shè)置程序完成溫度的設(shè)置,中斷一次溫度設(shè)置一次(如圖6)。
圖6
圖7
溫度顯示包括測量溫度顯示和設(shè)置溫度顯示,都是通過四個LED數(shù)碼管顯示。子程序除了顯示功能外,還包括溫度的比較,通過測量溫度與設(shè)置溫度的比較來控制加熱的程度(如圖7)。
源程序不再詳述。
打開Keil uVision2,新建并保存工程,新建文件,添加程序,保存成ASM格式文件,并添加進工程,進行編譯,直至編譯無誤。
Proteus SISI繪制原理圖的操作與Protel 99se繪制原理圖的操作基本相同,電路原理圖的畫法在這里就不再作詳細(xì)描述,接下來是進行仿真調(diào)試。首先打開已有的電路原理圖文件,雙擊圖中的芯片,就彈出一個窗口,在Program File選項中通過路徑選擇在keil軟件中生成的HEX文件,雙擊選中后確定,這樣就已經(jīng)讀取了本設(shè)計中的HEX文件。單擊下方的調(diào)試按鈕“三角形按鈕”進行仿真。通過對仿真結(jié)果的觀察分析來對程序進行修改,最終使程序到達(dá)設(shè)計要求。按下PLAY鍵觀察運行情況。下圖為當(dāng)實測溫度小于設(shè)定溫度的時候的工作狀態(tài)。
本文給出了基于單片機的溫度控制器的設(shè)計過程。在該設(shè)計添加DS18B20溫度傳感器來檢測實際溫度,利用單片機完成數(shù)據(jù)分析,實時顯示,報警以及加熱和降溫控制,實現(xiàn)溫度高于上限和低于下限時報警的基本功能,實用性較強。
[1] 吳文忠.基于Proteus的自動撥號報警器仿真設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(10):55-58
[2] 朱清慧,王志奎.Proteus在LED點陣滾動顯示屏設(shè)計中的應(yīng)用[J].液晶與顯示,2009,4(24):233-237
[3] 李全利,單片機原理及接口技術(shù)[M],高等教育出版社
[4] 王文杰,單片機應(yīng)用技術(shù)[M],冶金工業(yè)出版社
[5] 朱清慧,PROTEUS教程——電子線路設(shè)計、制版與仿真[M],清華大學(xué)出版社
[6] 彭偉,單片機C語言程序設(shè)計實訓(xùn)100例[M],電子工業(yè)出版社