基于STC89C52单片机的温度检测系统设计
扫描二维码
随时随地手机看文章
摘要:为了检测现场温度,并直观反映其变化趋势,设计了基于STC89C52单片机的温度检测系统。利用数字温度传感器DS18B20采集温度信号,该信号送入STC89C52单片机处理,后由液晶显示器LCD12864(ST7920)显示温度值,并绘制出温度变化曲线。实测结果表明,系统可靠性、测试精度及温度趋势曲线绘制达到设计要求。
关键词:STC89C52单片机;DS18B20;LCD12864(ST7920);温度检测系统
0 引言
在某些检测领域将被测温度数字化显示还不足以完全反应其变化过程和变化规律,而绘制出趋势曲线是有效方法之一。其中一种解决方案是将单片机作为下位机采样现场温度,将其上传给PC机绘制曲线。有鉴于点阵型图形液晶显示器成本逐年降低、显示容量越来越大、工耗越来越小、而且可以方便地与单片机接口,本文设计了一种温度检测系统。利用DS18B20采集温度,LCD12864(ST7920)液晶显示器直接与STC8 9C52单片机接口,在LCD12864(ST7920)上显示被测温度和温度曲线。
1 系统组成
系统主要由单片机STC89C52,温度传感器DS18B20,点阵型液晶显示器LCD12864(ST7920),键盘电路和报警电路组成(如图1所示)。
STC89C52用于实现算法、是整个系统的主控核心;LCD12864用于显示实测温度、温度曲线、时间和日期等参数;DS18B20用于温度采集;键盘电路用于设定相关参数(上下限温度值、时间);报警电路用于温度超限报警。
2 主要硬件设计
2. 1 STC89C52单片机系统
STC89C52单片机系统由单片机,时钟电路,复位电路组成。单片机系统如图2所示。
STC89C52单片机具有抗干扰性能强、速度快、功耗低和指令代码完全兼容8051单片机等特点。其主要参数为:时钟频率最高可达80MHz;内置8 KB的FLASH ROM,512 B的RAM和2 KB的E2PROM;3个16位定时器/计数器,一个6向量2级中断结构。
STC89C52的P0口作为普通I/O口使用,与12864液晶显示器DB0~DB7数据口相连,根据P0口硬件特点在其外部必须接上上拉电阻。
时钟电路采用内部时钟方式,为单片机系统提供时钟信号。
复位电路采用上电自动复位和按键复位的方式,只要保证加到RST引脚的高电平持续时间大于2个机器周期就能使单片机正常复位。
2.2 DS18B20数字测温电路
测温电路的传感器选用DS18B20数字式温度传感器,它具有特点为:可通过编程的方式实现9~12位的数字温度直读;测温范围为-55~125℃,最高12位分辨率,精度可达±0.5℃;可设置超限温度报警,并有搜索命令识别报警条件;单总线接口,仅需一条输入输出线(DQ)就能与单片机(P2.0)进行通信。DS18B20数字测温电路如图3所示。
2.3 LCD12864显示电路
显示电路是人机交互的核心,本系统需同时显示实测温度、上限温度、温度曲线,时间和日期,信息量大,故选择点降图形液晶显示器LCD12864(ST7920)。
LCD12864(ST7920)具有特性为:4位/8位并行、2线或3线串行等多种接口方式;显示分辨率为128x64,内置8 192个16x16点汉字,和128个16×8点ASCII字符集;接口方式灵活、简单,可方便的构成中英文式人机交互图形界面。LCD12864与单片机接口电路如图4所示。
LCD12864(ST7920)由DDRAM(显示数据RAM,CGROM(字型产生ROM)和CGRAM(自定义字型产生RAM)和GDRAM(绘图RAM)等组成,实现显示字符和图形的功能。
DDRAM模块提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示HCGROM字型(半角)、CGRAM字型及CGROM的中文字型3种字型。液晶显示器屏幕坐标(AC地址)与DDRAM地址的对应关系如表1所示。
CGRAM模块提供4组16×16点的自定义图像空间,可以将内部字型没有提供的图像字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。
GDRAM提供64×32个字节的空间,实际可控制128×64点阵的二维绘图缓冲空间。GDRAM的二维地址与液晶屏幕坐标的对应关系如图5所示。
2.4 其他电路
2.4.1 报警电路
报警电路由PNP三极管(9012),蜂鸣器及单片机的控制引脚(P21)组成。当温度超限,P21引脚输出一定频率的信号,触发蜂鸣器工作从而实现报警。报警电路如图6所示。
2.4.2 键盘电路
键盘电路采用中断和查询相结合的方式设定温度和调整时间。系统由4个按键组成,分别对应温度/时间设定的功能选择,数字增加和减少的调节。当有键按下时,负跳变引起INT1中断,再查询具体按键,并执行相应功能。这种结构既扩充了外部中断源,减少了CPU的工作负担,又能对按键进行实时处理。键盘电路如图7所示。
2.4.3 电源电路
LM7805三端集成稳压器和滤波电容组成电源电路,为整个系统提供稳定的工作电压。电源电路如图8所示。
3 软件设计
主程序流程如图9所示。
3.1 液晶显示器函数
液晶显示器的读/写数据和数字/字符、温度显示、曲线绘制和时钟显示等功能由驱动函数和界面显示函数完成。
驱动函数包括:
界面显示函数包括:
3.2 温度采集函数
启动DS18B20温度转换和数据传输必须严格按照其时序进行,温度采集函数包括:
3.3 主函数
主函数包括初始化液晶显示器,定时/计数器等模块,而后调用温度采集,界面显示等函数。
每50 ms采样一次(即每50 ms调用上述温度采集函数),共采样6次,利用去极值平均值滤波法得到实测温度(采样的6个数据排序后去掉最大值和最小值再平均),显示实测温度,绘制曲线,并判断是否超限。
4 实验
系统实际运行结果如图10~图13所示。
左边显示包括:
(1)“12/06/21”为阳历日期,格式为年/月/日。
(2)“16:59:09”为数字时钟,格式为小时:分钟:秒。
(3)“S:30℃”代表设定的上限温度;“<”,“=”,“>”代表上限温度与实测温度的大小关系。
(4)“46.84℃”,“26.35℃”,“31.23℃”,“40.99℃”等代表实测温度。
图中右边为温度曲线和上限温度线。
时间和温度上限值可通过程序或键盘设定。
实测温度的误差范围(单位:℃)在(-0.5~0.5)/100内,绘制的温度曲线能够直观地反映其变化情况。
5 结论
利用点阵型液晶显示器和单片机直接接口显示被测温度和绘制曲线,可以更直观地反映其变化趋势,为后续研究其变化规律奠定基础。实际运行表明,系统测试精度、曲线绘制、超限报警等功能达到设计要求,整个电路简单实用,稳定可靠。