图13 LCD1602的实际显示位置与显示地址的关系
对LCD1602进行初始化的过程为:清屏→功能设置→开/关显示的设置→输入方式的设置。
3.3.4 时间数据的采集和处理模块
DS1302有12个时钟、日历寄存器,31个RAM和1个控制寄存器。控制寄存器的命令字格式如表2所示。
表2 DS1302的控制寄存器的命令字格式
D7 D6 D5 D4 D3 D2 D1 D0
1 RAM/CK A4 A3 A2 A1 A0 RD/W
无论是数据还是命令字,字节数据传送时都是先低位后高位,且每一位的读写都发生在时钟信号的上升沿。DS1302工作的流程如图14所示。
图14 DS1302工作的流程图
3.3.5 键盘控制模块
应先判断SWITCHK是否按下,再判断K0键是否按下,最后再判断K1和K2是否有键按下。每次判断都将根据相应结果实现程序的分支。
4. 系统的仿真与调试
在Keil中建立工程,并编辑源程序,完成后编译程序,生成可执行的HEX文件[15]。然后打开之前在Proteus中绘制好的ISIS仿真电路图,双击AT89C52芯片,在出现的窗口中点击文件符号找到之前在Keil中编译生成的HEX文件,并选中到窗口中的Program File选项中,设置AT89C52的频率为12MHz。系统初始仿真结果如图15所示,显示当时的时间为13年5月17日0点17分37秒。
图15 系统初始仿真结果
按下SWITCHK键时的仿真结果如图16所示,显示的是当时的环境温度为18℃。在松开SWITCHK按键时又恢复显示当时的时间。
图16 按下SWITCHK时的仿真结果
第一次按下K0后,再分别按下一次K1和K2的仿真结果如图17和图18所示。
如图17所示,显示的时间为14年5月17日0点18分17秒。可知接着按下一次K1时间除了年份增1变为了14年,其他正常走时。
图17 系统仿真结果
如图18所示,显示的时间为13年5月17日0点18分36秒。可知接着又按下一次K2时间除了年份减1又变回了13年,其他正常走时。
图18 系统仿真结果
对比可知,第一次按下K0可实现对年份的修改,且再按下K1和K2分别实现对年份的增1和减1的修改。
第二次按下K0之后再分别按下K1和K2现象分别如图19和图20所示。
如图19所示,显示的时间为13年6月17日0点19分09秒。可知第二次按下K0后再按下一次K1时间除了月份增1变为了06,其他正常走时。
图19 系统仿真结果
如图20所示,显示的时间为13年5月17日0点19分44秒。可知接着又按下一次K2后时间除了月份减1变回了05,其他正常走时。
图20 系统仿真结果
对比可知,第二次按下K0可实现对月份的修改,且再按下K1和K2分别实现对月份的增1和减1的修改。
第三次按下K0之后再分别按下K1和K2现象分别如图21和图22所示。
如图21所示,显示的时间为13年5月18日0点20分15秒。可知第三次按下K0后再按下一次K1时间除了日期增1变为了18,其他正常走时。
图21 系统仿真结果
如图22所示,显示的时间为13年5月17日0点20分20秒。可知接着又按下一次K2时间除了日期减1变回了17,其他正常走时。
图22 系统仿真结果
对比可知,第三次按下K0可实现对日期的修改,且再按下K1和K2分别实现对日期的增1和减1的修改。
第四次按下K0之后再分别按下K1和K2现象分别如图23和图24所示。
如图23所示,显示的时间为13年5月17日1点20分54秒。可知第四次按下K0后再按下一次K1时间除了小时增1变为了01,其他正常走时。 AT89C52基于单片机的趣味闹钟设计+电路原理图+源程序(4):http://www.youerw.com/zidonghua/lunwen_811.html