4位数码管动态显示程序
#include<reg52.h>
sbit SMG1=P1^0;
sbit SMG2=P1^1;
sbit SMG3=P1^2;
sbit SMG4=P1^3;//定义各位数码管的控制端
unsigned char code tab[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0xf9,0xa4};
//预置数码管显示的数据,此处设为0123456789012.
void delay(unsigned int n)
{
unsigned char i,j;
for(i=n;i>0;i--)
for(j=0;j<250;j++);
}//定义延时函数
main(){
int i;
int j;
P1=1;
while(1){
SMG4=1;
SMG1=0;
P0=tab;
delay(1);//控制第一位数码管的输出
SMG1=1;
SMG2=0;
P0=tab[i+1];
delay(1);//控制第二位数码管的输出
SMG2=1;
SMG3=0;
P0=tab[i+2];
delay(1);//控制第三位数码管的输出
SMG3=1;
SMG4=0;
P0=tab[i+3];
delay(1);//控制第四位数码管的输出
j++;
if(j==100){
i++;
j=0;}
if(i>=10){
i=0;}//控制各位数码管的循环显示模式
}
}