proteus 数码管显示不正常

电路图用的是郭天祥TX-1C的电路图,只画了led和数码管部分。
做数码管动态显示654321,下面是程序
#include<reg52.h>
#define uchar unsigned char

sbit dula=P2^6;
sbit wela=P2^7;
uchar numdu,numwe,a;

uchar code table[]={0x7d,0x6d,0x66,0x4f, 0x5b,0x06};
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

void main()
{
TMOD=0x01;
TH0=0xfc;
TL0=0x66;
EA=1;
ET0=1;
TR0=1;
a=0;

while(1)
{

if(a==10)
{
a=0;
numdu++;
numwe++;
dula=1;
if(numdu==6)
numdu=0;
P0=table[numdu];
dula=0;
wela=1;
if(numwe==6)
numwe=0;
P0=tablewe[numwe];
wela=0;
}
}

}

void time0() interrupt 1
{
TH0=0xfc;
TL0=0x66;
a++;
}
中断时时间是1ms,当a取值100或50的时候显示的是一个一个出现的字符,但是当a取得过于小时数码管显示变得不正常,看不到完整的数字,再将a取得更小时,比如10,仿真会出错,出现提示信息,这提示信息是什么意思,该怎么解决,仿真出错的原因是什么,还有数码管为什么看不到完整字符,请帮忙解释下,非常感谢

第1个回答  推荐于2020-01-05

呵呵,显示不正常,是因为缺少“消隐”所致。

当你更新显示的“段”的时候,显示的位置,还是在前一时间的“位”上;

然后你再更新“位”,这就出现移动的效果了。

看插图,增加消隐的环节后,我把a,逐步减小,减小到1,都能正常显示。

楼主出错的原因,可能是其它问题。

本回答被提问者采纳
第2个回答  2010-05-19
仿真的时候就是会出错 我也试过我改过成5根本就没有显示了 改成了40——50之间差不多 但是还是有闪烁 但是我试过如果直接用单片机的引脚去驱动两个发光二极管的话是没有任何闪烁的 个人认为之所以不正常关键就是74HC573这个锁存器的问题 这可能也是proteus的bug吧 我做数码管仿真的时候都是直接驱动数码管的段选和位选的 这样是没有问题的
其实掌握动态显示的思路和方法 数码管再多也是同样的思路 你可以试试我说的直接驱动2个数码管动态显示
有什么问题我们再交流
第3个回答  2010-05-19
楼上的回答有道理,我也遇到类似的问题。

用proteus仿真,两个数码显示管显示不正常,跪谢大神哥帮我看看原因,图如...
你的程序没有问题,是仿真图画得不对,P0口用的7个上拉电阻的阻值太大了,用的是RES,阻值没有显示出来,那就是默认的10K,就不可能亮的,改成300殴才行。而P2口的7条线加的网络标号不对,很明显数码管上的引脚状态与P2口的状态不符。P0口的上拉电阻用一个电阻排RESPACK-8。可以画成下面的图...

proteus中数码管显示乱码,程序没有问,求大神帮忙看一下
程序没问题。proteus的动态显示1~10MS都正常。估计问题出在preoteus仿真上。因为软件对三极管支持的不太好,所以显示不正常。试试去掉三极管,同时改下代码为先激穿馆费弋渡龟杀骇辑高电平点亮,延时,再低电平熄灭。

proteus 仿真时候端口是灰色而且数码管一直不能正常显示,但是LED的显示...
呵呵,显示不正常,是因为缺少“消隐”所致。当你更新显示的“段”的时候,这可能也是proteus的bug吧 我做数码管仿真的时候都是直接驱动数码管的段选和

8位数码管在proteus不显示数字
题主是否想询问“8位数码管在proteus不显示数字原因”?连接问题、代码问题。1、连接问题:数码管的引脚与proteus中的电路连接正确。检查引脚是否正确连接到了单片机或其他驱动芯片的输出脚上。2、代码问题:检查代码是否正确地控制了数码管的显示。正确地设置了数码管的段码和位码,并按照正确的时序进行...

proteus数码管显示为什么显示全零
proteus数码管显示为什么显示全零的原因:1、程序编写错误proteus数码管显示为零。2、程序缺少循环,电阻太大,跑量过高。3、硬件电路连接错误导致proteus数码管显示为零。

...在proteus上面仿真没问题,但是数码管实物显示就出错了,是什么原因...
用AT89C52做出来的计数器,在proteus上面仿真没问题,实物显示与仿真显刚好相反,原因就是数码管用错了。核对一下仿真是什么类型的数码管,假如仿真是共阴,而实物却用了共阳的,就是这种显示效果。改下程序的段码表,按实物的类型(共阴还是共阳)定义段码表,扫描显示时的位码也反过来。假如,仿真是共阴...

数字时钟proteus仿真数码管不亮显示灰色
数字时钟proteus仿真数码管不亮显示灰色没电了。1、检查数码管是共阴还是共阳,A表示共阳,K表示共阴。给公共端接高电平电,段码端一部分接高电平,一部分接低电平,这样数码管亮的看公共端接的是高还是低电平就可以判断了。2、接的限流电阻是不是太大,大于1K的值不亮,不要接限流电阻,做实际的...

proteus 仿真单片机 两位数码管动态扫描显示乱码
二、每次循环的次数要足够多,如用1ms时间间隔扫描,你有二个字符要循环,则循环500次,一共是2*500=1000秒,这样才能看清你的显示的内容。如果你只循环10次,显示的时间太短,看不清,就是你说的乱码了!!!还有,由于PROTEUS仿真的界面实际上是一个动画,默认时是每秒20帧,如果你的显示刚好和...

proteus仿真数码管动态显示不稳定怎么回事
是几位数码管?不稳压的原因,一,可能是延时的时间不合适。就是延时子程序的时间不合适。二,就是,程序不准确。因没有发程序,也没有发仿真图,所以,真正的原因不好确定。

proteus仿真的时候,为什么数码管有一段总是不亮!?
看你七段数码管显示的频率,过快的话肉眼看不清,就以为那一段没有给到电平。如果是低频率显示,估计就是没上电的缘故吧

相似回答