試試這個
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar count,jd;
sbit pwm=P1^0;
sbit jia=P3^2;
sbit jian=P3^3;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uchar x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=125;j>0;j--);
}
void Time0_init()
{
TMOD=0x01;
IE=0x82;
TH0=0xfe;
TL0=0x33;
TR0=1;
}
void Time0() interrupt 1
{
TH0=0xfe;
TL0=0x33;
if(count<jd)
pwm=1;
else
pwm=0;
count=count+1;
count=count%40;
}
void keyscan()
{
if(jia==0)
{
delay(10);
if(jia==0)
{
jd++;
count=0;
if(jd==6)
jd=5;
while(jia==0);
}
}
if(jian==0)
{
delay(10);
if(jian==0)
{
jd--;
count=0;
if(jd==0)
jd=1;
while(jian==0);
}
}
}
void display()
{
uchar bai ,shi,ge ;
switch(jd)
{
case 1:
bai=0;
shi=0;
ge=0;
break;
case 2:
bai=0;
shi=4;
ge=5;
break;
case 3:
bai=0;
shi=9;
ge=0;
break;
case 4:
bai=1;
shi=3;
ge=5;
break;
case 5:
bai=1;
shi=8;
ge=0;
break;
}
P0=table[bai];
P2=1;
delay(5);
P0=table[shi];
P2=2;
delay(5);
P0=table[ge];
P2=3;
delay(5);
}
void main()
{
count=0;
Time0_init();
while(1)
{
keyscan();
display();
}
} |