嚴 敏
(江蘇聯(lián)合職業(yè)技術(shù)學院揚州商務(wù)分院 信息電子系,江蘇 揚州 225127)
?
基于單片機的智能溫控系統(tǒng)的設(shè)計與實現(xiàn)
嚴敏
(江蘇聯(lián)合職業(yè)技術(shù)學院揚州商務(wù)分院 信息電子系,江蘇揚州225127)
基于單片機的智能控溫技術(shù)在科學研究、工農(nóng)業(yè)生產(chǎn)、日常生活的很多領(lǐng)域得到了廣泛的應(yīng)用。本文設(shè)計了以AT89C51單片機為核心的智能溫度控制系統(tǒng),并結(jié)合Proteus仿真平臺進行了系統(tǒng)仿真研究,在MedWin3.0集成開發(fā)環(huán)境中采用C51語言進行系統(tǒng)程序設(shè)計。這不僅提高了單片機系統(tǒng)設(shè)計的效率,降低了成本,縮短了周期,而且對于單片機系統(tǒng)的教學演示和實際設(shè)計都具有很大的應(yīng)用價值。
51單片機; DS18B20; LCD1602; Proteus
溫度控制在科學研究和工農(nóng)業(yè)生產(chǎn)、日常生活的很多領(lǐng)域得到了廣泛應(yīng)用,本文設(shè)計了以AT89C51單片機為核心的智能溫度控制系統(tǒng),并結(jié)合Proteus仿真平臺進行了系統(tǒng)仿真研究,在MedWin3.0集成開發(fā)環(huán)境中采用C51語言進行系統(tǒng)程序設(shè)計。本設(shè)計具有電路簡單、成本低廉、測量精準和方便實物制作等優(yōu)點。
1.1設(shè)計總體結(jié)構(gòu)
對于本次溫控系統(tǒng)設(shè)計中,主要包括AT89C51單片機、DS18B20溫度傳感器采集模塊、LCD1602液晶顯示模塊、4*4按鍵模塊以及蜂鳴器報警模塊、控溫設(shè)備等組成。其設(shè)計總體結(jié)構(gòu)如圖1所示。
圖1 溫度控制系統(tǒng)總體結(jié)構(gòu)
AT89C51單片機作為主控制器,4*4行列式按鍵用來設(shè)定溫度的上限值和下限值,通過數(shù)字溫度傳感器DS18B20實時采集周邊環(huán)境溫度信息,經(jīng)過單片機處理后送液晶LCD1602顯示,并與設(shè)定值進行比較,當測量的溫度不在設(shè)定的溫度范圍時,蜂鳴器報警并啟動相應(yīng)的控溫設(shè)備工作,具體來說,當測量溫度小于等于設(shè)定下限時,蜂鳴器報警,升溫設(shè)備工作;當測量溫度大于等于設(shè)定上限時,蜂鳴器報警,降溫設(shè)備工作。
1.2單片機主控模塊
作為智能溫度控制系統(tǒng)的核心,單片機控制著環(huán)境溫度信息的采集、溫度范圍的設(shè)置、溫度的顯示、溫度的報警等任務(wù)。
本次設(shè)計使用Atmel公司生產(chǎn)的AT89C51單片機芯片,它和Intel公司的8051系列單片機的指令系統(tǒng)和引腳完全兼容。共40個引腳,內(nèi)部包含四個可編程的8位并行I/O口(P0口、P1口、P2口、P3口),一個全雙工串行接口,兩個16位的可編程定時/計數(shù)器,128字節(jié)的隨機存儲器和4K字節(jié)Flash工藝的只讀存儲器,這種工藝使得用戶可以極為方便地使用電的方式瞬間重新擦除和改寫。在AT89C51的外圍添加時鐘電路、電源電路和復位電路就可以構(gòu)成單片機最小系統(tǒng)。
在Proteus中設(shè)計系統(tǒng)硬件電路圖,如圖2所示。按鍵通過P1口設(shè)置溫度的上下限值,溫度傳感器接P2.7,采集溫度信息,送單片機處理之后輸出到P0口,通過液晶顯示測量溫度,如果溫度超限,通過P2.3~P2.6控制相應(yīng)的控溫設(shè)備并報警。
圖2 溫度控制系統(tǒng)電路原理
1.3DS18B20溫度傳感器采集模塊
DS18B20是Dallas半導體公司生產(chǎn)的數(shù)字化溫度傳感器,具有抗干擾性高、價格便宜、體積小、精度高、布線簡單等特點,它采用一線總線方式,即一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸。
DS18B20測量溫度范圍為-55~+125 °C,其測量分辨率為0.0625 °C。用戶可以在程序中設(shè)定9~12位的分辨率和報警溫度,它們存儲在EEPROM中,掉電也不丟失。電路設(shè)計時,將引腳VDD接5V電源,引腳GND接電源地,引腳DQ接4.7 kΩ的上拉電阻到單片機的I/O口即可,如圖3所示。
圖3 溫度傳感器模塊電路原理
1.4LCD1602液晶顯示模塊
LCD1602是點陣字符式液晶模塊,內(nèi)置有192種字符、數(shù)字、字母、標點符號等可顯示的字符點陣圖像庫,可顯示兩行,每行可顯示16個5*7點陣字符。LCD 1602帶有背光光源,并行接口,可直接與單片機I/O口相連。電路連接時,將第4引腳RS(數(shù)據(jù)/指令寄存器選擇端)、第5引腳R/W(讀寫選擇端)、第6引腳E(使能信號)分別接單片機的P2.0、P2.1、P2.2, 第7~14引腳DB0~ DB7(8位數(shù)據(jù)線)接單片機P0口,然后連接電源。
1.5其他模塊
輸入模塊采用4*4行列式按鍵,用來設(shè)定報警溫度的范圍,包含數(shù)字鍵0~9和上限設(shè)置、下限設(shè)置、返回等功能鍵,共16個按鍵。蜂鳴器報警模塊采用三極管驅(qū)動蜂鳴器,接單片機的P2.3,當溫度超出設(shè)定范圍時,蜂鳴器報警。升溫設(shè)備采用LED燈模擬,接單片機的P2.6,LED點亮表示升溫設(shè)備工作,LED熄滅表示升溫設(shè)備停止工作。降溫設(shè)備采用L298驅(qū)動直流電機轉(zhuǎn)動達到降溫效果,連接單片機的P2.4和P2.5。
硬件接好后,啟動MedWin3.0單片機集成開發(fā)環(huán)境,采用C51語言編寫系統(tǒng)程序,編譯并排除錯誤,直至無誤,生產(chǎn).hex文件,加載到51單片機芯片中,就可以看到溫控系統(tǒng)的仿真效果。軟件程序主要完成溫度的讀取、轉(zhuǎn)換、顯示及比較功能,采用模塊化設(shè)計思路,包括系統(tǒng)初始化程序、溫度測量子程序、LCD1602液晶顯示子程序設(shè)計、4*4按鍵掃描子程序設(shè)計、中斷服務(wù)子程序、延時子程序等等,程序流程如圖4所示。
2.1DS18B20溫度測量子程序設(shè)計
由于DS18B20采用一線總線方式,因此,必須有嚴格的初始化時序、讀時序、寫時序,才能確保溫度信息傳輸?shù)臏蚀_性和完整性。測量溫度時,單片機先初始化DS18B20,單片機作為主設(shè)備,DS18B20作為從設(shè)備。首先由單片機發(fā)出復位脈沖,即不低于480 μs的低電平,然后釋放總線做好接收準備,DS18B20檢測到總線的上升沿,等待15~60 μs,發(fā)出60~240 μs的應(yīng)答脈沖,通知單片機已經(jīng)接在總線上。接著,單片機對DS18B20進行ROM操作命令、RAM操作命令,得到RAM中的2字節(jié)16位的溫度數(shù)據(jù)(低位在前,高位在后),再進行數(shù)值變換和量程變換,最終得到實際溫度。這16位的溫度數(shù)據(jù)中前5位是符號位,當為0時,表示測得的溫度高于零度,這時,16位溫度數(shù)據(jù)直接乘以0.0625得到實際溫度;當為1時,則表示溫度低于零度,須先將其取反加1再乘以0.0625。比如:+25.0625 °C的數(shù)字輸出是0191H,-25.0625 °C的數(shù)字輸出是FE6FH。其部分代碼設(shè)計如下所示:
圖4 溫度控制系統(tǒng)程序流程
void Read_wendu()
{ chushi_DS18B20(); //初始化
WriteChar(0xCC); //跳過ROM操作
WriteChar(0x44); //啟動溫度轉(zhuǎn)換
chushi_DS18B20();
WriteChar(0xCC);
WriteChar(0xBE); //讀取溫度
wl=ReadChar(); //溫度低位
wh=ReadChar(); //溫度高位
wh=wh*16;……}
……
2.2LCD1602液晶顯示子程序設(shè)計
在編程時,由于LCD1602液晶內(nèi)部已經(jīng)存儲了字符點陣圖形,在顯示字母、數(shù)字和符號時,寫入相應(yīng)的ASCII碼即可,例如:數(shù)字9的ASCII碼是0x39,小寫字母a的ASCII碼是0x61。當然,還需寫入地址信息,如在LCD1602屏幕的第一行、第二列顯示9,就要向DDRAM的地址01H,再加上80H,即81H寫入0x39。對于本次設(shè)計,1602液晶負責將要顯示的字符和溫度信息送到對應(yīng)的位置進行顯示。其部分代碼設(shè)計如下所示:
void Lcd_writecmd(uchar lcdcmd) //向LCD寫入命令,RS=0,RW=0,E=下降沿
{ Lcd_delay(60); //延時,不檢測忙信號
E=0;
RS=0; //指向指令
RW=0; //寫
_nop_(); //極短延時
LCD_DATE=lcdcmd; //lcdcmd指令內(nèi)容
…… }
void Lcd_display(uchar X,uchar Y,uchar dispbuf) //到指定的位置顯示字符
{ Y&=0x01; //限制行數(shù)y不能大于1
X&=0x0f; //限制1行字符數(shù)x不能大于15
if(Y==1) //如果在第二行則字符地址從0x40
X|=0x40;
X|=0x80; //設(shè)置地址指針
Lcd_writecmd(X); //寫地址碼
Lcd_writedata(dispbuf); //寫溫度數(shù)據(jù) }
……
2.34*4按鍵掃描子程序設(shè)計
當有鍵按下時,首先得到鍵值,再進行相關(guān)處理,其部分代碼設(shè)計如下所示:
uchar keydown()
{ uchar row,col,temp; //定義行,列和臨時變量
P1=0x0f; //使P1口輸出0x0f
col=P1; //讀回P1口的值
P1=0xf0; //P1口輸出0xf0
row=P1; //讀回P1口的值
temp=row|col; //合并P1口的值,計算出按鍵的具體位置
switch(temp) //采用選擇語句進行譯碼
{ case 0xee: return 0;break;
…… } }
void keyscan() //按鍵處理
{ uchar key;
key=keydown(); //得到鍵值
if(key!=17)
…… }
基于單片機的智能控溫技術(shù)在科學研究、工業(yè)、農(nóng)業(yè)生產(chǎn)中具有十分重要的價值,具有測量精度高,控制性能好,性價比高,線路簡單等優(yōu)點。同時運用Proteus虛擬仿真技術(shù),不僅可以提高單片機系統(tǒng)設(shè)計的效率,降低成本,縮短周期,而且對于單片機系統(tǒng)的教學演示和實際設(shè)計都具有很大的應(yīng)用價值。
[1]黃保瑞,賈之豪,邵婷婷. 基于AT89C51 單片機的溫度測控系統(tǒng)設(shè)計[J]. 現(xiàn)代電子技術(shù),2011(6):142-143.
[2]鄢夢林,孫威東,萬玉盼. 基于AT89S51單片機的溫度控制系統(tǒng)設(shè)計與實現(xiàn) [J]. 福建電腦,2013(10):10-11.
[3]王曉瑩,趙紅東.單片機溫度采集電路的設(shè)計與虛擬仿真[J]. 山西電子技術(shù),2009(5):21-23.
[4]高明青. 基于單片機的溫度測試系統(tǒng) [J].科技風,2014(20):55-56.
[5]宋全,謝頌華,王超,等. 基于單片機和DS18B20的溫度采集和分析系統(tǒng)[J]. 電子科技,2015(9):100-103.
[6]胡娜,田小明. 基于DS18B20的單片機控制測溫電路的設(shè)計及仿真[J]. 天津中德職業(yè)技術(shù)學院學報,2015(3):93-95.
[7]李毅,余少輝,周步洲. 基于DS18B20的測溫系統(tǒng)設(shè)計[J]. 電子技術(shù),2009(1):11-13.
[8]楊暾.單片機技術(shù)及應(yīng)用:基于Proteus仿真的C語言程序設(shè)計[M]. 北京:電子工業(yè)出版社,2013:80-84.
[9]徐愛鈞,徐陽. 單片機原理與應(yīng)用:基于Proteus虛擬仿真技術(shù)[M]. 北京:機械工業(yè)出版社,2013:121-125.
責任編輯王紅巖
Design and implementation of intelligent temperature control system based on single chip microcomputer
YANMin
(The Information Electronic Department, Yangzhou Business Branch of Jiangsu Union Technical Institute, Yangzhou225127, China)
Intelligent temperature control technology based on single chip microcomputer has been widely used in the field of scientific research, industrial production, agricultural production and daily life. This paper designs the intelligent temperature control system based on AT89C51, combining the system simulation in the Proteus simulation platform, using C51 language for system programming in the MedWin3.0 integrated development environment. This not only greatly improves the design efficiency of the single chip microcomputer system, reduces the design cost, shortens the development cycle, but also has great application value for teaching demonstration and actual design of the single chip computer system.
the 51 Single-chip Microcomputer; DS18B20; LCD1602; Proteus
2016-04-06
嚴敏(1982—),女,江蘇揚州人,講師,碩士研究生,研究方向:單片機系統(tǒng)開發(fā)。
10.13750/j.cnki.issn.1671-7880.2016.03.018
TP 29
A
1671-7880(2016)03-0061-04