1、电子万年历的设计与仿真摘要:在当代社会繁忙的工作与生活中,时间与我们每一个人都密切相关,每个人都受到时间的影响,为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。为了在观测时间的同时能够了解其他与人类密不可分的信息,比如温度、星期、日期等,电子万年历诞生了,它集时间、日期、星期于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 该电子万年历以单片机 STC89C52 为主控制核心,通过单片机控制时钟芯片 DS12C887 实现时间的读
2、取;温度传感器 DS18B20 实现温度的采集;蜂鸣器实现闹钟的报时;液晶 LCD1602 实现时间、星期和温度的显示;独立式按键实现时间和闹铃时间的调整。文章主要介绍了该电子万年历的电路设计和软件设计。 关键词:单片机;万年历;DS12C887;DS18B20;液晶 LCD1602 中图分类号:F407.63 文献标识码:A 文章编号: 引言: 电子万年历设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。 1 方案的总体设计和论证 1.1
3、 方案的总体设计 本设计采用 STC89C52 单片机作为主控制模块,芯片 DS12C887 作为时钟模块,DS18B20 作为温度采集模块,LCD1602 作为液晶显示模块,以及 4 个独立式按键,所组成的整体的电子万年历电路。 图 2-1 系统设计框图 该设计的主要特点是: 功能多,能实现年、月、日、星期、时、分、秒、温度的直观显示,而且通过按键能够对时间进行调整。 功耗低,只需要 3 节串联的干电池对其进行供电,就能驱动它正常工作很长一段时间。 实现闹钟定时功能,当时钟时间与设置好的闹铃时间一致时,蜂鸣器发出闹铃音,这是按下任意按键,可终止闹铃。 1.2 方案的设计和论证 1.2.1 时
4、钟模块 方案一:不使用芯片,直接使用单片机的定时计数器 利用单片机芯片的定时计数器提供秒信号,实现年、月、日、时、 分、秒的计数。 此方法可以省去一些外围的芯片,可以节约成本,但这种方法实现的时间误差较大,只适用于一些要求不是十分精确,不做长期保留的场合。 1.2.2 按键调整模块 方案一: 矩阵键盘 编程复杂,但是节省 IO 口。 不过,目前该方面资料很好查找,所以超过 6 个以上按键推荐用矩阵方式。 综上,选用独立键盘。 采用 4 个独立式按键,一个 I/O 口接一个按键。当电路所需要的按键较少时,可以采用独立式按键,控制程序也较简单,分别实现时间调整,加,减,闹钟时间的设置。 图 2-3
5、 轻触开关 1.2.3 显示模块 方案一:LCD12864 LCD12864 作为液晶显示最大的特点就是能够实现友好的人机界面, 可显示汉字及图形,内置 8192 个中文汉字(16X16 点阵) 、128 个字符(8X16 点阵)及 64X256 点阵显示 RAM(GDRAM) ,但 12864 体积大,引脚多,不利于仿真界面的显示,且本制作不需要显示汉字,故舍弃。 2 硬件电路设计 2.1 电子万年历概述及原理图 硬件电路设计主要由 STC89C52 单片机,DS12C887 时钟芯片,DS18B20 温度传感器,LCD1602 液晶显示屏,蜂鸣器以及 4 个独立式按键组成。 2.2 主控制
6、模块 单片机最小系主要由晶振电路和复位电路组成。任何复杂的单片机糸统,都是在单片机最小系统这个基础上通过添加模块设计出来的。 2.2.1 复位电路 单片机的引脚 9 是复位端。单片机糸统在刚上电时,或者是发生故障后,都要进行复位。本设计采用的复位电路,是如图 3-2 所示的按键手动复位电路。单片机复位的条件是:必须使引脚 9 上持续两个机器周期(即 24 个振荡周期)以上的高电平。 2.2.2 外部访问允许端 单片机的引脚 31,决定是访问内部存储器还是外部存储器。 2.3 时钟模块 1 器件特性 由于 DS12C887 能够自动产生世纪、 年、月、日、时、分、秒等时间信息,其内 部又增加了世
7、纪寄存器,从而利用硬件电路 解决子“千年”问题;DS12C887 中自带有锂电 池,外部掉电时,其内部时间信息还能够保 持 10 年之久;对于一天内的时间记录,有 12 小时制和 24 小时制两种模式。 图 3-3 DS12C887 和单片机的硬件连接电路图 2.4 蜂鸣器闹钟模块 图 3-11 蜂鸣器电路图 当 P37 为低电平时,这时蜂鸣器工作,当 P37 为高电平时,这时蜂鸣器停止工作,通过改变 P37 口,高低电平的时间,来改变蜂鸣器的发声音调。 3 系统软件设计 3.1 软件的总体流程图 本设计所有的程序都是在 Keil C 环境下,用 C 语言完成编写和调试的。对 DS1302 的
8、时间读取程序,对 DS18B20 的温度读取程序,对按键的时间调整程序,对 LCD1602 的显示时间和温度程序,都写成模块的形式,方便调用和调试。 3.2 时间设置子程序流程 通过单片机判断 S1 按下的次数来设置,由 s1num 标志位来记录次数,用 if 语句判断执行命令。当 s1=1 时进入秒的设置,地址指针指向 miao显示位置处,通过两个 if 语句分别循环控制显示秒数的加和减。当 s1=2时, shi 显示位置处,变量最大值设为 23。当 s1=4 时,地址指针指向week 显示位置处,最大值设为 7,1 至 7 分别用 MON、TUE、WED、THU 、FRI、SAT、SUN
9、字指向 day 显示位置,变量最大值为 31。当 s1=6 时,地址指针指向 month 显示位置,变量最大值为 12。当 s1=7 时,地址指针指向 year 显示位置,最大值为 99。 图 4-2 时间设置流程图 3.3 闹钟设置子程序流程图 时间设置程序流程图如图 4-3 所示。当单片机检测到 S4 键按下一次时则进入闹钟设置界面,光标并自动跳到秒设置位置,可以对秒进行设置,当 S1 键依次按下 1、2、3 次时,则分别进入闹钟的秒、分、时关的设置。 图 4-3 闹钟设置流程图 3.4 按键调整流程图 调整时间用到 4 个按键,按键功能分别是“进入时间调整模式” ,“调整位时间加 1”,
10、 “调整位时间减 1”, “闹钟时间调整模式” 。按键名称分别定义为“Key1” , “Key2”, “Key3”, “Key4”。按 Key1,进入秒调整位,此时秒调整位会闪烁,表示该调整位可以被赋值,接着按 Key2 或者Key3 可对调整位进行加或减。要调整其它调整位,可再按 Key1 进行选择,时间全部调整好后,按 Key1 退出设置,按下 Key4 进入闹钟设置界面。按键调整的流程图,如图 4-5 所示。 图 4-5 按键调整图 4 参考文献 1王为清,邱文勋.51 单片机应用开发例案精选M.人民邮电出版社,2007. 2杨子文.单片机原理应用M.西安电子科技大学出版社,2006. 3刘勇.数字电路M.电子工业出版社,2004. 4张鹏.王雪梅.单片机原理与应用实际教程M.海洋出版社,2008. 5李全利.单片机原理与接口技术M.高等教育出版社,2009. 6马忠梅.单片机的 C 语言应用设计M.北京航空航天大学出版社,2008 7祝木田.单片机原理应用教程M.中国财经经济出版社,2005 8王静霞.单片机应用技术M.单子工业出版社,2009 9李秀忠.单片机应用技术M.人民邮电出版社,2007 10黄明强.DS12C887 在单片机系统中的应用J.保定师范专科学报,2004:(17-4),30-33