- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课设报告-电子时钟--
PAGE \* MERGEFORMAT19
单片机课程设计
实验报告
课题:电子时钟
姓名:
学号:
专业班级:
指导教师:
实验时间:2014年6月5日
一、设计目的
通过电子时钟综合设计,使学生学会利用 8051 定时器时间计时处理功能,了解按键扫描及控制 LED 数码管显示原理,掌握单片机和按键以及 LED 数码管硬件电路设计及控制程序的设计方法。思考按键消除抖动、LED 动态显示与静态显示的特点,从而提高学生解决实际问题的能力。
二、设计任务及要求
利用实验平台上 4 个 LED 数码管, 设计带有闹铃功能的数字时钟,要求:
1. 在 4 位数码管上显示当前时间。显示格式“时时分分”
2. 由 LED 闪动做秒显示。
3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。
三、硬件设计
1.显示模块
为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。方法是将所有位的段选线相应并联,由一个8位I/O口控制,从而形成段选线的多路复用,同时各位的公共端分别由相应的I/O线控制,实现分时选通。
硬件电路图如下,图中10k电阻起到限流作用;三极管起到驱动数码管的作用。若不使用三极管,数码管发光微弱。
2.闹铃模块
闹铃声由交流蜂鸣器产生,电路图如下。当P2.4输出不同频率的方波,.蜂鸣器便会发出不同的声音。
3.整体硬件电路图
四、软件设计
1.计时模块
利用单片机定时器0完成计时功能。定时器0计时中断程序每隔1ms中断一次并当作一个计数,每中断一次计数加1,当计数1000次时,则表示1s到了,秒变量加1。当秒变量达到60时,秒变量清零同时分变量加1。分变量达到60时,分变量清零同时时变量加1。当时变量达到24时,时变量清零。
由于实验要求由LED闪动做秒显示,因此每隔0.5s即计数500次时,P1^1(驱动LED灯)取反一次,从而实现LED灯闪动一次为1s,秒变量加1。
该模块流程图如下:
程序如下:
void Delay(int m) //延时函数
{
int y=m/10;
while(--m);
}
void Init_Timer0() //计时器初始化函数
{
TMOD=0x11;
TH0=0xEE;
TL0=0x00;
ET0=1;
TR0=1;
EA=1;
}
void Init_Timer1() //计时器初始化函数
{
TMOD=0x11;
ET1=1;
TR1=0;
EA=1;
}
void time0(void) interrupt 1 //计时函数
{
TH0=0xee;
TL0=0x00;
i++;
if (i==199)
{
P1=_cror_(P1,1); //循环位移
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
i=0;
}
}
2.显示模块
为在各位LED上分别显示不同的字符,需要采用循环扫描显示的方法,即在某一时刻只选通一条位选线,并输出该位的字段码,其余位则处于关闭状态。可见,各位LED显示的字符并不是同时出现的,但由于人眼的视觉暂留及LED的余辉,可以达到同时显示的效果。程序流程图如下:
采用动态显示时,需要确定LED各位显示的保持时间。由于LED从导通到发光有延时,时间太短会造成发光微弱,显示不清晰;如果显示时间太长,则会占用较多的CPU时间。
程序如下:
void display( uint x,uint y) //数码管显示函数
{
qian = x/10;
bai = x%10;
shi = y/10;
ge =y%10;
s1=0 ;
if(j==1)//设置模式下调整位闪烁函数
{
s_flag++;
if(s_flag=20)
{
P0=0xff;
}
else
{
P0 = digseg[qian];
if(s_flag==40)
s_flag=0;
}
}
else P0 = dig
文档评论(0)