单片机C程序疑问,数码管锁存器静态显示?

2025-02-27 09:25:57
推荐回答(3个)
回答1:

这个程序是很正常的,你的疑是多余的。上电后I/O为高电平,没错,P1=0xfe,是段选码(不是位选码),这时的位选锁存器(wela)确实也是加0xfe,但却不会锁存下来,而是由于dula=0; 0xfe被锁存在段选锁存器内,对位选锁存器毫无影响。接下来,又有P1=0x7f,又送入位选锁存器,这时,wela=0; 这才真正被锁存到位选锁存器内。所以,段选码和位选码都是正确的。

回答2:

这个就是数码管的动态刷新问题,你直接将要显示的数的对应数码管值从你的p1口输出,然后选择1或者2来显示,再做个几毫秒的延时,再将下一个要显示的数的对应数码管值从你的p1口输出,然后选择2或者1来显示,再做个几毫秒的延时,循环这个过程就行了。当然数码管的1、2也要接到单片机的输出口上,才能选择,而且还要考虑你的数码管是共阴还是共阳的接法,这样才能正确的选择p1口的输出电平和1、2两个接口的输入电平

回答3:

你的dula 和wela弄反了,dula送的是数码管显示的内容,wela是哪个数码管亮。
至于你说的复位后,单片机各个IO口所输出高电平,你再看一下I/O定义吧,准双向。