楼主,程序有问题吧??你的这段感觉有点不对哦?
你的P0口是控制段码的吧?那为什么又用到了位选呢?没有仔细看你其他的程序,你先改改这里看看吧。由于你没有接线图,或许我说错了,如果有什么问题,希望你能给个图,这样大家能帮你。
还有就是dula 和wela是什么意思?
********************数显程序****************************/
void display(uchar shi,uchar ge)
{
dula=1;P0=led[bai];dula=0;
wela=1;P0=0xf7;wela=0;delay(48);
dula=1;P0=led[shi];dula=0;
wela=1;P0=0xef;wela=0;delay(48);
dula=1;P0=led[ge];dula=0;
wela=1;P0=0xdf;wela=0;delay(48);
}
/********************************************************/
虽然还没看你的程序,不过我觉得有可能是软件问题,proteus仿真不是万能的。我以前也仿真过数码管,也闪得很厉害,不过下载到现实的开发板上时不会,建议你下载到开发板上试试
这样的出问题是常事。建议楼主换个端口吧,使电路图尽可能的简单。主要是P0口本身要接上拉电阻,如果端口充足的话,尽量不要局限于一个端口来控制,毕竟其在一定的延时内锁存及数码管的反应有困难。
我有时间的话会在下面依照楼主的图亲自做做,等有结果了再来和大家讨论
楼主弄错了。
对于共阴数码管,若采用8050三极管做位选时,应该三极管的C极接数码管的公共端,E极接地,B极通过一个1K欧的电阻接IO口(四位中的一位接法)。否则是不能点亮的,原因是数码管需要3V以上才能点亮,再加上三极管的BE电压,所以最少需要3.7V电压,若按照你的接法,除非IO输出电压能够达到5V才能勉强点亮,实际很多IO电压带负载时不过3.4V左右或者更低,自然不能点亮了。
其实,对于单片机来说,由于内部是准双向IO结构,采用PNP型三极管驱动特性更好,建议改用8550.