|
#include<reg51.h>
#define uchar unsigned char
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5;
unsigned char j,k,a1,a0,b1,b0,c1,c0,s,f,m,r1,r0,t1,t0,y1,y0,q,w,e,key=10,temp,qq=0,mb=5;
uchar shi20,shi10,fen20,fen10,miao20,miao10,new,ok=1,wei=1;
unsigned int pp,ppp;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(int i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1)
{
LSA=0;LSB=0;LSC=0;
P0=table[shi2];
delay(5);
LSA=1;LSB=0;LSC=0;
P0=table[shi1]|0x80;
delay(5);
LSA=1;LSB=1;LSC=0;
P0=table[fen2];
delay(5);
LSA=0;LSB=0;LSC=1;
P0=table[fen1]|0x80;
delay(5);
LSA=0;LSB=1;LSC=1;
P0=table[miao2];
delay(5);
LSA=1;LSB=1;LSC=1;
P0=table[miao1];
delay(5);
}
void keyscan0()
{
P1=0xff;
temp=P1;
if(temp!=0xff)
{
delay(10);
if(temp!=0xff)
{
temp=P1;
if(temp==0xfe)
{
ok++;
if (ok==3)
ok=0;
}
}
}
}
void keyscan()
{
{
P3=0xff;
temp=P3;
if(temp!=0xff)
{
delay(10);
if(temp!=0xff)
{
temp=P3;
switch(temp)
{case 0xfb :
key=3;
wei++;
if (wei==7)
wei=1;
break;
case 0xf7:
key=4;
break;
case 0xfd:
mb++;
if(mb==8)
mb=5;
break;
}
}
}
}
}
void main()
{
TMOD=0x01;
TH0=0xdc;
TL0=0x00;
ET0=1;
EA=1;
while(1)
{ keyscan0();
while(P1!=0xff);
if(ok==1)
{ TR0=1;
if(pp>=100)
{ pp=0;
m++;
if(m==60)
{
m=0;
f++;
if(f==60)
{
f=0;
s++;
if(s==24)
{
s=0;
}
}
}
}
a0=s%10;
a1=s/10;
b0=f%10;
b1=f/10;
c0=m%10;
c1=m/10;
display(a1,a0,b1,b0,c1,c0);
}
else if(ok==2)
{
TR0=1;
keyscan();
while(P3!=0xff);
if(mb==5)
{
q=0;
w=0;
e=0;
mb=6;
pp=0;
}
if(mb==6)
{
if(qq!=pp)
{
e++;
if(e==100)
{
e=0;
w++;
if(w==60)
{
w=0;
q++;
if(q==60)
{
q=0;
}
}
}
}
}
r0=q%10;
r1=q/10;
t0=w%10;
t1=w/10;
y0=e%10;
y1=e/10;
display(r1,r0,t1,t0,y1,y0);
if(pp>=100)
{ pp=0;
m++;
if(m==60)
{
m=0;
f++;
if(f==60)
{
f=0;
s++;
if(s==24)
{
s=0;
}
}
}
}
a0=s%10;
a1=s/10;
b0=f%10;
b1=f/10;
c0=m%10;
c1=m/10;
}
else
{ TR0=0;
keyscan();
while(P3!=0xff);
if(key==3)
{key=0;
switch(wei)
{
case 1:
LSA=0;LSB=0;LSC=0;
P0=table[a1];
break;
case 2:
LSA=1;LSB=0;LSC=0;
P0=table[a0]|0x80;
break;
case 3:
LSA=1;LSB=1;LSC=0;
P0=table[b1];
break;
case 4: LSA=0;LSB=0;LSC=1;
P0=table[b0]|0x80;
break;
case 5:
LSA=0;LSB=1;LSC=1;
P0=table[c1];
break;
case 6:
LSA=1;LSB=1;LSC=1;
P0=table[c0];
break;
}
}
if(key==4)
{
key=0;
switch(wei)
{
case 1: //±×2
a1++;
if(a1==3)
a1=0;
LSA=0;LSB=0;LSC=0;
P0=table[a1];
break;
case 2:
a0++;
if (a1==2)
{
if(a0==4)
a0=0;}
else if (a0==10)
a0=0;
LSA=1;LSB=0;LSC=0;
P0=table[a0]|0x80;
break;
case 3: //·×6
b1++;
if(b1==6)
b1=0;
LSA=1;LSB=1;LSC=0;
P0=table[b1];
break;
case 4:
b0++;
if(b0==10)
b0=0;
LSA=0;LSB=0;LSC=1;
P0=table[b0]|0x80;
break;
case 5: //×6
c1++;
if(c1==6)
c1=0;
LSA=0;LSB=1;LSC=1;
P0=table[c1];
break;
case 6:
c0++;
if(c0==10)
c0=0;
LSA=1;LSB=1;LSC=1;
P0=table[c0];
break;
}
// while(P3!=0xff);
}
m=c1*10+c0;
f=b1*10+b0;
s=a1*10+a0;
}
}
}
void time0() interrupt 1
{ TH0=0xdc;
TL0=0x00;
qq=pp;
pp++;
}
|
|