我在给单片机编程时,想让第一个数码管亮,然后编了下面的程序

2024-12-14 20:50:23
推荐回答(5个)
回答1:

你好
如楼上说的,程序没问题,第一段程序,先把语句顺序调一下:
void main()
{
P0=0xfe;
wela=1;
wela=0;

P0=0x06;
dula=1;
dula=0;
}
还不行的话,查查电源电压,是否在4.5-5.5.

第二段程序是扫描速度太快,造成MCU外部芯片跟不上MCU的速度,在末尾加入延时,才能正常,如:
void Delay(unsigned int t)
{
while(--t);
}
主程序:
while(1)
{
wela=1;
P0=0xfe;
wela=0;

dula=1;
P0=0x06;
dula=0;
Delay(200); //扫描间隙延时,时间太长会闪烁,太短会造成重影
}

回答2:

程序没有错,换换点亮其他的数码管试试看

回答3:

LZ应该又是一个被 郭tian祥 荼毒的人吧?

我不知道你的wela 跟 dula 是什么电平使能,不过,不管它是什么电平使能,结果都是一样出现残影 或 错位 问题。
开启位选wela=1,发送显示位P0=0xfe,关闭位选wela=0,开启段选dula=1,LZ想想,这个时候开启位选,就会马上把P0的数据送到 数码管数据端,而此时P0的数据,不是0x06,而是0xfe,能不出错吗?
如果我估计错误,wela=1不是开启,而是关闭,那分析过程也类比于上面描述。推敲不出来,可以续问。

回答4:

你这是动态还是静态?

回答5:

你先查一下引脚有没有错,,然后看一下锁存器的语句有没有错。。