基于单片机的智能温控系统的设计与实现
2016-10-11严敏
严 敏
(江苏联合职业技术学院扬州商务分院 信息电子系,江苏 扬州 225127)
基于单片机的智能温控系统的设计与实现
严敏
(江苏联合职业技术学院扬州商务分院 信息电子系,江苏扬州225127)
基于单片机的智能控温技术在科学研究、工农业生产、日常生活的很多领域得到了广泛的应用。本文设计了以AT89C51单片机为核心的智能温度控制系统,并结合Proteus仿真平台进行了系统仿真研究,在MedWin3.0集成开发环境中采用C51语言进行系统程序设计。这不仅提高了单片机系统设计的效率,降低了成本,缩短了周期,而且对于单片机系统的教学演示和实际设计都具有很大的应用价值。
51单片机; DS18B20; LCD1602; Proteus
温度控制在科学研究和工农业生产、日常生活的很多领域得到了广泛应用,本文设计了以AT89C51单片机为核心的智能温度控制系统,并结合Proteus仿真平台进行了系统仿真研究,在MedWin3.0集成开发环境中采用C51语言进行系统程序设计。本设计具有电路简单、成本低廉、测量精准和方便实物制作等优点。
1 系统硬件设计
1.1设计总体结构
对于本次温控系统设计中,主要包括AT89C51单片机、DS18B20温度传感器采集模块、LCD1602液晶显示模块、4*4按键模块以及蜂鸣器报警模块、控温设备等组成。其设计总体结构如图1所示。
图1 温度控制系统总体结构
AT89C51单片机作为主控制器,4*4行列式按键用来设定温度的上限值和下限值,通过数字温度传感器DS18B20实时采集周边环境温度信息,经过单片机处理后送液晶LCD1602显示,并与设定值进行比较,当测量的温度不在设定的温度范围时,蜂鸣器报警并启动相应的控温设备工作,具体来说,当测量温度小于等于设定下限时,蜂鸣器报警,升温设备工作;当测量温度大于等于设定上限时,蜂鸣器报警,降温设备工作。
1.2单片机主控模块
作为智能温度控制系统的核心,单片机控制着环境温度信息的采集、温度范围的设置、温度的显示、温度的报警等任务。
本次设计使用Atmel公司生产的AT89C51单片机芯片,它和Intel公司的8051系列单片机的指令系统和引脚完全兼容。共40个引脚,内部包含四个可编程的8位并行I/O口(P0口、P1口、P2口、P3口),一个全双工串行接口,两个16位的可编程定时/计数器,128字节的随机存储器和4K字节Flash工艺的只读存储器,这种工艺使得用户可以极为方便地使用电的方式瞬间重新擦除和改写。在AT89C51的外围添加时钟电路、电源电路和复位电路就可以构成单片机最小系统。
在Proteus中设计系统硬件电路图,如图2所示。按键通过P1口设置温度的上下限值,温度传感器接P2.7,采集温度信息,送单片机处理之后输出到P0口,通过液晶显示测量温度,如果温度超限,通过P2.3~P2.6控制相应的控温设备并报警。
图2 温度控制系统电路原理
1.3DS18B20温度传感器采集模块
DS18B20是Dallas半导体公司生产的数字化温度传感器,具有抗干扰性高、价格便宜、体积小、精度高、布线简单等特点,它采用一线总线方式,即一根数据线实现数据的双向传输。
DS18B20测量温度范围为-55~+125 °C,其测量分辨率为0.0625 °C。用户可以在程序中设定9~12位的分辨率和报警温度,它们存储在EEPROM中,掉电也不丢失。电路设计时,将引脚VDD接5V电源,引脚GND接电源地,引脚DQ接4.7 kΩ的上拉电阻到单片机的I/O口即可,如图3所示。
图3 温度传感器模块电路原理
1.4LCD1602液晶显示模块
LCD1602是点阵字符式液晶模块,内置有192种字符、数字、字母、标点符号等可显示的字符点阵图像库,可显示两行,每行可显示16个5*7点阵字符。LCD 1602带有背光光源,并行接口,可直接与单片机I/O口相连。电路连接时,将第4引脚RS(数据/指令寄存器选择端)、第5引脚R/W(读写选择端)、第6引脚E(使能信号)分别接单片机的P2.0、P2.1、P2.2, 第7~14引脚DB0~ DB7(8位数据线)接单片机P0口,然后连接电源。
1.5其他模块
输入模块采用4*4行列式按键,用来设定报警温度的范围,包含数字键0~9和上限设置、下限设置、返回等功能键,共16个按键。蜂鸣器报警模块采用三极管驱动蜂鸣器,接单片机的P2.3,当温度超出设定范围时,蜂鸣器报警。升温设备采用LED灯模拟,接单片机的P2.6,LED点亮表示升温设备工作,LED熄灭表示升温设备停止工作。降温设备采用L298驱动直流电机转动达到降温效果,连接单片机的P2.4和P2.5。
2 系统软件设计
硬件接好后,启动MedWin3.0单片机集成开发环境,采用C51语言编写系统程序,编译并排除错误,直至无误,生产.hex文件,加载到51单片机芯片中,就可以看到温控系统的仿真效果。软件程序主要完成温度的读取、转换、显示及比较功能,采用模块化设计思路,包括系统初始化程序、温度测量子程序、LCD1602液晶显示子程序设计、4*4按键扫描子程序设计、中断服务子程序、延时子程序等等,程序流程如图4所示。
2.1DS18B20温度测量子程序设计
由于DS18B20采用一线总线方式,因此,必须有严格的初始化时序、读时序、写时序,才能确保温度信息传输的准确性和完整性。测量温度时,单片机先初始化DS18B20,单片机作为主设备,DS18B20作为从设备。首先由单片机发出复位脉冲,即不低于480 μs的低电平,然后释放总线做好接收准备,DS18B20检测到总线的上升沿,等待15~60 μs,发出60~240 μs的应答脉冲,通知单片机已经接在总线上。接着,单片机对DS18B20进行ROM操作命令、RAM操作命令,得到RAM中的2字节16位的温度数据(低位在前,高位在后),再进行数值变换和量程变换,最终得到实际温度。这16位的温度数据中前5位是符号位,当为0时,表示测得的温度高于零度,这时,16位温度数据直接乘以0.0625得到实际温度;当为1时,则表示温度低于零度,须先将其取反加1再乘以0.0625。比如:+25.0625 °C的数字输出是0191H,-25.0625 °C的数字输出是FE6FH。其部分代码设计如下所示:
图4 温度控制系统程序流程
void Read_wendu()
{ chushi_DS18B20(); //初始化
WriteChar(0xCC); //跳过ROM操作
WriteChar(0x44); //启动温度转换
chushi_DS18B20();
WriteChar(0xCC);
WriteChar(0xBE); //读取温度
wl=ReadChar(); //温度低位
wh=ReadChar(); //温度高位
wh=wh*16;……}
……
2.2LCD1602液晶显示子程序设计
在编程时,由于LCD1602液晶内部已经存储了字符点阵图形,在显示字母、数字和符号时,写入相应的ASCII码即可,例如:数字9的ASCII码是0x39,小写字母a的ASCII码是0x61。当然,还需写入地址信息,如在LCD1602屏幕的第一行、第二列显示9,就要向DDRAM的地址01H,再加上80H,即81H写入0x39。对于本次设计,1602液晶负责将要显示的字符和温度信息送到对应的位置进行显示。其部分代码设计如下所示:
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指令内容
…… }
void Lcd_display(uchar X,uchar Y,uchar dispbuf) //到指定的位置显示字符
{ Y&=0x01; //限制行数y不能大于1
X&=0x0f; //限制1行字符数x不能大于15
if(Y==1) //如果在第二行则字符地址从0x40
X|=0x40;
X|=0x80; //设置地址指针
Lcd_writecmd(X); //写地址码
Lcd_writedata(dispbuf); //写温度数据 }
……
2.34*4按键扫描子程序设计
当有键按下时,首先得到键值,再进行相关处理,其部分代码设计如下所示:
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)
…… }
3 结语
基于单片机的智能控温技术在科学研究、工业、农业生产中具有十分重要的价值,具有测量精度高,控制性能好,性价比高,线路简单等优点。同时运用Proteus虚拟仿真技术,不仅可以提高单片机系统设计的效率,降低成本,缩短周期,而且对于单片机系统的教学演示和实际设计都具有很大的应用价值。
[1]黄保瑞,贾之豪,邵婷婷. 基于AT89C51 单片机的温度测控系统设计[J]. 现代电子技术,2011(6):142-143.
[2]鄢梦林,孙威东,万玉盼. 基于AT89S51单片机的温度控制系统设计与实现 [J]. 福建电脑,2013(10):10-11.
[3]王晓莹,赵红东.单片机温度采集电路的设计与虚拟仿真[J]. 山西电子技术,2009(5):21-23.
[4]高明青. 基于单片机的温度测试系统 [J].科技风,2014(20):55-56.
[5]宋全,谢颂华,王超,等. 基于单片机和DS18B20的温度采集和分析系统[J]. 电子科技,2015(9):100-103.
[6]胡娜,田小明. 基于DS18B20的单片机控制测温电路的设计及仿真[J]. 天津中德职业技术学院学报,2015(3):93-95.
[7]李毅,余少辉,周步洲. 基于DS18B20的测温系统设计[J]. 电子技术,2009(1):11-13.
[8]杨暾.单片机技术及应用:基于Proteus仿真的C语言程序设计[M]. 北京:电子工业出版社,2013:80-84.
[9]徐爱钧,徐阳. 单片机原理与应用:基于Proteus虚拟仿真技术[M]. 北京:机械工业出版社,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—),女,江苏扬州人,讲师,硕士研究生,研究方向:单片机系统开发。
10.13750/j.cnki.issn.1671-7880.2016.03.018
TP 29
A
1671-7880(2016)03-0061-04