#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit h_diola=P2^5;    //对控制点阵行选的74HC573（U10）锁存端进行位定义
sbit l_dula=P2^6;     //对控制点阵列选的74HC573（U1）锁存端进行位定义
sbit wela=P2^7;
uchar code h_table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};  //点阵行选编码

delay(uint t)    //延时函数
{
	while(t--);
}

void main()   //主函数
{	
	uchar i;
	P0=0xff;
	wela=1;
	wela=0;  // 关闭数码管
	while(1)
	{
		for(i=0;i<8;i++)   //用一个for 循环，从第1行到第8行，按顺序的进行扫描
		{
			P0=0x00;    //给点阵所有的列加上低电平
			l_dula=1;
			l_dula=0;
			
			P0=h_table[i];  //依次送入行选编码
			h_diola=1;
			h_diola=0;

			delay(200);     // 延时约2ms
			
			P0=0X00;      //点阵清屏
			h_diola=1;	
			h_diola=0;
		}
			i=0;  //把i清零，让for语句接着进行下一次的循环
	}	
}