请问我用定时中断去显示数码管,0-60,为什么数码管总会有个二极管不亮的?
图:数码管应该显示02的!可是总缺失一个部位!
有高手可以帮忙么?
谢谢!
代码如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit WEI=P2^0;
sbit DUAL=P2^1;
uchar code seg[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01};
uchar num,count,ge,shi;
void delay(uchar i);
void display(uchar shi, uchar ge);
void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
IE=0x82;
TR0=1;
while(1)
{
display(shi,ge); //显示
};
}
//中断
void T0_time0()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
count++;
if(count==60)//计数60后为0
{
count=0;
}
ge=count%10;
shi=count/10;
}
}
//显示子函数
void display(uchar shi, uchar ge)
{
DUAL=1;//段选
P0=seg[ge];//个位
DUAL=0;
P0=0XFF;
WEI=1;//位选
P0=0xfe;
WEI=0;
delay(10);
DUAL=1;
P0=seg[shi];//十位
DUAL=0;
P0=0XFF;
WEI=1;
P0=0xfd;
WEI=0;
delay(10);
}
//延时
void delay(uchar i)
{
uint j;
for(; i>0; i--)
for(j=110; j>0; j--); |