📄 -
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar led[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar a[4];
sbit sm1=P2^7;
sbit sm2=P2^6;
sbit sm3=P2^5;
sbit sm4=P2^4;
sbit beep=P2^0;
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
uchar hour=0,minute=0,second=0;
uchar hour1=0,minute1=0,miao=0,jishi=0,biao=0,sec=0,stop=0;
uint temp,q,b,c,d;
uchar M,S_flag;
uchar k=0,s=0;
void delay(uint n) //延时0.2毫秒
{
int x,y;
for(x=0;x<n;x++)
for(y=0;y<24;y++);
}
void init()
{
M=0;
S_flag=0;
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
beep=0;
}
void time0() interrupt 1
{ TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
temp++;
if(temp==200)
{
temp=0;
second++;
}
if(second==59)
{
second=0;
if(minute<59)
minute++;
else{ minute=0;
hour++;
hour%=24;}
}
if((minute1==minute)&&(second<10))
beep=!beep;
if(stop==1) beep=0;
if(second>=10) beep=0;
if(temp%20==0)
S_flag=!S_flag;
/* if(k==4) k=0;
P0=a[k++];*/
if(jishi==2)
{ sm1=0;
P0=led[q];
delay(5);
sm1=1;
sm2=0;
P0=led[b];
delay(5);
sm2=1;
sm3=0;
P0=led[c];
delay(5);
sm3=1;
sm4=0;
P0=led[d];
delay(5);
sm4=1;
}
else
{if(jishi==1)
{ biao++;
if(biao>99)
{biao=0;
sec++;
}
if(sec>59) sec=0;
q=sec/10;
b=sec%10;
c=biao/10;
d=biao%10;
sm1=0;
P0=led[q];
delay(5);
sm1=1;
sm2=0;
P0=led[b];
delay(5);
sm2=1;
sm3=0;
P0=led[c];
delay(5);
sm3=1;
sm4=0;
P0=led[d];
delay(5);
sm4=1;
}
else{ biao=0;
sec=0;
if(s==4) s=0;
if(miao==1)
{
sm3=1;
sm4=1;
sm1=0;
P0=a[4];
delay(10);
sm1=1;
sm2=0;
P0=a[5];
delay(10);
sm2=1;
}
else
{if(s==0)
{
P0=a[0];
sm1=0;
delay(5);
sm1=1;
}
if(s==1)
{
sm2=0;
P0=a[1];
delay(5);
sm2=1;
}
if(s==2)
{
sm3=0;
P0=a[2];
delay(5);
sm3=1;
}
if(s==3)
{
sm4=0;
P0=a[3];
delay(5);
sm4=1;
}
s++;}
}
} }
void display()
{ switch(M)
{ case 0:
{ a[0]=led[hour/10];
a[1]=led[hour%10];
a[2]=led[minute/10];
a[3]=led[minute%10];
a[4]=led[second/10];
a[5]=led[second%10];
}break;
case 1:
{ if(S_flag==1)
{a[0]=led[hour/10];
a[1]=led[hour%10];}
else{a[0]=led[10];
a[1]=led[10];}
a[2]=led[minute/10];
a[3]=led[minute%10];
a[4]=led[second/10];
a[5]=led[second%10];
}break;
case 2:
{
a[0]=led[hour/10];
a[1]=led[hour%10];
if(S_flag==1)
{a[2]=led[minute/10];
a[3]=led[minute%10];}
else{a[2]=led[10];
a[3]=led[10];}
a[4]=led[second/10];
a[5]=led[second%10];
}break;
case 3:
{ if(S_flag==1)
{a[0]=led[hour1/10];
a[1]=led[hour1%10];}
else{a[0]=led[10];
a[1]=led[10];}
a[2]=led[minute1/10];
a[3]=led[minute1%10];
a[4]=led[second/10];
a[5]=led[second%10];
}break;
case 4:
{
a[0]=led[hour1/10];
a[1]=led[hour1%10];
if(S_flag==1)
{a[2]=led[minute1/10];
a[3]=led[minute1%10];}
else{a[2]=led[10];
a[3]=led[10];}
a[4]=led[second/10];
a[5]=led[second%10];
}break;
}
}
void key_prc()
{if(key1==0)
{delay(10);
if(key1==0)
{M++;
if(M==5)
M=0;}
while(!key1);
}
if(M==0&&key2==0)
{delay(10);
if(key2==0)
{miao++;
if(miao==2)
miao=0; }
while(!key2);
}
if(M==0&&key3==0)
{delay(10);
if(key3==0)
{jishi++;
if(jishi==3)
jishi=0; }
while(!key3);
}
if(M==0&&key4==0)
{delay(10);
if(key4==0)
{stop++;
if(stop==2)
stop=0; }
while(!key4);
}
if(M!=0)
{ switch(M)
{case 1:
{if(key3==0)
{delay(10);
if(key3==0)
{if(hour<23) hour++;
else hour=0;
}
while(!key3);
}
if(key4==0)
{delay(10);
if(key4==0)
{if(hour>0) hour--;
else hour=23;
}
while(!key4);
}
}break;
case 2:
{if(key3==0)
{delay(10);
if(key3==0)
{if(minute<59) minute++;
else minute=0;
}
while(!key3);
}
if(key4==0)
{delay(10);
if(key4==0)
{if(minute>0) minute--;
else minute=59;
}
while(!key4);
}
}break;
case 3:
{if(key3==0)
{delay(10);
if(key3==0)
{if(hour1<23) hour1++;
else hour1=0;
}
while(!key3);
}
if(key4==0)
{delay(10);
if(key4==0)
{if(hour1>0) hour1--;
else hour1=23;
}
while(!key4);
}
}break;
case 4:
{if(key3==0)
{delay(10);
if(key3==0)
{if(minute1<59) minute1++;
else minute1=0;
}
while(!key3);
}
if(key4==0)
{delay(10);
if(key4==0)
{if(minute1>0) minute1--;
else minute1=59;
}
while(!key4);
}
}break;
}
}
}
void main()
{ init();
while(1)
{key_prc();
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -