单片机数码管显示一位亮,其它三位能亮,但是很暗,没有那一位那么亮

RT,51编的电子钟,四位共阴极数码管,显示的数值没问题,就是第一位的亮度比其它三位亮很多

你电路数码管每段位没有加限流电阻,每个数码管没有加三极管,比较容易烧单片机。
把你切换每一个数码管阴极IO的那段代码发一下,我们帮你分析一下追问

外部程序循环时调用这个现实函数,后面那个TAB是因为焊板子的时候焊错了位置,所以在程序里改成那样的,现实是数值没问题的

追答

你程序的问题在于,每次调用这个函数的时候,4个数码管刷新一遍,所以4个数码管都会亮,在这个函数内部,4个数码管是一样亮的。但是函数返回的时候一直到下次再调用这个程序这段时间(很长的时间)都是程序里面最后一个数码管在亮,所以造成你所说的现象。
解决的方法,最简单的就是在RET这条语句的上面插入下面这几句话
NOP
NOP
NOP
NOP
NOP
NOP
MOV P2,#11111111B

RET

这样可以解决屏幕亮度不均匀的问题,但是数码管使用率很低,可以用定时器来切换显示的数码管,比如10ms定时器,每隔10ms切换到下一个数码管。这样数码管会很亮。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-25
有可能是程序中第一位扫描的次数比其它位多
或者是扫描时间比其它的长
第2个回答  2011-11-25
你是用扫描方式进行现实的,用示波器看看,扫描脉宽是否相同。

单片机控制数码管为什么显示很暗
长期点亮就是 数码管最亮 的时候。但动态显示中做不到长期点亮,那么就要换种说法:最大可能让它长期亮,就是 数码管最亮的时候。也就是说,数码管亮的时间越长,它就越亮。又但是,动态显示中,数码管亮的时间越长,几个数码管就会变得一闪一闪的,甚至是,一个亮完另一个亮,跟流水灯似的。这...

单片机控制数码管为什么显示很暗
原因1:公共端需要使用外部扩流控制(也就是通过三极管来处理,如果数码管是共阳极 采用PNP三极管 接VCC供电,如果采用共阴 则采用NPN,拉地)原因2,:要使数码管正常点亮,必须提供大于3mA,那么8段就是24mA,对于单片机来说比较伤 原因3,:数码管的每一段,都是一颗发光二极管,VF值一般1.8V左右...

数码管动态显示的时候不该亮的地方也亮了,比该亮的地方暗一点,是怎么...
原因是你你没有加上“消影”。解释:当你显示第一个数码管,这时段码和位码都是开启的,当显示完第一个数码管,由于段码连在一起,没有关闭段码,这时开启第二位位码,在交替的瞬间第二个数码管上就显示第一个的数字,于是就出现第一位的暗影,假如第一位是2,第二位是1,这样显示1的数字不该亮的部分出现了2的...

使用单片机驱动4位数码管,亮度不一样,第一位很亮,其他很暗,为什么?
程序里没有做鬼影处理。你每次显示一位数码管之后,在delay之后都将P1和P3口清空,当然是按照你的电路来写,目的就是让数码管什么也不显示。然后再次赋值显示下一位的值。建议使用定时器来显示,这样能保证每一位的亮度完全相同。

单片机上当点亮一个数码管时,其他数码管也有微弱的点亮,为什么?
没看到电路、程序,完全是猜测:通常现在点亮数码管都用分时电路,也就是跟总线制的数据交换类似的,共用数据线+单独的片选信号构成分时复用。这种分时方式,适应高速CPU跟低速外围输入输出接口,可以减少I\/O口的占用,是比较划算的做法。本来这种方案是非常成熟的,但你说会干扰其它未片选的管子,我想原因...

单片机数码管亮度不一样
修改显示函数如下:void smg_display(uchar FirstBit, uchar Num){ uchar i;for(i = 0; i < Num; i++) { P1 = smg_wei[i + FirstBit]; wei = 1; wei = 0;P1 = temp[i]; duan = 1; duan = 0;delay(2);P1 = 0; duan = 1; duan = 0;} } 试试看。

数码管显示问题,在单片机没有程序时候,数码管全部显示8,为什么有一...
看你的数码管是共阴极还是共阳极 如果是共阳极 刚开始就会显示全8

单片机 单个可以显示 整体不显示
要想全部显示,肯定是所有的使能端都要有效撒。这样才会全部显示的撒。当然也可以 轮询的,但是轮询时间要很短的,短到你的眼睛根本反应不过来的程度的,这样的话,你就会觉得是全部都显示的。

数码管显示全亮并且该亮的竟然和不亮的一样亮按住按键才能显示
你这样接,那数码管肯定是不动态扫描的显示方式,就算是亮了,也显示不出四位数的。仿真的时候好使,那只是显示一位数才行。仿真就不存在驱动问题,当然好使了,可这是实物,不是仿真。建议你用STC单片机,P0口就可以直接驱动共阳数码管,但是要同时显示四位数,必须要采用动态扫描显示电路。

数码管动态显示一边暗一边亮还有重叠怎么回事?代码哪里不对?_百度知 ...
一个是位选锁存器,一个是段选锁存器。打开位选锁存器,选中你要点亮的数码管。然后再关闭位选锁存器。接着打开段选锁存器,然后输出你要亮的数字,再关闭段选锁存器。再加一个while(1);以上我说的是静态显示。你先把这个亮起来吧。你的动态显示有头文件#include"intrins.h",可是你的移位...

相似回答