基于51单片机实现时间显示及闹钟设置( 三 )


由于只有4个按键,所以调整日历的时候K3、K4用于调整天数,K1、K2用于调整月份,当月份大于12时,年份自动加一,当月份小于1时,年份自动减一,实现了四个按键调整年月日的功能 。
3.流水灯显示
增加流水灯显示提高气氛,如下图按下矩阵键盘3号键进行流水灯显示 。
五、结果分析
本次实验使用定时器实现了时钟显示和日期显示,并能综合使用独立按键和矩阵按键实现多个功能,提高了该项目的实用性 。闹钟设置则能实现按时提醒,丰富了应用场景 。通过使用芯片稳定电流,达到保护电路的作用,使用译码器,实现数码管的同时显示,由于数码管显示速度过快会导致有残影,所以加上延时函数和p0=0x00语句来达到消影的效果 。在进行按键函数编写时,按键往往存在抖动,所以为了提高按键的稳定性,需要进行按键消抖,矩阵按键用于功能选择,独立按键用于闹钟或者日期调整,这样做可以提高程序的实用性,但仍存在优化的空间 。
六、总结
【基于51单片机实现时间显示及闹钟设置】 本次实验感觉工程量还是不小的,由于时间也比较紧迫,所以在这几段时间内都花了比较长的时间来做实验,前期主要是学习单片机各种芯片的功能,首先掌握了74HC245芯片的稳流功能,知道它在LED显示中的重要作用 。为了实现数码管同时显示时间,需要用到数码管的动态扫描,所以也学习了数码管的知识 。闹钟的实现这一块想了好久,因为没有足够的数码管来显示闹钟,最后折中想出用六个数码管显示时间,剩余的两位来显示闹钟的小时部分和分钟部分,当按下的按键要调整闹钟的小时时,则显示小时部分,当按下的按键要调整闹钟的分钟时,则显示分钟部分 。一开始想通过点阵来显示日期,但发现8X8的点阵没办法显示完整的日期,最后还是显示在数码管上,通过矩阵按键来选择要显示的是时间还是日期 。一开始编写代码的时候总是报错,但最后也通过软件的提示信息找出报错的原因,也学会了使用extern关键字来使用其他文件的函数,提高了程序各个文件的关联性,这次实验让自己学习到了很多东西,锻炼了使用C语言编写程序的能力,也是自己收获最大的一次实验,虽然实验过程中会犯错,但只有肯学习、肯下功夫,就没有解决不了的困难 。