数码管动态显示
相当于是循环点亮第一个到最后一个数码管,不过循环速度很快,由于人眼的视觉暂留效果,所以我们看到的就是这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();
}