📄 数字时钟.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key2=P3^5;
sbit key3=P3^6;
sbit LED=P1^7;
uchar code display[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar code saomiao[4]={0xfe,0xfd,0xfb,0xf7};
uchar clock[4]={0x00,0x00,0x00,0x00};
uchar dingshi[4]={0x00,0x00,0x00,0x00};
uchar second1=0,minute1=0,a=0,b=0,flag=0;
delay1ms(uint t)
{
uchar i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
void timer0(void) interrupt 1
{
a=a+1;b=b+1;
if(a==100)
{ second1++;
if(second1==60)
{ minute1++;
if(minute1==60) minute1=0;second1=0;
}
a=0;
}
clock[0]=second1%10;
clock[1]=second1/10;
clock[2]=minute1%10;
clock[3]=minute1/10;
TH0=0XD8;
TL0=0XF0;
TF0=0;
}
void timer1(void) interrupt 3
{ uchar paomiao[4]={0x00,0x00,0x00,0x00};uchar m,n,second2;
while(key2==0);
b=0;second2=0;
while(1)
{ for(m=0;m<=3;m++)
{ P1=display[0];
P3=saomiao[m];
if(m==2) LED=1;
delay1ms(1);
P3=0xff;
}
if(key3==0) break;
}
while(key3==0);
while(1)
{
if(b==100)
{ second2++;
if(second2==60) second2=0;
b=0;
}
paomiao[0]=b%10;
paomiao[1]=b/10;
paomiao[2]=second2%10;
paomiao[3]=second2/10;
for(n=0;n<=3;n++)
{ P1=display[paomiao[n]];
P3=saomiao[n];
if(n==2) LED=1;
delay1ms(1);
P3=0xff;
}
if(key3==0)
{ while(key3==0);break;}
}
while(1)
{ for(m=0;m<=3;m++)
{ P1=display[paomiao[m]];
P3=saomiao[m];
if(m==2) LED=1;
delay1ms(1);
P3=0xff;
}
if(key2==0) break;
}
while(key2==0);
while(1)
{ while(key2!=0)
{ P3=saomiao[3];
P1=display[clock[3]];
if(key3==0)
minute1=(clock[3]+1)*10;
while(key3==0);
if(clock[3]==6)
clock[3]=0;
P3=0xff;
}
while(key2==0);
while(key2!=0)
{ P3=saomiao[2];
P1=display[clock[2]];
LED=1;
if(key3==0)
minute1++;
while(key3==0);
if(clock[2]==10)
clock[2]=0;
P3=0xff;
}
while(key2==0);
while(key2!=0)
{ P3=saomiao[1];
P1=display[clock[1]];
LED=1;
if(key3==0)
second1=(clock[1]+1)*10;
while(key3==0);
if(clock[1]==6)
clock[1]=0;
P3=0xff;
}
while(key2==0);
while(key2!=0)
{ P3=saomiao[0];
P1=display[clock[0]];
LED=1;
if(key3==0)
second1++;
while(key3==0);
if(clock[0]==10)
clock[0]=0;
P3=0xff;
}
if(key2==0)
{ while(key2==0);break;}
}
while(key2==0);
while(key2!=0)
{ P3=saomiao[3];
P1=display[dingshi[3]];
if(key3==0)
{dingshi[3]++;flag=1;}
while(key3==0);
if(dingshi[3]==6)
dingshi[3]=0;
P3=0xff;
}
while(key2==0);
while(key2!=0)
{
P3=saomiao[2];
P1=display[dingshi[2]];
if(key3==0)
{ dingshi[2]++; flag=1;}
while(key3==0);
if(dingshi[2]==10)
dingshi[2]=0;
P3=0xff;
}
while(key2==0);
while(key2!=0)
{ P3=saomiao[1];
P1=display[dingshi[1]];
if(key3==0)
{ dingshi[1]++;flag=1;}
while(key3==0);
if(dingshi[1]==6)
dingshi[1]=0;
P3=0xff;
}
while(key2==0);
while(key2!=0)
{ P3=saomiao[0];
P1=display[dingshi[0]];
if(key3==0)
{dingshi[0]++;flag=1;}
while(key3==0);
if(dingshi[0]==10)
dingshi[0]=0;
P3=0xff;
}
while(key2==0);
TH1=0xff;
TL1=0xff;
TF1=0;
}
void main()
{ uchar i,k;
TMOD=0x51;
TH0=0xD8;
TL0=0xF0;
TH1=0xff;
TL1=0xff;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
IP=0x02;
while(1)
{ for(i=0;i<=3;i++)
{ P1=display[clock[i]];
if(i==2) {LED=1;}
P3=saomiao[i];delay1ms(1);P3=0xff;
}
if(flag==1&&clock[0]==dingshi[0]&&clock[1]==dingshi[1]&&clock[2]==dingshi[2]&&clock[3]==dingshi[3])
while(1)
{for(k=0;k<=3;k++)
{P1=display[clock[k]];
if(k==2) LED=!LED;
P3=saomiao[k];
delay1ms(100);
P3=0xff;}
if(key3==0)
{while(key3==0); flag=0; break;}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -