1、摘要摘要 在寒假期间我用一周时间完成了这个液晶万年历,它可以显示年月日、时分 秒、以及温度(可上下限报警) ,可以对时间进行加一或减一调整,并加入了闰、 平年时间调整,方便可行,已经调试成功。考虑到成本和方便,本作品采用了 STC89c52 和 DS18B20,计时用的是 51 单片机自带的十六位定时器/计数器 T0, 尽管对时间进行了误差调整但是还是有一定的误差,考虑到学校后改用 DS1302 时钟芯片,进一步减小误差。温度显示精度达到 0.1 摄氏度。 关键词:关键词: 单片机单片机 DS18B20 DS18B20 万年历万年历 温度温度 1.1. 硬件工作介绍硬件工作介绍 (1)上电自动
2、复位及手动复位电路 STC89c52 单片机的 RST 端外部复位有两种操作方式:上电自动复位和按键手 动复位。本设计用上电自动复位以及手动复位下结合的方式外接电路(见附图) 。 (2)时钟振荡电路 作品中采用 12M 晶振,其连接方法如图所示,其中电容的值都为 22pF。 (3)1602 液晶显示接口 1602 采用标准的 16 脚接口(见附图) ,其中: 第 1 脚:GND 为地电源 第 2 脚:VCC 接 5V 正电源 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时 对比度最高,对比度过高时会产生“鬼影” ,使用时可以通过一个 10K 的电位器 调整对比度
3、第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存 器。 第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 RW 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 RW 为高电平 时可以读忙信号,当 RS 为高电平 RW 为低电平时可以写入数据。 第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 714 脚:D0D7 为 8 位双向数据线。 第 15 脚:VCC 第 16:GND (4)键盘 键盘是通过 S3(P3.2),S4(p3.3),S5(p3.4)对时钟进行调整,其 S3 选择要
4、调 整的对象如时,分,日,月等等,并在液晶屏上显示所选的对象。S4 对所选中 的对象进行加一调整,而 S5 对所选对象进行减一调整。 (5)蜂鸣器 对温度进行测量,高低温超限报警,正常温度在 15.0-36.0 摄氏度,超过最 高或低于最低温度就会鸣叫报警。 2. 软件工作介绍软件工作介绍 由于 C 语言功能丰富,表达能力和可移植能力强,而且操作方便,简单易懂, 因此软件部分由 C 语言编写,程序的重点和难点是闰月的时间调整以及键盘对时 间的调整, 本程序还不是太完善, 温度显示有规律性的微微闪烁, 恳请老师指正。 否 否 是 是 是 否 否 是 是 是 主程序流程图 LCD 初始化 开始 T0 初始化 时间、温度显示 S3 按下否? S4 按下否? S5 按下否? N 加一,选择调 整对象 时间加一 时间减一 N=6 否? 到最大值否? 到最小值否? N 清零 时间清零 时间清零 设计总结设计总结 在制作的