求at89c52单片机的数字时钟(有闹钟功能)设计完整的电路图和程序

我的邮箱:renhao-king@163.com急用,不胜感谢。... 我的邮箱:renhao-king@163.com
急用,不胜感谢。
展开
 我来答
莲花的叶
2010-06-09 · TA获得超过529个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:197万
展开全部
#include"reg51.h"
char tab1[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char j,sfm,sfm2,s=0,m=0,h=0,sh=0,sl=0,mh=0,ml=0,hh=1,hl=1;
char ah1=0; unsigned long a;
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
void led();
main()
{
P1=0x00;
ET0=1;
EA=1;
TR0=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
TMOD=0x10;
a=-0.1*6000000/12;
TH1=-50000/256;
TL1=-50000%256;
while(1)
{ led();

P2=0xfe;
P0=tab1[sl];
mDelay(50);

P2=0xfd;
P0=tab1[sh];
mDelay(60);

P2=0xfb;
P0=0xbf;

P2=0xf7;
P0=tab1[ml];
mDelay(60);

P2=0xef;
P0=tab1[mh];
mDelay(60);

P2=0xdf;
P0=0xbf;

P2=0xbf;
P0=tab1[hl];
mDelay(60);

P2=0x7f;
P0=tab1[hh];
mDelay(60);

}}

void t0() interrupt 1 using 1
{
TH0=-50000/256;
TL0=-50000%256;
ah1++;
if(ah1==100)
{ah1=0;sl++;
if(sl==10)
{ sl=0;sh++;
if(sh==6)
{ sh=0;ml++;
if(ml==10)
{ ml=0;mh++;
if(mh==6)
{ mh=0;hl++;
if(hl==10)
{ hl=0;hh++;}
if(hh==2&&hl==4)
hl=hh=0;
}}}}}}

void int0() interrupt 0 using 2
{sfm++;
TR0=0;
sfm2++;
if(sfm==4){TR0=1;sfm=0;sfm2=0;}
}

void int1() interrupt 2 using 1
{sfm2=sfm2%3;
switch(sfm2)
{case 1:
sl++;
if(sl==10)
{sl=0;sh++;
}
if(sh==6)
{sl=sh=0;}
break;

case 2:
ml++;
if(ml==10)
{ml=0;mh++;}
if(mh==6)
{mh=ml=0;}
break;

case 0:
hl++;
if(hl==10)
{hh++;hl=0;}
if(hh==2&&hl==4)
{hh=hl=0;}
break;
}
}
void led()
{if (sh==3&&sl==5&&mh==0&&ml==2&&hh==1&&hl==1)
{
for(j=0;j<3.;j++)
{
P1=0xff;
mDelay(3000);
P1=0x00;
mDelay(3000);
}
}

}
我们用的是89c51,,,还有没有硬件,所以闹铃用LED代替
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
深圳市兴威帆电子技术有限公司
2023-06-12 广告
实时时钟模块有很多供应商可以选择,以下是一些在市场上具有良好口碑和广泛应用的品牌:1. OpenRtb():一款高精度实时时钟模块,专门用于实时同步软件,广泛用于嵌入式系统和工业控制领域。2. Timer.IO:一家美国公司,提供专业的实时... 点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
changshs
2010-06-08 · TA获得超过311个赞
知道答主
回答量:262
采纳率:100%
帮助的人:215万
展开全部
去看看郭天祥的十天学会单片机,
里面有详细的C语言程序。

直接抄先来就可以用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Aqinghuan
2010-06-11
知道答主
回答量:6
采纳率:0%
帮助的人:11.3万
展开全部
#include"reg51.h"
char tab1[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char j,sfm,sfm2,s=0,m=0,h=0,sh=0,sl=0,mh=0,ml=0,hh=1,hl=1;
char ah1=0; unsigned long a;
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
void led();
main()
{
P1=0x00;
ET0=1;
EA=1;
TR0=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
TMOD=0x10;
a=-0.1*6000000/12;
TH1=-50000/256;
TL1=-50000%256;
while(1)
{ led();

P2=0xfe;
P0=tab1[sl];
mDelay(50);

P2=0xfd;
P0=tab1[sh];
mDelay(60);

P2=0xfb;
P0=0xbf;

P2=0xf7;
P0=tab1[ml];
mDelay(60);

P2=0xef;
P0=tab1[mh];
mDelay(60);

P2=0xdf;
P0=0xbf;

P2=0xbf;
P0=tab1[hl];
mDelay(60);

P2=0x7f;
P0=tab1[hh];
mDelay(60);

}}

void t0() interrupt 1 using 1
{
TH0=-50000/256;
TL0=-50000%256;
ah1++;
if(ah1==100)
{ah1=0;sl++;
if(sl==10)
{ sl=0;sh++;
if(sh==6)
{ sh=0;ml++;
if(ml==10)
{ ml=0;mh++;
if(mh==6)
{ mh=0;hl++;
if(hl==10)
{ hl=0;hh++;}
if(hh==2&&hl==4)
hl=hh=0;
}}}}}}

void int0() interrupt 0 using 2
{sfm++;
TR0=0;
sfm2++;
if(sfm==4){TR0=1;sfm=0;sfm2=0;}
}

void int1() interrupt 2 using 1
{sfm2=sfm2%3;
switch(sfm2)
{case 1:
sl++;
if(sl==10)
{sl=0;sh++;
}
if(sh==6)
{sl=sh=0;}
break;

case 2:
ml++;
if(ml==10)
{ml=0;mh++;}
if(mh==6)
{mh=ml=0;}
break;

case 0:
hl++;
if(hl==10)
{hh++;hl=0;}
if(hh==2&&hl==4)
{hh=hl=0;}
break;
}
}
void led()
{if (sh==3&&sl==5&&mh==0&&ml==2&&hh==1&&hl==1)
{
for(j=0;j<3.;j++)
{
P1=0xff;
mDelay(3000);
P1=0x00;
mDelay(3000);
}
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式