单片机C51 数码管两位数不同时显示

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-29
51单片机数码管怎样才能同时在两个数码管上面显示不同的数字??

是因为人眼的视觉暂留效应,实际上两个数码管是交替显示的,但是因为交替的速度十分快,所以会有因为视觉暂留效应而看到两个数码管都是同时现实的。
视觉暂留现象即视觉暂停现象(Persistence of vision,Visual staying phenomenon,duration of vision)又称“余晖效应”,1824年由英国伦敦大学教授皮特.马克.罗葛特在他的研究报告《移动物体的视觉暂留现象》中最先提出。
人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。

扩展资料:
led数显管分类:
1、按控制方式分:分为内控方式(内部有单片机,通电自动变色)和外控方式(需要外接控制器才能变色)。
2、按变化方式分:分为固定色彩的和七彩、全彩的;固定色彩的是用来勾轮廓的,全彩的可以勾轮廓,也可以组成管屏显示文字、视频等。
3、按尺寸分:有D50的、D30的,这是直径;长度基本上1米的(可以定制);这个需要根据实际需要进行选择就行了。
4、按内部可控性分:有1米6段的,有1米8段的和1米12段、1米16段、1米32段的。也就是1米的管子内有几段可以独立受控。 1米段数越多,做视频的效果越好。如果密度低,或者做些追逐效果,做1米6段也就可以了。

用扫描显示的方法,在一小段时间内,只让其中的一个亮,顺序轮流,就形成了你要的显示效果。

个位数显示么?主程序里没有调用显示的子程序啊,SBUF,难道是串行转并行?
你十位led亮0.5ms,灭5s,能看到才怪呢。
这段程序放在 if 语句外面
P1=0xbf; //选中第一个数码管
SBUF=table[shi];
delay(500);
P1=0x7f; //选中第二个数码管
SBUF=table[ge];

建议你这样改:
while(1)
{
shi=temp/10;
ge=temp%10;
P1=0xff; //消隐
SBUF=table[shi];
P1=0xbf; //选中第一个数码管
delay(100);
P1=0xff;
SBUF=table[ge];
P1=0x7f; //选中第二个数码管
delay(100);
}

void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==100)
{ t=0;
temp++;
if(temp==10)
temp=0;
}
}
顺便提一下,怎么冒出SBUF了。

同学
你的延时不对,适当调整延时时间,
数码管动态扫描方式显示就是有这个问题。时间调整好了,看到异常显示不会明显。

你调整一下时间参数

祝你好运

框架错了。。
while(1)
{
if(t==10)
{
你注意你这一段程序。只有t==10的时候才做。相当于你WHILE(1)只有十分之一的时间在做有用的事情。。当然最后亮的是ge了。。。