BB-World

基于定时器0 LCD1602可调的电子时钟

1
阅读(3168)

        结合了本学期的教学课件和网上的一些资料整理,修改了程序,制作出一个基于定时器0方式1的中断,重装定时器产生1s中断,从而产生时钟的时基。程序开始运行时,显示初始化的值

blob.png

        接着通过三个功能键可以调时间,第一次按下“功能键”,会关闭定时器0,光标会停留在“”的坐标闪烁,可以通过按下“增加”和“减少”按键可以向上和向下调时间,第二次按下“功能键”光标会跳到“”,第三次按下“功能键”,调到“”,时间可以依次调节,第四次按下“功能键”,光标停止闪烁,打开定时器,时钟按照调节的时间继续运行。

blob.png

        在调节时间状态下,每次蜂鸣器按下按键都会发出“滴滴”的声音,提示当前的状态,在整点的时候会有一个蜂鸣器报时的声音,细心的朋友可以听一下。

blob.png

        这样一个简单的可调电子时钟就完成了,一开始在调节时钟那里,按下功能键后,光标一直定位不到,到处闪烁,调程序很久,最后发现,当按下功能键时,1602一直在扫描着显示时分秒,所以光标一直在时分秒那里来回闪烁,没有像预想的那样停留在某个点闪烁,解决的办法就是加一个标志位flag,当按下按键时,标志位清零,停止1602的扫描显示,最后设置完时间后让标志位置1,继续扫描就可以了,详情可以参考一下程序。

        程序都是借鉴修改来的,分享出来希望大家可以互相学习,程序的设计采用规范的文档设计,因为学过32位,对程序的文档规范管理有着严格的要求,虽然51比32位简单,但是写程序就要养成规范,所以对自己的要求严格,给大家提供源程序和仿真图,希望有关单片机的爱好者可以一起交流,本人非常热爱电子,学过51单片机,stm32单片机,也学过一段时间的FPGA,由于学校的师资不够,FPGA自己很难学下去,就先暂时放下了,后面会继续补起来的,有爱好交流的伙伴可以邮箱联系1098332603@qq.com,欢迎电子爱好者,程序大部分写的简单易懂,适合有基础的同学参考,有不懂的可以发邮箱过来询问,能解答的尽力互相帮助。

        后面有关单片机制作的,如果有,我继续写出来分享,后续应该会用DS1302,继续完善这个电子时钟,第一次写分享制作,希望大家多多支持



LCD1602_Clock.zip