基于定时器0 LCD1602可调的电子时钟
1赞 结合了本学期的教学课件和网上的一些资料整理,修改了程序,制作出一个基于定时器0方式1的中断,重装定时器产生1s中断,从而产生时钟的时基。程序开始运行时,显示初始化的值
接着通过三个功能键可以调时间,第一次按下“功能键”,会关闭定时器0,光标会停留在“时”的坐标闪烁,可以通过按下“增加”和“减少”按键可以向上和向下调时间,第二次按下“功能键”光标会跳到“分”,第三次按下“功能键”,调到“秒”,时间可以依次调节,第四次按下“功能键”,光标停止闪烁,打开定时器,时钟按照调节的时间继续运行。
在调节时间状态下,每次蜂鸣器按下按键都会发出“滴滴”的声音,提示当前的状态,在整点的时候会有一个蜂鸣器报时的声音,细心的朋友可以听一下。
这样一个简单的可调电子时钟就完成了,一开始在调节时钟那里,按下功能键后,光标一直定位不到,到处闪烁,调程序很久,最后发现,当按下功能键时,1602一直在扫描着显示时分秒,所以光标一直在时分秒那里来回闪烁,没有像预想的那样停留在某个点闪烁,解决的办法就是加一个标志位flag,当按下按键时,标志位清零,停止1602的扫描显示,最后设置完时间后让标志位置1,继续扫描就可以了,详情可以参考一下程序。
程序都是借鉴修改来的,分享出来希望大家可以互相学习,程序的设计采用规范的文档设计,因为学过32位,对程序的文档规范管理有着严格的要求,虽然51比32位简单,但是写程序就要养成规范,所以对自己的要求严格,给大家提供源程序和仿真图,希望有关单片机的爱好者可以一起交流,本人非常热爱电子,学过51单片机,stm32单片机,也学过一段时间的FPGA,由于学校的师资不够,FPGA自己很难学下去,就先暂时放下了,后面会继续补起来的,有爱好交流的伙伴可以邮箱联系1098332603@qq.com,欢迎电子爱好者,程序大部分写的简单易懂,适合有基础的同学参考,有不懂的可以发邮箱过来询问,能解答的尽力互相帮助。
后面有关单片机制作的,如果有,我继续写出来分享,后续应该会用DS1302,继续完善这个电子时钟,第一次写分享制作,希望大家多多支持