标题: 数码管消隐问题 [打印本页]

作者: 灿烂阳光下    时间: 2016-2-13 22:30
标题: 数码管消隐问题
#include"reg52.h"
#define uchar unsigned char
sbit S6=P2^7;
uchar a,b,d,num,time;
uchar code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar c[2]={0xff,0xff};
void delayms()
{
for(a=10;a>0;a--)
     for(b=124;b>0;b--);
}
void delayms2()
{
for(a=5;a>0;a--)
     for(b=124;b>0;b--);
}
void anjian()
{
if(S6==0)
    {
     delayms();
     if(S6==0)
        {
         TR0=~TR0;
        }
     while(!S6);
    }
c[0]=TAB[num/10];
c[1]=TAB[num%10];
}
void xianshi()
{

         if(d==2)d=0;
         P2=~(++d);
         P0=c[d-1];
         delayms2();
         P0=0xff;
         P2=~(++d);
         P0=c[d-1];
         delayms2();
         P0=0xff;

}
main()
{
IE=0x82;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0 = 0;   
while(1)
       {
         anjian();
         xianshi();

       }
}
void T0_() interrupt 1
{
TR0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++time==20)
    {
     time=0;
     num++;
     num=(num>=60)?0:num;
    }
c[1]=TAB[num/10];
c[0]=TAB[num%10];
TR0=1;
}
程序不是已经消隐了吗?为啥还会出现鬼影?

作者: admin    时间: 2016-2-13 22:51
有鬼影是你这个数码管的消影方式不对详见:http://www.51hei.com/bbs/dpj-10971-1.html
作者: lising    时间: 2016-2-14 00:35
关闭位选--->送段码数据-->再打开位选-->延时。这样处理消隐效果很好。
作者: 暗光    时间: 2016-2-14 20:30
先把数据线清零,在打开位选,在送数据,在关闭位选。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1