51单片机学习版数码管显示的问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 21:34:02
有六个数码管,点亮任意五个就会不停闪烁,点亮任意四个就可以正常显示。
请问这是什么问题,是硬件电路设计问题还是程序的问题?
下面是点亮六个的程序,六个一直闪。
void main()
{
wela=1;
P0=0xc0;
wela=0;
dula=1;
P0=0x3f;
dula=0;
while(1);
}
另外,显示1,C,F三个时就怎么显示都没问题。
段选,位选接的是P2.6和P2.7。
有没有可能是硬件电路哪里连上了呢?
就是看着他的视频学的……

你要显示6个数码管,不明白你为什么要这样写,上面代码,你使用的是静态显示方式,也就是程序一次开了6个位选(0xc0),用wela锁存,再输出数据'0'到6个数码管,用dula锁存,然后终止程序(死循环),这种静态显示方式,理论上6个数码管的显示内容一样,但可能由于静态输出电流过大,导致芯片复位...

即使显示静态内容,最好还是用扫描方式显示,在一个循环中,每次开一个位选,再输出一次数据,加适当延时,只要刷新率够高,就可以了,虽然相对静态显示亮度有所下降,但功率很小.当把显示的6个编码内容存入数组,在必要时修改数组,即可实现动态显示了.

我遇到了和你一模一样的问题,我的也是P2.6和2.7控制的,我是TX-1C的板子,不地和你一样的板子吗?你是怎么解决的?求帮助呀

我认为程序没有错误:wela应该是打开数码管的6个位选,dula控制8个LED显示数字
所以你的硬件部分有问题:1:wela,dula不要接P0口。2:估计外加一个电压适配器看看,可能是功率不够。

注:这个程序有郭天祥的风格