51单片机动态数码管显示C程序不解

/*实验名称:动态8字数码管显示
  功能:数码管显示123456
  作者:http://www.mcuyjf.com.cn
        05-02-01
*/

#include
//LCD的口线
sbit E=P3^5;
sbit RW=P3^6;
sbit RS=P3^7;
//8字LED的连接方法
//P0.7 P.06 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
// H      G  F  E  D  C  B   A

unsigned char code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
         0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管段码表

void Delay_ms(unsigned int t); //延时 t秒钟 :fosc=12MHz

void main(void)
{
 unsigned char led12,led34,led56;
 E=0;   //取消LCD对LED的影响
 RW=0;
 RS=1;
 led12=0x12;
 led34=0x34;
 led56=0x56;
 while(1)
 {
  P2=0xff;  //关显示
  P0=ledcode[(led12>>4)&0x0f];
  P2=0xfe;
  Delay_ms(1);

  P2=0xff;
  P0=ledcode[led12&0x0f];
  P2=0xfd;
  Delay_ms(1);

  P2=0xff;  //关显示
  P0=ledcode[(led34>>4)&0x0f];
  P2=0xfb;
  Delay_ms(1);

  P2=0xff;
  P0=ledcode[led34&0x0f];
  P2=0xf7;
  Delay_ms(1);

  P2=0xff;  //关显示
  P0=ledcode[(led56>>4)&0x0f];
  P2=0xef;
  Delay_ms(1);

  P2=0xff;
  P0=ledcode[led56&0x0f];
  P2=0xdf;
  Delay_ms(1);
 }
}

void Delay_ms(unsigned int t)  //Delay t ms for 12MHz crystal
{unsigned char i;
 while(t--)
 {for(i=0;i<125;i++);
 }
}
我用的是AT89S51,程序是没有问题,程序中有一个地方我看不太懂。
就是while(1)以后,每次延时后都要P2=0xff//关显示,这是什么意思?关了显示后,LED灯怎么

你可能感兴趣的:(51单片机动态数码管显示C程序不解)