这是我写的让单片机led以百分之一从000到999的代码,但出现了问题,就是个,十位的亮度很低,而且各位总是与百位相同。应该怎么改呢,
代码:
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
u16 shuma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit c=P2^4;
sbit b=P2^3;
sbit a=P2^2;
sbit key=P3^1;
u16 ci=0;
u16 num=0;
#define duan P0
void delay(u16 k){ while(k--);}
void display(u16 num)
{
u16 ge,shi,bai;
ge=num%10;
shi=num%100/10;
bai=num/100;
a=0;b=0;c=0;
duan=shuma[ge];
a=1;b=0;c=0;
duan=shuma[shi];
a=0;b=1;c=0;
duan=shuma[bai];
delay(100);}
void timer()
{ TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;
EA=1;
TR0=1;
}
void zhongduan() interrupt 1
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ci++;
}
void main()
{
timer();
while(1)
{
while(key==0)
{
delay(500);
while(key==0)
{
EA=0;
display(num);
}
}
if(key==1)
{
EA=1;
}
if(ci==1)
{
ci=0;
num++;
}
if(num>999)
num=0;
display(num);
}
}