proteus 数码管显示不正常

[复制链接]
5862|2
 楼主| lyk_12266 发表于 2010-5-27 20:25 | 显示全部楼层 |阅读模式
本帖最后由 lyk_12266 于 2010-5-28 08:45 编辑

电路图用的是郭天祥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,仿真会出错,出现提示信息,这提示信息是什么意思,该怎么解决,仿真出错的原因是什么,还有数码管为什么看不到完整字符,请帮忙解释下,非常感谢


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
lfb112 发表于 2010-5-27 20:34 | 显示全部楼层
软件仿真不是硬件仿真,要多注意程序设计的小问题。这个问题很容易解决,在关闭选通信号后,加句P0=0;就行了
lossme 发表于 2011-1-26 14:05 | 显示全部楼层
先位选,然后段选就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部