仿真视频
单片机点阵显示爱心图形仿真视频
硬件电路图

程序(C语言)
#include<reg51.h>
unsigned char led[]={0xFF,0X99,0X00,0X00,0X00,0X81,0XC3,0XE7};//爱心图形
void delay(unsigned int k);
void main()
{
unsigned char i,w;
while(1)
{
w=0x01;
for(i=0;i<8;i++)
{
P1=w;
P0=led[i];
delay(1);
w<<=1;
}
}
}
void delay(unsigned int k) //延时
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<k;j++);
}
LED点阵显示原理个人理解

点阵等效电路图

元器件图
这些内容,自己了解的,不保准啊。想了解标准的就去网上找资料或者查阅相关的书籍。
我这里是一个单色共阳极8*8点阵显示器。我们看它的等效电路图,它们都是由很多个发光二二极管组成,二极管具有单向导电性,所有只有当左端输入高电平(1),上端输入低电平(0)时发光二极管才会点亮。
这里的元器件图,P1端口就代表它等效电路的左端,P0端口代表它等效电路的上端。也就是说p1.0 输出一个高电平1,p0.0输出一个低电平0,这样就能让第一个发光二管点亮了。 知道这样的原理,以此类推,你想让那个点亮P0端输出低电平0即可,想让那个灯不亮只需要让与它对应的P0口输出高电平1即可。P1端口可以一直保持输入高电平1不变。
例如爱心图形第二排点亮的那四个灯,就是P0口输出10011001,这里是二进制数,转化为十六进制数就是99。也就对应程序数组中的第二个元素0X99。

我们将想要形成的图形一行一行的用1、0写出来,然后转化为十六进制数,然后组合成一个数组。然后用循环语句,将这些数组里面的元素调出来显示即可,只要延时的时间很短,肉眼看上去的图像就是一个爱心的图像。
多实验几次掌握规律即可,不懂原理也不影响编程。慢慢调试吧。