多功能数字时钟Word格式.docx

上传人:b****4 文档编号:18418454 上传时间:2022-12-16 格式:DOCX 页数:14 大小:332.20KB
下载 相关 举报
多功能数字时钟Word格式.docx_第1页
第1页 / 共14页
多功能数字时钟Word格式.docx_第2页
第2页 / 共14页
多功能数字时钟Word格式.docx_第3页
第3页 / 共14页
多功能数字时钟Word格式.docx_第4页
第4页 / 共14页
多功能数字时钟Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

多功能数字时钟Word格式.docx

《多功能数字时钟Word格式.docx》由会员分享,可在线阅读,更多相关《多功能数字时钟Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

多功能数字时钟Word格式.docx

2、独立按键电路图

3、数字时钟实现原理图

4、蜂鸣器原理图

三、实验程序流程图:

主程序:

子程序:

1、按键调时

2、按键闹钟设置

3、闹钟

4、中断

四、实验结果分析

多功能数字时钟的起始时间为23-59-55,到00-00-00时闹铃响。

起始时间可以通过按键K1、K2与K3一起调节,K3用于时分秒的切换设置,K1用于减一,K2用于加一,设置完后,按K3键返回走时;

闹钟也可以通过K4、K1与K2一起调节,K4用于闹钟时分秒的切换设置,K1和K2分别用于减一于加一,同样,设置完后按K4返回走时。

五、心得体会

通过课程设计,我还更加明白了一个真理。

时至今日,课程设计基本告成,才切身领悟“实践是检验真理的唯一标准”,才明晓实践出真知。

因为在教材上,数字钟不过是由计数器和译码显码器组合而成,也便不以为然搭建电路图,结果电路出现诸多问题,譬如短路开路,EWB中引脚悬空即为低电平,现实中引脚悬空呈现大电阻特性即高电平,不为则不知,无为则无知,实践出真知。

课程设计达到了专业学习的预期目的。

在两个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对设计过程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,终于迎刃而解。

同时,在老师的身上我学得到很多实用的知识,在此我表示感谢!

同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

六、程序清单

#include<

reg51.h>

absacc.h>

#defineuintunsignedint

#defineucharunsignedchar

sbitBeep=P1^5;

sbitK0=P3^3;

sbitK1=P3^2;

sbitK2=P3^1;

sbitK3=P3^0;

uintn;

ucharbuffer[]={0,0,0,0,0,0,0,0};

ucharcount,hour=13,min=14,sec=55,dhour=13,dmin=15,dsec=0,in=0;

uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

unsignedcharcodemusic_tab[]={

0x18,0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,

0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,

0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,

0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,

0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,

0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,

0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,

0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,

0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,

0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,

0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00

};

voiddelay(unsignedchardly)

{

unsignedi=3*dly;

while(--i);

}

voidchange()

{

buffer[7]=sec%10;

buffer[6]=sec/10;

buffer[5]=10;

buffer[4]=(min%10);

buffer[3]=min/10;

buffer[2]=10;

buffer[1]=(hour%10);

buffer[0]=hour/10;

}

voiddelayms(unsignedchara)

while(--a);

voidchange1()

buffer[7]=dsec%10;

buffer[6]=dsec/10;

buffer[4]=(dmin%10);

buffer[3]=dmin/10;

buffer[1]=(dhour%10);

buffer[0]=dhour/10;

voiddisplay()

uchartemp=0x80;

charcnt;

temp=0x80;

P0=0xff;

for(cnt=0;

cnt<

8;

cnt++)

{

P0=table[buffer[cnt]];

temp=~temp;

P2=temp;

delay(150);

temp>

>

=1;

P0=0xff;

}

voidtimer0()interrupt1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==20)

count=0;

sec++;

if(sec==60)

{

sec=0;

min++;

if(min==60)

{

min=0;

hour++;

if(hour==24)

{

hour=0;

}

}

voidtimer1()interrupt3

TH1=0xd8;

TL1=0xef;

in--;

voidint0()interrupt0

while(K1==0);

EX0=0;

n=3;

while(n)

if(n!

=0)

if(K1==0)

delay(100);

if(K1==0)

while(K1==0);

n--;

}

if(K2==0)

delay(100);

if(K2==0)

while(K2==0);

switch(n-1)

case0:

hour++;

if(hour==24)hour=0;

break;

case1:

min++;

if(min==60)min=0;

case2:

sec++;

if(sec==60)sec=0;

default:

if(K3==0)

if(K3==0)

while(K3==0);

hour--;

if(hour==-1)hour=23;

min--;

if(min==-1)min=59;

sec--;

if(sec==-1)sec=59;

change();

display();

voidint1()interrupt2

while(K0==0);

EX1=0;

if(K0==0)

if(K0==0)

while(K0==0);

dhour++;

if(dhour==24)dhour=0;

dmin++;

if(dmin==60)dmin=0;

dsec++;

if(dsec==60)dsec=0;

dhour--;

if(dhour==-1)dhour=23;

dmin--;

if(dmin==-1)dmin=59;

dsec--;

if(dsec==-1)dsec=59;

change1();

voidmain()

unsignedcharp,m;

unsignedchari=0;

TMOD=0x11;

P3=0xff;

IE=0x8a;

TR0=1;

IT0=1;

IT1=1;

while

(1)

a:

change();

display();

if(K1==0)

EX0=1;

if(K0==0)

EX1=1;

if((hour==dhour)&

&

(min==dmin)&

(sec==dsec))

while

(1)

{

b:

p=music_tab[i];

if(p==0x00)

i=0;

gotoa;

}

elseif(p==0xff)

i=i+1;

delayms(100);

gotob;

else

m=music_tab[i++],in=music_tab[i++];

TR1=1;

while(in!

Beep=~Beep;

delay(m-8);

TR1=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1