求at89c52单片机的数字时钟(有闹钟功能)设计完整的电路图和程序
展开全部
#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代替
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 广告
2023-06-12 广告
实时时钟模块有很多供应商可以选择,以下是一些在市场上具有良好口碑和广泛应用的品牌:1. OpenRtb():一款高精度实时时钟模块,专门用于实时同步软件,广泛用于嵌入式系统和工业控制领域。2. Timer.IO:一家美国公司,提供专业的实时...
点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
展开全部
去看看郭天祥的十天学会单片机,
里面有详细的C语言程序。
直接抄先来就可以用。
里面有详细的C语言程序。
直接抄先来就可以用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
}
}
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);
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询