#include<reg52.h>   //包含52系列单片机头文件
#define uchar unsigned char  //为宏定义，把unsigned char用uchar表示，方便书写
#define uint unsigned int     //为宏定义，把unsigned int用uint表示，方便书写
uint i,j;         //变量i,j声明
sbit dula=P2^6;  //U1锁存器的锁存端位定义
sbit wela=P2^7;  //U2锁存器的锁存端位定义
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
               0x7c,0x39,0x5e,0x79,0x71,0x00};  //数码管真值表编码
void delay(uint);   //delay函数声明
void main()
{
	while(1)
	{
		P0=0xfe;    //送入第1个数码管位选信号
		wela=1;
		wela=0;
		P0=table[1];  //送入段选编码，数组table中的第2个元素0x06，显示1字
		dula=1;
		dula=0;
	        delay(1000);  //延时1秒

		P0=0xfd;    //送入第2个数码管位选信号
		wela=1;
		wela=0;
		P0=table[2];  //送入段选编码，数组table中的第3个元素0x5b，显示2字
		dula=1;
		dula=0;
	        delay(1000);  //延时1秒

		P0=0xfb;    //送入第3个数码管位选信号
		wela=1;
		wela=0;
		P0=table[3];  //送入段选编码，数组table中的第4个元素0x4f，显示3字
		dula=1;
		dula=0;
	        delay(1000);  //延时1秒

		P0=0xf7;    //送入第4个数码管位选信号
		wela=1;
		wela=0;
		P0=table[4];  //送入段选编码，数组table中的第一个元素0x66，显示4字
		dula=1;
		dula=0;
	        delay(1000);  //延时1秒

		P0=0xef;    //送入第5个数码管位选信号
		wela=1;
		wela=0;
		P0=table[5];  //送入段选编码，数组table中的第一个元素0x6d，显示5字
		dula=1;
		dula=0;
	        delay(1000);  //延时1秒

		P0=0xdf;    //送入第6个数码管位选信号
		wela=1;
		wela=0;
		P0=table[6];  //送入段选编码，数组table中的第一个元素0x7d，显示6字
		dula=1;
		dula=0;
	        delay(1000);  //延时1秒		
	}	
}

void delay(uint x)   //延时函数
{
	for(i=x;i>0;i--)  //延时约为x毫秒
	{
		for(j=120;j>0;j--);
	}
}