~~~
#include<reg51.h>
sbit Key0=P2^0;// 控制开关
sbit Key1=P2^1; //控制调节的变量
sbit Key2=P2^2;// 增加
sbit Key3=P2^3; // 减少
unsigned char code Dx[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code Wx[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char playdata[8]={0};
char min=0;
char ms=0;
char h=0;
void main()
{
unsigned int i;
unsigned char xuanzhe=0;
unsigned char j;
EA=1;
TMOD=0x10;
TH1=0xB8;
TL1=0x00;
ET1=1;
TR1=1;
while(1)
{
if(!Key0)
{
for(i=1000;i>0;i--);
if(!Key0)
{
EA=~EA;
while(!Key0);
}
}
if(!Key1)
{
for(i=1000;i>0;i--);
if(!Key1)
{
xuanzhe++;
while(!Key1);
}
if(xuanzhe>3)
xuanzhe=0;
}
if(!Key2)
{
for(i=1000;i>0;i--);
if(!Key2)
{
switch(xuanzhe)
{
case 1:
{
ms++;
if(ms>=60)
{
ms=0;
min++;
if(min>=60)
{
min=0;
h++;
if(h>=24)
h=0;
}
}
break;
}
case 2:
{
min++;
if(min>=60)
{
min=0;h++;
if(h>=24)
h=0;
}
break;
}
case 3:
{
h++;
if(h>=24)
h=0;
break;
}
}
while(!Key2);
}
}
if(!Key3)
{
for(i=1000;i>0;i--);
if(!Key3)
{
switch(xuanzhe)
{
case 1:
{
ms--;
if(ms<=0)
{
ms=59;
min--;
if(min<=0)
{
min=59;
h--;
if(h<=0)
{
h=23;
}
}
}
break;
}
case 2:
{
min--;
if(min<0)
{
h--;
if(h<0)
h=23;
}
break;
}
case 3:
{
h--;
if(h<0)
h=23;
break;
}
}
while(!Key3);
}
}
playdata[0]=Dx[h/10];
playdata[1]=Dx[h%10];
playdata[2]=0x80;
playdata[3]=Dx[min/10];
playdata[4]=Dx[min%10];
playdata[5]=0x80;
playdata[6]=Dx[ms/10];
playdata[7]=Dx[ms%10];
for(i=0;i<8;i++)
{
P0=0x00;
P0=playdata[i];
P1=Wx[i];
j=200;
while(j--);
}
}
}
void Timer1() interrupt 3
{
static unsigned char cnt=0;
TH1=0xB8;
TL1=0x00;
cnt++;
if(cnt>=50)
{
cnt=0;
ms++;
if(ms>=60)
{
ms=0;
min++;
if(min>=60)
{
min=0;
h++;
if(h>=24)
h=0;
}
}
}
}
~~~