电子时钟程序的设计说明.docx

上传人:b****5 文档编号:5684741 上传时间:2022-12-31 格式:DOCX 页数:11 大小:325.90KB
下载 相关 举报
电子时钟程序的设计说明.docx_第1页
第1页 / 共11页
电子时钟程序的设计说明.docx_第2页
第2页 / 共11页
电子时钟程序的设计说明.docx_第3页
第3页 / 共11页
电子时钟程序的设计说明.docx_第4页
第4页 / 共11页
电子时钟程序的设计说明.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

电子时钟程序的设计说明.docx

《电子时钟程序的设计说明.docx》由会员分享,可在线阅读,更多相关《电子时钟程序的设计说明.docx(11页珍藏版)》请在冰豆网上搜索。

电子时钟程序的设计说明.docx

电子时钟程序的设计说明

1.设计目的

电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大扩展了钟表的报时功能。

电子时钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。

不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

而且是控制的核心部分。

因此,研究电子时钟及扩大其应用,有着非常现实的意义。

2.设计容

2.1设计思想

针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51单片机是一款低功耗,高性能CMOS8位单片机,片含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

2.2设计元件

元件

规格

数量

单片机

AT89C51

1

晶振

12MHz

1

晶振电容

30pF

2

按键

4

电阻

10K,1K,220欧,

各1,1,15

电容

10uF(+)

1

七段数码管

共阳极四位、两位

各1,1

USB接口

1

USB延长线

1/2

底座

40脚

1

2.3设计图

2.4设计程序

#include

#include

#include

chardatatime[6];

voiddelay(unsignedchark);

sbitcheck=P0^0;

sbitinter0=P3^2;

sbitinter1=P3^3;

chardatawhich=0;

chardatacount=0;

voidsmadd(unsignedchark);

voidsmsub(unsignedcharn);

charcodebuf[]={0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f};

charcodesel[]={0x01,0x02,0x04,0x08};

voidmain()

{

chari;

for(i=0;i<500;i++);

time[0]=0;

time[1]=1;

time[2]=8;

time[3]=0;

time[4]=2;

time[5]=1;

TMOD=0X01;

TH0=(65535-5000)/256;

TL0=(65535-5000)%256;

IP=0x07;

IE=0X87;

TR0=1;

while

(1)

{

for(i=0;i<6;i++)

{

P1=sel[i];

P2=buf[time[i]];

delay(10);

}

if(check==0)

{

delay(8);

TR0=0;

which=(which+1)%3;

while(check==0);

TR0=1;

}

}

}

voiddelay(unsignedchark)

{chari;

for(;k>0;k--)

for(i=0;i<80;i++)

{;}

}

voidtime_tr0()interrupt1using2

{

TH0=(65535-5000)/256;

TL0=(65535-5000)%256;

count++;

if(count==100)

{

smadd(0);

}

}

voidint0_i()interrupt0using3

{

TR0=0;

smadd(which*2);

TR0=1;

while(inter0==0);

}

voidint1_i()interrupt2using1

{

TR0=0;

delay(20);

smsub(which*2);;

TR0=1;

while(inter1==0);

}

voidsmsub(unsignedcharn)

{

delay(80);

if(time[n]>0)

{

time[n]=time[n]-1;

}

elseif(time[n]==0&&(n==3||n==1))

{

time[n]=5;

smsub(n+1);

}

elseif(time[n]==0&&(n==4||n==2||n==0))

{

time[n]=23;

smsub(n+1);

}

elseif(time[n]==0&&(n==5))

{

time[n]=0;

}

}

voidsmadd(unsignedcharn)

{

charflag=0;

delay(80);

if((n==0)||(n==2)||(n==4))

{

if(n==4&&time[5]==2&&time[4]==3)

{

time[4]=0;

time[5]=0;

flag=1;

}

if(time[n]==9)

{

time[n]=0;

smadd(n+1);

}

elseif(time[n]<9&&flag==0)

{

time[n]=time[n]+1;

}

}

elseif((n==1)||(n==3))

{

if(time[n]==5)

{

time[n]=0;

smadd(n+1);

}

else

{

time[n]=time[n]+1;

}

}

elseif(n==5)

{

if(time[n]==2&&(time[n-1]==3))

{

time[5]=0;

time[4]=0;

}

else

{

time[n]=time[n]+1;

}

}

}

2.5伟福系统仿真如图所示:

3.设计总结

通过这次的设计使我认识到我对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。

本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。

在大学的课堂的学习只是在给我们灌输理论知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。

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

当前位置:首页 > 医药卫生 > 基础医学

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

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