本帖最后由 lyk_12266 于 2010-5-28 08:45 编辑
电路图用的是郭天祥TX-1C的电路图,只画了led和数码管部分。
做数码管动态显示654321,下面是程序
#include<reg52.h>
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar numdu,numwe,a;
uchar code table[]={0x7d,0x6d,0x66,0x4f, 0x5b,0x06};
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void main()
{
TMOD=0x01;
TH0=0xfc;
TL0=0x66;
EA=1;
ET0=1;
TR0=1;
a=0;
while(1)
{
if(a==10)
{
a=0;
numdu++;
numwe++;
dula=1;
if(numdu==6)
numdu=0;
P0=table[numdu];
dula=0;
wela=1;
if(numwe==6)
numwe=0;
P0=tablewe[numwe];
wela=0;
}
}
}
void time0() interrupt 1
{
TH0=0xfc;
TL0=0x66;
a++;
}
中断时时间是1ms,当a取值100或50的时候显示的是一个一个出现的字符,但是当a取得过于小时数码管显示变得不正常,看不到完整的数字,再将a取得更小时,比如10,仿真会出错,出现提示信息,这提示信息是什么意思,该怎么解决,仿真出错的原因是什么,还有数码管为什么看不到完整字符,请帮忙解释下,非常感谢
|