打印

proteus 数码管显示不正常

[复制链接]
5059|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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

粉丝