数码管动态显示

相当于是循环点亮第一个到最后一个数码管,不过循环速度很快,由于人眼的视觉暂留效果,所以我们看到的就是这8个数码管一直亮着,原理和看电影差不多

#include<reg51.h>
sbit lsa=P2^2;
sbit lsb=P2^3;
sbit lsc=P2^4;
int zxm[]={0x7f,0x06,0x3f,0x5b,0x7f,0x06,0x3f,0x5b};
void delay(int i)
{
	while(i--);
}

void display()
{
	int i;
	for( i=0;i<8;i++)
	{
		switch(i)
		{
			case 0:
				lsa=lsb=lsc=0;break;
			case 1:
				lsa=1;lsb=0;lsc=0;break;
			case 2:
				lsa=0;lsb=1;lsc=0;break;
			case 3:
				lsa=1;lsb=1;lsc=0;break;
			case 4:
				lsa=0;lsb=0;lsc=1;break;
			case 5:
				lsa=1;lsb=0;lsc=1;break;
			case 6:
				lsa=0;lsb=1;lsc=1;break;
			case 7:
				lsa=1;lsb=1;lsc=1;break;
		}
		P0=zxm[i];
		delay(100);
	    P0=0x00;
	}
}
int main()
{   
    while(1)
	display();
}

posted @ 2018-05-16 21:56  eason99  阅读(166)  评论(0编辑  收藏  举报