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;}//控制各位数码管的循环显示模式

}

}