#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 l_table[]={0xff,0x99,0x00,0x00,0x00,0x81,0xc3,0xe7};   //列选编码（显示心形）
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=l_table[i];  //依次送入列选编码
			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语句接着进行下一次的循环
	}
}