|
#include<reg51.h>
#define uchar unsigned char
#define unit unsigned int
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit Bueer=P1^5;
sbit key1=P3^1;
sbit key2=P3^2;
sbit key3=P3^3;
sbit key4=P3^4;
sbit key5=P3^5;
sbit key6=P3^6;
sbit key7=P3^7;
sbit key0=P3^0;
uchar aa,h,m,s,n,i,sec,min,hour;
void delay(unit z)
{
unit x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display()
{
if(key0==1)
{
P2=0xfe;
P0=table[s%10];
delay(1);
P2=0xfb;
P0=40;
delay(1);
P2=0xf7;
P0=table[m%10];
delay(1);
P2=0xef;
P0=table[m/10];
delay(1);
P2=0xdf;
P0=0x40;
delay(1);
P2=0xbf;
P0=table[h%10];
delay(1);
P2=0x7f;
P0=table[h/10];
delay(1);
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
aa=0;
s++;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
h++;
if(h==24)
h=0;
}
}
}
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
while(!key1);
n++;
TR0=0;
if(n==1)
{
P2=0xfe;
P0=table[s%10];
delay(1);
P2=0xfd;
P0=table[s/10];
delay(1);
}
if(n==2)
{
P2=0xf7;
P0=table[m%10];
delay(1);
P2=0xef;
P0=table[m/10];
delay(1);
}
if(n==3)
{
P2=0xbf;
P0=table[h%10];
delay(1);
P2=0x7f;
P0=table[h/10];
delay(1);
}
if(n==4)
{
TR0=1;
n=0;
}
}
}
if(n!=0)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
while(!key2);
if(n==1)
{
s++;
if(s==60)
s=0;
}
if(n==2)
{
m++;
if(m==60)
m=0;
}
if(n==3)
{
h++;
if(h==24)
h=0;
}
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
while(!key3);
if(n==1)
{
if(s==0)
s=60;
s--;
}
if(n==2)
{
if(m==0)
m=60;
m--;
}
if(n==3)
{
if(h==0)
h=24;
h--;
}
}
}
}
}
void keyscan2()
{
if(key0==0)
{
P2=0xfe;
P0=table[sec%10];
delay(1);
P2=0xfd;
P0=table[sec/10];
delay(1);
P2=0xfb;
P0=0x40;
delay(1);
P2=0xf7;
P0=table[min%10];
delay(1);
P2=0xef;
P0=table[min/10];
delay(1);
P2=0xdf;
P0=0x40;
delay(1);
P2=0xbf;
P0=table[hour%10];
delay(1);
P2=0x7f;
P0=table[hour/10];
delay(1);
}
if(key4==0)
{
delay(10);
if(key4==0)
{
while(!key4);
{
min++;
if(min==60)
min=0;
}
}
}
if(key5==0)
{
delay(10);
if(key5==0)
{
while(!key5);
{
hour++;
if(hour==24)
hour=0;
}
}
}
if(key6==0)
{
delay(10);
if(key6==0)
{
while(!key6);
{
if(min==0)
min=60;
min--;
}
}
}
if(key7==0)
{
delay(10);
if(key7==0)
{
while(!key7);
{
if(hour==0)
hour=24;
hour--;
}
}
}
Bueer=1;
if((h==hour)&(m==min)&(s==sec))
{
for(i=0;i<100;i++)
{
Bueer=!Bueer;
delay(40);
}
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
keyscan();
keyscan2();
display();
}
}
|
|