单片机数码管显示的程序有错误详情看问题补充

2025-04-13 21:18:55
推荐回答(3个)
回答1:

好奇怪,你显示第一个数码管一直让P2_0=0不就得了。要关掉其它数码管,另其控制IO为1不就得了。
void main()
{
P2=0xff;
P2_0=0;
while(1)
{
P0=table[0];
shanshuo(1500);
P0=table[1];
shanshuo(1500);
}
}
此外,会有鬼影产生除了程序问题外,电路也是很重要的。像采用扫描方式驱动LED数码管的,布线也会有串扰现象。解决方法:1、布线合理,不要使用太多飞线,并且不要把飞线缠在一起。
2、增强驱动三极管抗扰能力。NPN型三极管可在基极与地之间接10K左右下拉电阻。PNP可在基极与VCC之间接10K左右上拉电阻。这很大程度上能避免鬼影产生。
最后提点建议,子程序或变量命名不要采用中文拼音的形式啦!看得好辛苦,虽然我们是中国人,但编程无国界,还是与国际接轨好!

回答2:

#include
#define uint unsigned int
#define uchar unsigned char
sbit P2_0 = P2^0;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void shanshuo(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
P2=0xff;
while(1)
{
P2_0 = 0;
P0=table[0];
shanshuo(1500);
P0=0xff;
shanshuo(5);
P0=table[1];
shanshuo(1500);
P0=0xff;
shanshuo(5);
}
}

回答3:

是不是for太短了,