华侨大学信息学院 周 鹏
基于STC89C52单片机的多功能数字测温仪设计
华侨大学信息学院 周 鹏
设计了由STC89C52单片机,DS1820温度传感器,LCD12864(ST7920)液晶显示器组成的多功能数字测温仪,详细介绍了在LCD12864上显示温度,时间,日期等功能的原理和算法。
STC89C52;DS1820;LCD12864
要求设计一款基于单片机的多功能数字测温仪,主要功能包括数字温度显示、设置温度上下限值,并能超限报警;时钟显示(数字和指针),日期显示。
系统主要由STC89C52单片机,DS18B20温度传感器,键盘电路,LCD12864显示器和报警电路组成(如图1所示)。
STC89C52单片机用于实现算法、是整个系统的主控核心;LCD12864用于显示温度、时间和日期等参数;DS18B20数字温度传感器用于温度采集;键盘电路用于设定相关参数(上下限温度值、时间);报警电路用于温度超限提示。
STC89C52RC单片机系统(如图2)由单片机,时钟电路,复位电路,电源电路组成。
STC89C52单片机具有抗干扰性能强、速度快、功耗低和指令代码完全兼容8051单片机等特点。其主要参数为[1]:时钟频率最高可达80MHz;内置8K字节的Flash-ROM,512字节的RAM和2K字节的E2PROM;3个16位定时器/计数器,一个6向量2级中断结构。
STC89C52的P0口作为普通I/O口使用,与12864液晶显示器DB0~DB7数据口相连,根据P0口硬件特点在其外部须接上上拉电阻。
时钟电路采用内部时钟方式,为单片机系统提供时钟信号。
测温电路的传感器选用DS18B20数字式温度传感器(如图3),它具有以下特点[3]:(1)可通过编程的方式实现9-12位的数字温度直读。(2)测温范围为-55~+125,最高12位分辨率,精度可达± 0 .5。(3)可设置超限温度报警,并有搜索命令识别报警条件。(4)单总线接口,仅需一条输入输出线(DQ)就能与单片机(P2.0)进行通信。
系统需同时显示实测温度、数字式和指针式时间,显示信息量大,故选择LCD12864(ST7920)点阵图形液晶显示屏(与单片机接口如图4,其主要引脚功能表如表1)。
LCD12864(ST7920)具有以下特性[4]:(1)4位/8位并行、2线或3线串行等多种接口方式。(2)显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。(3)接口方式灵活、简单,可方便的构成中英文式人机交互图形界面。
图1 系统组成框图
图2 STC89C52单片机系统
LCD12864(ST7920)由DDRAM(显示数据RAM),CGROM(字型产生ROM)和CGRAM(自定义字型产生RAM)和GDRAM(绘图RAM)等组成,实现显示字符和图形的功能。
DDRAM模块提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示半角英数字型(16*8)、CGRAM字型及CGROM的中文字型三种字型。液晶显示器屏幕坐标(AC地址)与DDRAM地址的对应关系如表2。
CGRAM模块提供四组16×16点的自定义图象空间,可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。
GDRAM提供64*32个字节的空间,实际可控制128*64点阵的二维绘图缓冲空间。GDRAM的二维地址与液晶显示器屏幕坐标关系如图5所示。
3.4.1 报警电路
在小说语言中,“士”字出现11次,值得注意的是这样几个特殊用法:太子丹以“勇士”指称所奉养的门客;田光褒扬太子有“仁爱之风”故以“天下之士”而誉之;荆轲与太子说起“烈士之节”,又在易水送别时唱起“壮士一去兮不复还”。作品中,所谓“勇士”“天下之士”“烈士”“壮士”,均非一般的士,更非普通门客,而是那种具有为信义和公理而把生命置之度外的精神气概的特殊的士。这些特殊的士,除了太子丹、田光、荆轲之外,还应包括“当车前刎颈以送”的夏扶、为除“积忿之怒”而自刭的樊于期。若以“士志于道”来衡定,概之以“志士”可也。
报警电路由PNP三极管(9012),蜂鸣器及单片机的控制引脚(P21)组成。当温度超限,P21引脚输出一定频率的信号,触发蜂鸣器工作从而实现报警。报警电路如图5.1。
3.4.2 键盘电路
键盘电路采用中断和查询相结合的方式设定温度和调整时间。系统由四个按键组成,分别对应温度/时间设定的功能选择,数字增加和减少的调节。当有键按下时,负跳变引起外部中断1中断后,再查询具体按键,并执行相应功能。这种结构既扩充了外部中断源,减少了CPU的工作负担,又能对按键进行实时处理。键盘电路如图5.2。
图3 DS18B20数字测温电路
图4 LCD12864显示电路
图5 DS18B20数字测温电路
图5.1 报警电路
LM7805三端集成稳压器和滤波电容组成电源电路,为整个系统提供稳定的工作电压。电源电路如图5.3。
主程序流程如图6所示。
液晶显示器的驱动函数和界面显示函数实现读/写数据和数字/字符、指针式时钟显示等功能。
驱动函数包括:
图5.2 键盘电路
图5.3 稳压电路
图6 系统流程图
图7 系统实际运行图片
启动DS18B20温度转换和数据传输必须严格按照其时序进行,温度采集函数包括:
系统实际运行结果如图7。
表1 LCD12864主要引脚功能表
表2 LCD12864主要引脚功能表
图片中,阳历日期的格式为年/月/日。
数字时钟的格式为小时:分钟:秒。
指针时钟的圆心以GDRAM模式坐标(0,0)为起点,坐标是(96,32),时钟半径为31;秒针,分针,时针以实际时钟方式运行。
时间和温度上限值可通过程序/键盘设定。
经过实际运行,系统的测温、时钟显示、超显报警等功能达到设计要求,整个电路简单实用,稳定可靠。
[1]http://www.mcu-memory.com/index.htm.
[2]张毅刚,彭喜元.单片机原理与应用设计[M].北京:电子工业出版社,2010.
[3]http://cn.alldatasheet.com/view.jsp?Searchword=DS18B20.
[4]http://www.ceet.hbnu.edu.cn/bbs/viewthread.php?tid=7679.
周鹏(1972—),男,重庆人,华侨大学信息学院电气系讲师,主要研究方向:智能测控系统。