单片机课程设计实验报告电子时钟

上传人:hs****ma 文档编号:429889624 上传时间:2023-04-23 格式:DOC 页数:18 大小:3.78MB
返回 下载 相关 举报
单片机课程设计实验报告电子时钟_第1页
第1页 / 共18页
单片机课程设计实验报告电子时钟_第2页
第2页 / 共18页
单片机课程设计实验报告电子时钟_第3页
第3页 / 共18页
单片机课程设计实验报告电子时钟_第4页
第4页 / 共18页
单片机课程设计实验报告电子时钟_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机课程设计实验报告电子时钟》由会员分享,可在线阅读,更多相关《单片机课程设计实验报告电子时钟(18页珍藏版)》请在金锄头文库上搜索。

1、单片机课程设计实验报告电子时钟姓名: 学号:08212013班级:自动化0801指导老师: 电子时钟一、 实验目的学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。二、 设计任务及要求利用实验平台上4个LED数码管, 设计带有闹铃功能的数字时钟,要求:1. 在4位数码管上显示当前时间。显示格式“时时分分”2. 由LED闪动做秒显示。3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。4. 拓展:使数字时钟的闹铃为音乐。(电子音调发生器)三、 硬件设计1. 显示模块为了将时间在LED数码管上显示,可采用静态显示法和动态

2、显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。方法是将所有位的段选线相应并联,由一个8位I/O口控制,从而形成段选线的多路复用,同时各位的公共端分别由相应的I/O线控制,实现分时选通。硬件电路图如下,图中10k电阻起到限流作用;三极管起到驱动数码管的作用。若不使用三极管,数码管发光微弱。2. 闹铃模块闹铃声由交流蜂鸣器产生,电路图如下。当P1.7输出不同频率的方波,.蜂鸣器便会发出不同的声音。3. 整体硬件电路图四、 软件设计1. 计时模块利用单片机定时器0完成计时功能。定时器0计时中断程序每隔1ms中断一次并当作一个计数,每中断一次计数加1,当计数1000次

3、时,则表示1s到了,秒变量加1。当秒变量达到60时,秒变量清零同时分变量加1。分变量达到60时,分变量清零同时时变量加1。当时变量达到24时,时变量清零。由于实验要求由LED闪动做秒显示,因此每隔0.5s即计数500次时,P11(驱动LED灯)取反一次,从而实现LED灯闪动一次为1s,秒变量加1。该模块流程图如下:2. 显示模块为在各位LED上分别显示不同的字符,需要采用循环扫描显示的方法,即在某一时刻只选通一条位选线,并输出该位的字段码,其余位则处于关闭状态。可见,各位LED显示的字符并不是同时出现的,但由于人眼的视觉暂留及LED的余辉,可以达到同时显示的效果。程序流程图如下:采用动态显示时

4、,需要确定LED各位显示的保持时间。由于LED从导通到发光有延时,时间太短会造成发光微弱,显示不清晰;如果显示时间太长,则会占用较多的CPU时间。3. 按键判断及处理程序按键的闭合与否,反映在电压上就是呈现出高电平或低电平。由于机械触点的弹性作用,在闭合及断开的瞬间,电压信号伴随有一定时间的抖动,抖动时间与按键的机械特性有关,一般是510ms。为了保证CPU确认一次按键动作,既不重复也不遗漏,必须消除抖动的影响。通过软件消除抖动的方法为:在程序执行过程中检测到有按键按下时,调用一段延时(约10ms)子程序,然后判断该按键的电平是否仍然保持在闭合状态,如果是,则确认有键按下。按键判断流程图如下:

5、按键处理流程图如下:4. 音乐响铃模块音乐闹铃程序:单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。众所周知,周期为频率的倒数,可以通过音符的频率计算出周期;演奏时,要根据音符的不同,把对应的半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。另外,音乐的节拍是由延时实现的。我所使用的单片机音乐演奏程序中,包括了两个数据表,其中存放了事先算好的各种音符频率所对应的半周期的定时时间初始值。有了这些数据,单片机就可以演奏低音、中音、高音,三个八度共21个音符。演奏乐曲时,就根据音符的不同数值,从

6、表中找到定时时间初始值,送入定时器即可控制音调。通过调用延迟来实现节拍数。乐曲的数据,也要写个数据表:表中每三个数字,说明了一个音符,它们分别代表:第一个数字是音符的数值;第二个数字是123之一,代表低音、中音、高音;第三个数字是时间长度,以半拍为单位。乐曲数据表的结尾是三个0。音节与频率的关系如下表所示音调X音调X音调X低音1F921中音1FC8F高音1FE47低音2F9E1中音2FCEE高音2FE77低音3FA8C中音3FD44高音3FEA2低音4FAD8中音4FD6B高音4FEB6低音5FB68中音5FDB4高音5FEDA低音6FBE9中音6FDF4高音6FEFA低音7FC5B中音7FE

7、2D高音7FF16程序流程图如下:5. 主函数流程图五、 程序清单#include #define uchar unsigned char#define uint unsigned intuchar code segcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共阳数码管09uchar code select=0x0e,0x0d,0x0b,0x07;/正常显示时数码管位选uchar code select1=0x0f,0x0d,0x0b,0x07;/高两位屏蔽时的位选(第2位只显示dp)uchar code select2=0x

8、0e,0x0d,0x0f,0x0f;/低两位屏蔽时的位选uchar buffer=0,0,0,0;/用来存放时间uint hour,min,sec;uint alarmhour,alarmmin;uint status=0;/模式值sbit music=P10;/闹铃sbit led=P11;/秒驱动LED闪烁bit ringoff=1;/闹铃停止uint count=0;/定时器计数uchar keyinput;uchar buf=0xff;/用来存放按键值uchar timer1h,timer1l,time;/time为节拍(延迟时间),timer1l、timer1h为计数器1初值ucha

9、r code freqh=0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC, /低音17 第一个八度 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,/中音 17 第二个八度 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF;/高音 17 第三个八度uchar code freql = 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B, /低音1234567 0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D, /中音 1234567 0x47,0x77,0xA2,0xB6,0xDA,0xFA,

10、0x16; /高音 1234567/*uchar code song=3,2,2,3,2,2,4,2,2,5,2,2,5,2,2,4,2,2,3,2,2,2,2,2,1,2,2,1,2,2,2,2,2,3,2,2,3,2,3,2,2,1,2,2,4,3,2,2,3,2,2,4,2,2,5,2,2,5,2,2,4,2,2,3,2,2,2,2,2,1,2,2,1,2,2,2,2,2,3,2,2,2,2,3,1,2,1,1,2,4,2,2,2,2,2,2,3,2,2,1,2,2,2,2,2,3,2,1,4,2,1,3,2,2,1,2,2,2,2,2,3,2,1,4,2,1,3,2,2,2,2,2,1

11、,2,2,2,2,2,5,1,2,3,2,2,3,2,2,3,2,2,4,2,2,5,2,2,5,2,2,4,2,2,3,2,2,4,2,1,2,2,1,1,2,2,1,2,2,2,2,2,3,2,2,2,2,3,1,2,1,1,2,4,2,2,2,2,2,2,3,2,2,1,2,2,2,2,2,3,2,1,4,2,1,3,2,2,1,2,2,2,2,2,3,2,1,4,2,1,3,2,2,2,2,2,1,2,2,2,2,2,5,1,2,3,2,2,3,2,2,3,2,2,4,2,2,5,2,2,5,2,2,4,2,2,3,2,2,4,2,1,2,2,1,1,2,2,1,2,2,2,2,2,3

12、,2,2,2,2,3,1,2,1,1,2,4,0,0,0; /欢乐颂 */uchar code song=5,3,2,3,3,1,4,3,1,5,3,2,3,3,1,4,3,1,5,3,1,5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,3,3,2,1,3,1,2,3,1,3,3,2,3,2,1,4,2,1,5,2,1,6,2,1,5,2,1,4,2,1,5,2,1,3,2,1,4,2,1,5,2,1,4,2,2,6,2,1,5,2,1,4,2,2,3,2,1,2,2,1,3,2,1,2,2,1,1,2,1,2,2,1,3,2,1,4,2,1,5,2,1,6

13、,2,1,4,2,2,6,2,1,5,2,1,6,2,2,7,2,1,1,3,1,5,2,1,6,2,1,7,2,1,1,3,1,2,3,1,3,3,1,4,3,1,5,3,1,3,3,2,1,3,1,2,3,1,3,3,2,2,3,1,1,3,1,2,3,1,7,2,1,1,3,1,2,3,1,3,3,1,2,3,1,1,3,1,7,2,1,1,3,2,6,2,1,7,2,1,1,3,2,1,2,1,2,2,1,3,2,1,4,2,1,3,2,1,2,2,1,3,2,1,1,3,1,7,2,1,1,3,1,6,2,2,1,3,2,7,2,1,6,2,2,5,2,1,4,2,1,5,2,1,4

14、,2,1,3,2,1,4,2,1,5,2,1,6,2,1,7,2,1,1,2,1,6,2,2,1,3,1,7,2,1,1,3,2,7,2,1,6,2,1,7,2,1,1,3,1,2,3,1,1,3,1,7,2,1,1,3,1,6,2,1,7,2,1,0,0,0;/卡农/一个音符有三个数字。前为音节、中为第几个八度、后为时长(以半拍为单位)。/*延迟tms程序*/void delay1ms(uint t) uint i;while(t-)for(i=0;i=5) status=0;break;/第一个键被按下,模式值+1case 0xd0: /第二个键被按下switch(status)case 0x01:if(hour23) hour+; else hour=0;break;/模式1小时+1,到24变成0case 0x02:if(min59

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号