数码管消抖

数码管消除抖动

#include<reg52.h>

sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
sbit ENLED=P1^4;

unsigned char code ledchar[]={
    
    0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned char ledbuff[6]={
    
    0xff,0xff,0xff,0xff,0xff,0xff};

void secondcount();
void ledrefresh();

void main()
{
    
    
	ENLED=0;
	ADDR3=1;
	TMOD=0X01;
	TH0=0XFC;
	TL0=0X67;
	TR0=1;
	
	while(1)
	{
    
    
		if(TF0==1)
		{
    
    
			TF0=0;
			TH0=0XFC;
			TL0=0X67;	
			ledrefresh();
			secondcount();
		}
	}
}
void secondcount()
{
    
    
	static unsigned int cnt=0;
	static unsigned long sec=0;
	static unsigned char j=0;
	cnt++;
	if(cnt>=1000)
	{
    
    
		cnt=0;
		sec++;
	}
	switch(j)			   //数码管抖动主要是因为段选,这里可以解决抖动问题;
	{
    
    
		case 0:ledbuff[0]=ledchar[sec%10];j++;;break;
		case 1:ledbuff[1]=ledchar[sec/10%10];j++;break;
		case 2:ledbuff[2]=ledchar[sec/100%10];j++;break;
		case 3:ledbuff[3]=ledchar[sec/1000%10];j++;break;
		case 4:ledbuff[4]=ledchar[sec/10000%10];j++;break;
		case 5:ledbuff[5]=ledchar[sec/100000%10];j=0;break;
		default:break;		 
	}
} 
/*
void secondcount()
{
	static unsigned int cnt=0;
	static unsigned long sec=0;
	cnt++;
	if(cnt>=1000)
	{
		cnt=0;
		sec++;
		ledbuff[0]=ledchar[sec%10];
		ledbuff[1]=ledchar[sec/10%10];
		ledbuff[2]=ledchar[sec/100%10];
		ledbuff[3]=ledchar[sec/1000%10];
		ledbuff[4]=ledchar[sec/10000%10];
		ledbuff[5]=ledchar[sec/100000%10];
	}
}  */
void ledrefresh()
{
    
    
	static unsigned char i=0;
	P0=0XFF;
	switch(i)
	{
    
    
		case 0:ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=ledbuff[0];break;
		case 1:ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=ledbuff[1];break;
		case 2:ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=ledbuff[2];break;
		case 3:ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=ledbuff[3];break;
		case 4:ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=ledbuff[4];break;
		case 5:ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=ledbuff[5];break;
		default:break;
	}
}


这个案例中使用备注里的代码来段选时,运行起来需要的时间要长一些,会延长数码管位选的每次扫描间隔时间,从而导致了每次段选时,数码段所有数码管都会暗一下,看起来就像抖动了一下。

猜你喜欢

转载自blog.csdn.net/weixin_49859755/article/details/108629723