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