- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《基于STC89C52的电子钟设计》.doc
基于STC89C52的电子钟设计
基本功能实现
实现电子钟的功能,
要求用数码管显示秒,分,时,天的功能
设计报告
设计方案:系统的流程框图,系统设计思想
设计总结:包括实践中出现的问题,解决方法,心得体会
参考资料:芯片的说明,及电路原理
本次设计的时候遇到的问题主要是延时不准确的问题,实验使用的c语言,
件原因并不能很准确的得到理想的电子钟只能是表达一种思想,编程应明确原理,逐一实现各个功能。
四、设计程序
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
uchar ts,tg,ss,sg,fs,fg,ms,mg,aa,bb,cc,dd,T,num;
Ucharcode d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x80}; //0~9,A~F,.
uchar code w[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
void delay(uchar z)
{
unsigned int i,j;
for(i=z;i0;i--)
for(j=10;j0;j--);
}
void init_zh()//初始化
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display()//显示函数
{ P1=w[0]; //天
P2=d[ts];
delay(10);
P1=w[1];
P2=d[tg];
delay(10);
P1=w[2]; //小时
P2=d[ss];
delay(10);
P1=w[3];
P2=d[sg];
delay(10);
P1=w[4];//分钟
P2=d[fs];
delay(10);
P1=w[5];
P2=d[fg];
delay(10);
P1=w[6];//秒
P2=d[ms];
delay(10);
P1=w[7];
P2=d[mg];
delay(10);
}
void jisuan()
{
ss=aa/10;
sg=aa%10;
fs=bb/10;
fg=bb%10;
ms=cc/10;
mg=cc%10;
ts=T/10;
tg=T%10;
}
void jinzhi()//设定时间进制
{
if(dd==20)
{dd=0;++cc;}
if(cc==60)
{cc=0;++bb;}
if(bb==60)
{bb=0;++aa;}
if(aa==24)
{aa=0;++T; }
}
void init_int0()
{
EA=1;
EX0=1;//IT0=1;IT0默认为0
}
void timer_zh() interrupt 1
{
TH0=(65535-50000)/256;//定时50毫秒
TL0=(65535-50000)%256;
dd++;
}
void main()
{
init_int0();
init_zh();
num=0;aa=0;bb=0;cc=0;dd=0;T=0;
while(1)
{
jinzhi();
jisuan();
display();
}
}
五、流程图
六、实验的电路原理图
文档评论(0)