张春来
安徽水利水电职业技术学院,安徽合肥,230601
单片机在电子产品中的应用越来越广泛,很多电子产品用到温度检测时都由单片机控制。温度传感器的种类有很多,其中DALLS公司生产的DS18 B20是一种数字温度传感器,它只需一个引脚即可读取数据,可以直接与单片机采用“单总线”的数据传输方式,具有接口简单,只占单片机一个I/O端口,无需任何外部器件就可读取温度[1]。
本系统由单片机芯片AT89C51、温度传感器DS18B20、时钟芯片DS1302、液晶显示屏160128LCD、直流电动机及报警器等构成,设计方案如图1所示。
图1 温度控制系统的设计方案
本控制器控制过程如下:用温度传感器DS18B20检测环境温度,并根据温度的高低来调节直流电动机的转速,当外部温度大于等于45℃时,直流电动机在L298驱动下加速正转(转速与温度成正比),当温度达到75℃并大于75℃时,直流电动机全速正转;当外部温度小于等于10℃时,加速反转(转速也与温度成正比),当温度小于等于0℃时,直流电动机全速反转;当温度介于10℃~45℃时,直流电动机逐渐停止工作[2]。液晶显示屏160128LCD主要显示时间、日期、测量温度及直流电机的工作状态。
本系统的核心控制部件是AT89C51单片机,AT89系列单片机由ATMEL公司生产,其中AT89C51是一种低功耗、高性能、内含4 K字节闪电存储器(Flash Memory)的8位CMOS微控制器。单片机工作的时间基准由时钟电路提供,单片机的XTAL1和XTAL2两个引脚间接一只晶振及两只电容,构成了单片机的时钟电路,其电容器C1和C2取值22 pF,石英晶体选择12 MHZ。
(1)GND:地信号,接地。
(2)DQ:数据输入/输出引脚,与AT89C51的P3.5相连。
(3)VDD:可选择的VDD引脚。
时钟芯片DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,工作电压为2.5~5.5 V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS18B20的引脚排列如下。
(1)RST:复位信号,与AT89C51的P1.2相连。(2)I/O:数据输入/输出引脚,与AT89C51的P1.0相连。(3)SCLK:串行时钟,与AT89C51的P1.1相连。(4)SCLK:X1、X2晶振引脚,接32.768 KHz晶振。
PG160128是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及格160×128全点阵液晶显示器组成。可完成图形显示,也可以显示点阵汉字。PG160128的引脚功能及与单片机的接口见表1。
表1 PG160128的引脚功能及与单片机的接口
51系列单片机无PWM输出功能,可采用定时器配合软件的方法输出。PWM脉冲驱动直流电机的电路如图2所示。直流电机通过L298直流电机驱动芯片驱动,电机的转向通过L298的引脚IN1、IN2来控制,电机的转速大小由PWM输出的调宽脉冲的占空比来决定[3]。AT89C51的引脚P2.4与L298的IN1相连,P2.5与L298的IN2相连,只要P2.4=1,P2.5=0,直流电机就正转;P2.4=0,P2.5=1,直流电机就反转;P2.4=0,P2.5=0,直流电机停止。
AT89C51单片机的P2.6引脚输出占空比不等的调宽脉冲,当检测到温度大于等于75℃或小于等于0℃时,直流电机全速转动,此时要求引脚P2.6=1,输出占空比为100%,电机转速方向通过L298直流电机驱动芯片的输入口IN1、IN2控制。当检测到温度大于等于45℃时,直流电机开始加速正转,加速转速与检测到的温度有关,假设检测到的温度为Temp≥45℃,此时的转速与(Temp-45)成正比,当Temp≥75℃,则全速,所以只要PWM输出占空比α=(Temp-45)/30,就可以实现此功能,当检测到温度Temp≤0℃,直流电机加速反转原理一样。本文中,通过单片机的T0定时器输出不同的占空比PWM信号,从而控制直流电机的不同转速。T0定时器设置如下[4]:TMOD=0x11,TH0=-50000/256,TL0=-50000%256,IE=0x82,TR0=1。
21世纪是信息技术迅速发展的时代。信息技术对社会各领域产生了巨大的影响,也在教育领域引发了一系列的变革。信息化教学在现代化教学理念的指导下,重视现代信息技术在教学中的作用,充分利用现代教育技术手段,调动多种教学媒体、信息资源,充分发挥学生的主动性、积极性和创造性,从而达到良好的教学效果。
图2 PWM脉冲驱动直流电机的电路
温度控制系统的硬件电路图如图3所示。
图3 温度控制系统的硬件电路图
(1)调用读取温度的子函数模块,测量环境温度。
(2)根据测量的环境温度,在T0的中断服务程序里控制直流电机的不同转向及转速。
(3)调用读取日期的子函数模块,把日期、星期、时间送到相应的数组DataTime[ ]里。
(4)调用液晶显示的子函数模块,把日期、星期、时间、温度等相关参数送到液晶显示屏上,每隔1 s刷新显示。
其主程序的流程图如图4所示,主程序如下:
图4 主程序流程图
Void main( )
{
LCD_Initialise( );
Read_Temerature( );
Delay(50000);
TMOD=0x11;
IE=0x82;
TH0=-50000/256;
TL0=-50000%256;
TR0=1;
Display_Str_xy(16,88,"当前温度:");
while(1);
}
设置定时器T0、T1两个中断子函数,其中T0的中断服务程序的功能如下:根据读取的温度Temp判断电机的运行;在T1的中断服务程序中,每隔1 s先读取温度值及时间值,再刷新液晶显示屏的内容,两个中断服务程序的的流程图如图5、图6所示。
图5 T0中断服务程序流程图
本文基于单片机AT89C51的工业生产温度控制系统,采用DS18B20数字温度传感器测量温度,在液晶显示屏上实时显示检测温度,并根据具体温度值控制直流电机不同的转速。该控制器具有结构简单、测量精度高等优点,可以应用于工业生产温度监控领域。
图6 T1中断服务程序流程图
参考文献:
[1]杨庆文,翠海.基于AT89C51单片机的温度控制系统[J].中国科技信息,2010,23(6):154-155
[2]彭伟.单片机C语言程序设计实训100例[M].北京:电子工业出版社,2009:299-301
[3]蓝厚荣.单片机的PWM控制技术[J].工业控制计算机,2010,23(3):97-98
[4]高卫东.51单片机原理与实践[M].北京:北京航空航天大学出版社,2011:203-209
[5]阎石.数字电子技术基础[M].北京:高等教育出版社,2006:105-109
[6]焦峰超.基于51单片机的小型温度测量系统[J].宿州学院学报,2008,23(2):104-106
[7]杨庆文.基于AT89C51单片机的温度控制系统[J].中国科技信息,2008,21(3):64-66
[8]李宁,汪日燕.利用单片机定时器实现信号采样和PWM控制[J].微型机与应用,2004,7:35-37