1、单片机 电子时钟实验报告电子时钟设计实验报告姓名: 学号: 班级: 指导老师: 一、实验基本要求利用定时计数器,设计一个电子时钟,使用前面使用过的显示子程序。从左到右依次显示时分秒。有两种方法实现,一种是在中断程序中计数,产生时分秒计数,送显示缓冲区。另一种是中断程序每一秒清除一个位变量,而主程序通过监视位变量的变化来知道每秒的时间。进而要求:1.加入时间调整程序,使用两个或三个按钮,调节当前的时间。类似平常使用的电子表。可以让正在调整的位闪烁显示。2.可以加入一个闹钟钟设置,当所定的时间到时,产生断续的蜂鸣声。可以加入日历的功能。二、最终实现的功能1、日历(年、月、日)显示与数值的修改2、时
2、钟(时分秒)显示及数值的修改3、闹钟设定及数值的修改、到时响铃4、秒表计时及秒表重置三、设计核心思想程序设计中设置定时器0作为基本时钟,中断每50ms进入一次,每20次中断即1秒,秒加一,在中断服务程序中执行60秒进位、60分进位。通过独立式键盘,进行各项数值调整、定时器开启和暂停以及重置。各个功能在分立的子函数中实现,在主函数中进行调用,结构清晰。四、设计亮点1、按键功能通过“按下时间的长短”丰富在按键消抖结束后,再次判断按键按下的同时,记录按下时间的长短。短按实现数值的修改、计时暂停及启动,长按实现模式的切换和重置。2、闹铃设置为一段音乐通过查阅网上资料,将蜂鸣器的响声富有变化,从而实现一
3、段有旋律的音乐。3、函数独立设计的程序中包含以下函数模块:延时、初始化、时间(日历、闹钟)显示、键盘扫描、秒表显示、定时器0中断函数(时钟)、定时器1中断(秒表)、音乐、闹钟及主函数。4、各功能的实现采用模块化处理模式1:时钟显示;模式2:日历显示;模式3:秒表显示;模式4:闹钟显示。五、实验中的问题总结LED数码管显示部分小结:(1)要设置段选(P2.6)和位选(P2.7)。(2)段选和位选需按照书上讲的逻辑编写。虽然P0口作为段选,P2口作为位选,但是程序设计中位选时要将值赋给P0口(打开位选赋位选关闭位选)。网上很多实验报告的代码位选是P2=0X*,但我在实际操作中发现,如果位选值赋给P
4、2口,数码管的显示会出现不规则跳变,具体原因不清楚。段选可以赋值给P0口(打开段选赋段选关闭段选)。六、实验心得本次实验设计历时10天,初期设计并不顺利,因为设计的构思实际操作障碍重重。通过上网查阅电子时钟的资料,自学C51编程,结合汇编语言的部分想法,自主设计了程序框架。显示函数借鉴了网上经验,通过自己的实际操作进行了一定的修改,使其切实可行。键扫描函数根据教材提供的程序进行相应的设计,并根据自己查阅的C51书籍进行了相应的功能扩充。程序编写过程中,充分结合了自己的所学知识,将程序设计为模块化,主函数简洁清晰,体现了高级语言的特点。本次实验的程序烧录达200多次,因为一些原因无法进行debu
5、g,所以非语法错误的BUG均为自己调试,本次实验成果来之不易。在未来的学习过程中依旧要坚持不懈的努力,成功只属于那些坚持到底的人。七、实验程序及说明【全局变量定义及部分函数的声明】说明:“歌曲音调”“歌曲节奏”曲子网络【各项内容初始化】【延时函数】【时间、日历、闹钟显示函数】【秒表显示函数】说明:因为秒表显示的数字位数(分钟、十秒、秒、毫秒)和时钟(时分秒)不同,故需要分成两个显示函数。【定时器0中断函数(时钟)函数】【定时器1中断(秒表)函数】【蜂鸣器音乐及闹钟函数】【键盘扫描函数】说明:长短按键的实现通过判断length和flag标志。即Length满足一定时长后,转移到相应的模式;若按下时间不满足判断条件,则视为“短按”,执行短按的相应功能。独立式键盘从左到右将键盘编号为14。按键1:短按时钟、秒表停时及启动;长按转至模式0(时钟模式)。按键2:短按秒(时钟和闹钟)、天数值调整;长按返回上一模式(若为模式0,则无上一模式)。按键3:短按分(时钟和闹钟)、月数值调整;长按进入下一模式(若为模式0,则下一模式为模式1,即日历显示)。按键4:短按时(时钟和闹钟)、年的数值调整;长按秒表重置。【主函数】
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1