proteus 数码管显示不正常
电路图用的是郭天祥TX-1C的电路图,只画了led和数码管部分。做数码管动态显示654321,下面是程序#include<reg52.h>#defineucharunsi...
电路图用的是郭天祥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,仿真会出错,出现提示信息,这提示信息是什么意思,该怎么解决,仿真出错的原因是什么,还有数码管为什么看不到完整字符,请帮忙解释下,非常感谢 展开
做数码管动态显示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,仿真会出错,出现提示信息,这提示信息是什么意思,该怎么解决,仿真出错的原因是什么,还有数码管为什么看不到完整字符,请帮忙解释下,非常感谢 展开
3个回答
展开全部
仿真的时候就是会出错 我也试过我改过成5根本就没有显示了 改成了40——50之间差不多 但是还是有闪烁 但是我试过如果直接用单片机的引脚去驱动两个发光二极管的话是没有任何闪烁的 个人认为之所以不正常关键就是74HC573这个锁存器的问题 这可能也是proteus的bug吧 我做数码管仿真的时候都是直接驱动数码管的段选和位选的 这样是没有问题的
其实掌握动态显示的思路和方法 数码管再多也是同样的思路 你可以试试我说的直接驱动2个数码管动态显示
有什么问题我们再交流
其实掌握动态显示的思路和方法 数码管再多也是同样的思路 你可以试试我说的直接驱动2个数码管动态显示
有什么问题我们再交流
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的回答有道理,我也遇到类似的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询