/*************************头文件 ***********************/
#include"regx52.h"		   
#define uchar unsigned char
#define uint unsigned int

uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
						0x6d,0x7d,0x07,0x7f,0x6f};  //0~9共阴显示子码

sbit LOCK=P1^0;					//定义锁存端
sbit D1=P1^1;					//数码管位选 第一位
sbit D2=P1^2;					//数码管位选 第二位
sbit D3=P1^3;					//数码管位选 第三位
sbit D4=P1^4;					//数码管位选 第四位

/********************毫秒级延时函数	***********************/
void delayms(uint ms)
{
   uchar b;
   while(ms--)
   {
		for(b=0;b<125;b++);
	}
}

/*********************主函数***********************/
void main()
{
	LOCK=1;						//高电平通，低电平锁
								//此程序因为不复用端口,所以让它全通
	while(1)
	{
		D1=0;					//依次打开全部位选
		P0=dispcode[8];			//把数组的第八位（7）取出来赋给P0
		delayms(1000);
		D1=1;
		delayms(1000);
		D2=0;
		P0=dispcode[7];			//把数组的第七位（6）取出来赋给P0				
		delayms(1000);
		D2=1;
		delayms(1000);
		D3=0;				
		P0=dispcode[6];				//把数组的第六位（5）取出来赋给P0
		delayms(1000);
		D3=1;
		delayms(1000);
		D4=0;
		P0=dispcode[5];				//把数组的第五位（4）取出来赋给P0	  					
		delayms(1000);
		D4=1;
		delayms(1000);
	}
}