资源描述:
《电子时钟单片机课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、单片机课程设计报告题目电子时钟专业班级学号学生姓名指导教师学院名称电子信息工程学院2014年6月10日目录一、课程设计教学目标2二、设计目的2三、设计任务及要求2四、程序框图31.计时模块32.显示模块33.按键判断及处理程序44.音乐响铃模块55.主函数流程图6五、程序清单7六、感想体会16一、课程设计教学目标通过电子时钟等单片机技术课程十个题目的设计,使学生学会应用单片机技术的基本知识和基本技能,初步了解形成解决实际问题的能力及实际动手的能力。能正确使用实验开发平台或仿真器,会观察实验现象、记录有关数据,并能通过分析得出
2、正确结论。学会阅读、分析或设计简单的单片机应用系统线路图及设备的线路方框图。掌握阅读和编写简单的汇编程序或C51语言程序。思考利用单片机系统的开发、研制过程,初步具备设计和调试单片机应用系统的能力;并逐步培养学生的辩证思维能力,提高学生的全面素质。二、设计目的通过电子时钟综合设计,使学生学会利用8051定时器时间计时处理功能,了解按键扫描及控制LED数码管显示原理,掌握单片机和按键以及LED数码管硬件电路设计及控制程序的设计方法。思考按键消除抖动、LED动态显示与静态显示的特点,从而提高学生解决实际问题的能力。三、设计任务及
3、要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求:1.在4位数码管上显示当前时间。显示格式“时时分分”2.由LED闪动做秒显示。3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。四、程序框图1.计时模块利用单片机定时器0完成计时功能。定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1。当秒变量达到60时,秒变量清零同时分变量加1。分变量达到60时,分变量清零同时时变量加1。当时变量
4、达到24时,时变量清零。由于实验要求由LED闪动做秒显示,因此每隔0.5s即计数500次时,P1^1(驱动LED灯)取反一次,从而实现LED灯闪动一次为1s,秒变量加1。该模块流程图如下:2.显示模块为在各位LED上分别显示不同的字符,需要采用循环扫描显示的方法,即在某一时刻只选通一条位选线,并输出该位的字段码,其余位则处于关闭状态。可见,各位LED显示的字符并不是同时出现的,但由于人眼的视觉暂留及LED的余辉,可以达到同时显示的效果。程序流程图如下:采用动态显示时,需要确定LED各位显示的保持时间。由于LED从导通到发光有
5、延时,时间太短会造成发光微弱,显示不清晰;如果显示时间太长,则会占用较多的CPU时间。3.按键判断及处理程序按键的闭合与否,反映在电压上就是呈现出高电平或低电平。由于机械触点的弹性作用,在闭合及断开的瞬间,电压信号伴随有一定时间的抖动,抖动时间与按键的机械特性有关,一般是5~10ms。为了保证CPU确认一次按键动作,既不重复也不遗漏,必须消除抖动的影响。通过软件消除抖动的方法为:在程序执行过程中检测到有按键按下时,调用一段延时(约10ms)子程序,然后判断该按键的电平是否仍然保持在闭合状态,如果是,则确认有键按下。按键判断流
6、程图如下:按键处理流程图如下:4.音乐响铃模块音乐闹铃程序:单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。众所周知,周期为频率的倒数,可以通过音符的频率计算出周期;演奏时,要根据音符的不同,把对应的半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。另外,音乐的节拍是由延时实现的。程序流程图如下:5.主函数流程图五、程序清单#include"reg52.h"#defineucharunsignedchar#defineu
7、intunsignedint/*七段共阴管显示定义*///段选和位选都是低电平有效//二极管要亮必需正偏所以共阴极数码管位选必需是低电平选通,这样段选加高电平该段才能亮codeunsignedchardigseg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//普通显示//0123456789AbCdEFcodeunsignedchardigseg1[]={0x40,0x79,0x24,0x30,0x1
8、9,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0E};//普通显示//0123456789bcdefcodeunsignedcharsegsel[]={0xfe,0xfd,0xfb,0xf7};/*定义并初始化变量*/uchar