LCD时钟温度计的设计.docx
《LCD时钟温度计的设计.docx》由会员分享,可在线阅读,更多相关《LCD时钟温度计的设计.docx(17页珍藏版)》请在冰豆网上搜索。
LCD时钟温度计的设计
LCD时钟温度计的设计
[摘要]
我们设计的LCD时钟温度系统是由中央控制器、温度检测器、时钟系统、存储器、显示器及键盘部分组成。
控制器采用单片机W78E516B,温度检测部分采用DS18B20温度传感器,时钟系统用时钟芯片DS1302,用LCD液晶12232F作为显示器,用AT24C16作为存储器件。
单片机通过时钟芯片DS1302获取时间数据,对数据处理后显示时间;温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;单片机再把时间数据和温度数据送液晶显示器12232F显示,12232F还可以显示汉字;键盘是用来调时和温度查询的。
[关键字]:
单片机汇编语言查表LCD液晶DS18B20AT24C16
1.1方案设计与论证
按照系统的设计功能要求,本时钟温度系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制时钟、温度的存储和查询及显示。
初步确定设计系统由单片机主控模块、时钟模块、测温模块、存储模块、显示模块、键盘接口模块共6个模块组成,电路系统框图如图
(1)所示。
对于单片机的选择,如果用8031系列,由于它没有内部RAM,系统又需要大量内存存储数据,因而不可用;51系列单片机的ROM为4K,对于我们设计的系统可能有点小,这里我们用W78E516B,它与AT89C52单片机产品兼容,有8K字节在系统可编程Flash存储器W78E516B是一种低功耗、高性能CMOS8位微控制器。
时钟功能的实现有两种方案:
一是用软件实现,直接用单片机的定时器编程以实现时钟;二是用专门的时钟芯片实现时钟的记时,再把时间数据送入单片机,由单片机控制显示。
比较两种方案,用软件实现时钟固然可以,但是程序运行的每一步都需要时间,多一步或少一步程序都会影响记时的准确度,用专用时钟芯片可以实现准确记时。
选二方案。
时钟和温度的显示可以用数码管,但是数码管的只能显示简单的数字,我们设计的系统有很多东西需要显示,还是用显示功能更好的液晶显示器比较好,它能显示更多的数据,用可以显示汉字的液晶显示器还可以增加显示信息的可读性,让人看起来会很方便。
1.2系统硬件电路的设计
根据方案的选择,系统由W78E516B、时钟芯片DS1302、AT24C16存储电路、液晶显示电路、键扫描电路组成。
其各功能模块如下:
1.2.1复位电路
上电复位采用电平方式开关复位。
如图
(2)所示。
上电复位用RC电路,电容用20
F,电阻用10K
。
1.2.2晶振电路
单片机的晶振频率应低于40MHZ,所以我们采用12MHZ,加两个30
F电容。
图(3)所示。
图
(2)图(3)
1.2.3液晶显示电路设计
显示电路采用12232F液晶显示器。
12232F是一种内置8192个16*16点汉字库和128个16*8点ASCII字符集图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×32全点阵液晶显示器组成。
可完成图形显示,也可以显示7.5×2个(16×16点阵)汉字.与外部CPU接口采用串行方式控制。
主要技术参数和性能:
1.电源:
VDD:
+3.0∽+5.5V。
(电源低于4.0伏LED背光需另外供电)
2.显示内容:
122(列)×32(行)点。
3.全屏幕点阵。
4.2MROM(CGROM)总共提供8192个汉字(16×16点阵)。
5.16KROM(HCGROM)总共提供128个字符(16×8点阵)。
6.2MHZ频率。
7.工作温度:
0℃∽+60℃,存储温度:
-20℃∽+70℃
1.2.4温度传感器设计
由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。
而DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
电路图如图(4)所示。
图(4)
DS18B20的性能特点如下:
(1)独特的单线接口仅需要一个端口引脚进行通信;
(2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
(3)无须外部器件;
(4)可通过数据线供电,电压范围为3.0~5.5V;
(5)零待机功耗;
(6)温度以9或12位数字量读书;
(7)用户可定义的非易失性温度报警设置;
(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8个字节的存储器,结构如图4.1所示。
头两个字节包含测得的温度信息,第三和第四字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第五个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义如图4.2所示。
低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
1.2.5存储电路
存储电路采用ATMEL公司生产的AT24C16(图(5)所示),具有16KB的存储空间。
其管脚接法是1、2、3、4接地,5、6分别接单片机的端口,7、8接5V电源。
图(5)
1.2.6时钟模块的设计
我们采用DS1302作为主要计时芯片,主要为了提高计时精度,更重要的就是DS1302可以在很小的后备电源下继续计时,并可编程选择充电电流来对后备电源进行充电,可以保证后备电源基本不耗电。
电路图如图(6)所示。
图(6)
1.2.7键盘接口的设计
由于按键只有4个,分别实现为时间调整、时间的加减、查询温度。
用查询法完成读键功能。
系统原理图:
单片机W78E516B是本系统的核心部分,它控制着数据显示、温度检测存储数据等功能。
根据以上各功能模块得到应用电路总原理图。
1.3软件系统的设计
1.3.1主程序
系统主程序首先对系统进行初始化,包括设置定时器、中断和端口;然后显示开机画面。
由于单片机没有停止指令,所以可以设计系统程序不断地循环执行上述显示效果。
下图是系统的流程图。
图1.3.2
1.3.2时间显示程序
我们采用了时钟芯片DS1302,所以只需从DS1302各寄存器中读出小时、分钟、秒,再处理即可。
在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读取数据,再经过处理后,送给显示缓冲单元。
流程图见图1.3.2。
1.3.3时间调整程序设计
调整时间用3个调整按钮,1个做为移位控制用,另外两个做为加减用,分别定义控制按钮、加按钮、减按钮。
在调整时间过程中,要调整的那位与别的位应该有区别,所以增加了闪烁功能,即调整的那位一直在闪烁直到调整下一位。
闪烁原理就是让要调整的那一位,每隔一定时间熄灭一次,比如说50MS。
利用定时器计时,当达到50MS溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束,此时送正常显示值给该位,再进入下一位调整闪烁程序,时间调整程序程序流程图如图1.3.3。
1.3.4读取温度子程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次,流程图如图1.3.4。
读出温度子程序的主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图1.3.5。
1.3.5温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750毫秒,在本程序设计中采用1秒显示程序延时法等待转换的完成。
1.3.6计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图1.3.6。
1.3.7显示数据刷新子程序
显示数据刷新子程序主要时对显示缓冲器中的显示数据进行刷新操作,当最高显示位为零时将符号显示位移入下一位。
程序流程图如图1.3.7。
1.3.8温度数据的计算处理方法
从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。
因为DS18B20的转换精度为9-12位可选的,为了提高精度采用12位。
在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。
下表就是二进制和十进制的近似对应关系表。
表1小数部分二进制和十进制的近似对应关系表
小数部分二进制值
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
十进制值
0
0
1
1
2
3
3
4
5
5
6
6
7
8
8
9
N
Y
N
Y
N
YN
Y
N
YN
Y
Y
图1.3.8
1.4.7温度值存储子程序
根据要求,系统要存储某几个时间点的温度,在时钟到达这几个时间点时,通过软件判断,把此时的温度数据读到单片机内存,再通过24C16的读写程序把温度数据存储到24C16对应地址单元,这样温度数据就储存起来了。
程序流程图见图1.3.8。
1.4.8查询子程序
根据实际要求将某一天某一个时间的具体温度值可进行查看,以及当天温度的最高、最低温度(可查询10天)。
通过按钮确定要显示第几天的温度值,把温度值读到单片机内存,发命令给24C16的读写程序,查找对应的地址单元,把地址单元内容读取出来。
程序流程图见图1.3.9。
图1.3.9
1.4测试方法与实验数据
1.4.1测试仪器
万用表、温度计、51系列仿真器
1.4.2硬件调试
1.硬件调试时,可先检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。
然后用万用表测试或通电检测,检查无误后,可通电检查LCD液晶显示器亮度情况,一般情况下取背光电压为4~5.5V即可得到满意的效果。
2.DS1302与单片机相连的只有3根线,很容易检查,主要检查DS1302管脚与晶振、电源是否连接好。
3.DS18B20在测温程序设计中,向DS18B20发温度命令转换后,程序要等待DS18B20的返回信号,一旦线路不好或断线,将陷入死循环,所以线路一定要检查清楚。
1.4.3软件调试
软件调试是在MedWin编译器下进行,源程序编译及仿真调试应分段或以子程序为单位逐个进行,最后结合硬件实时调试。
子程序调试包括:
1.DS1302的计时和读写程序、显示程序;
2.AT24C16读写程序;
3.DS18B20读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序。
本系统需用微机的“超级终端”进行控制。
调试单片机系统前,先将微机的超级终端的波特率设为19200,通信口设在COM1,数据位设在8,奇偶校验位设为无,停止位设为1,流量控制设为无。
然后进行烧入单片机。
1.4.3实验数据
根据烧好的程序进行端口
1.5测试结果分析
1.由于采用了DS1302作为计时器使用,其计时精度相对来说比较高。
用制作的成品与万年历计时比较,基本没有误差。
2.由于DS18B20的误差指标在0.1oC以内,在一般场合完全适用。
3.根据实验要求记录并显示某些时间的温度值及一天当中的最高、最低温度。
经测试,AT24C16能存储十天内的所有要求的数据。