单片机如何用LED点阵显示爱心?

仿真视频

单片机点阵显示爱心图形仿真视频

硬件电路图

单片机如何用LED点阵显示爱心?

程序(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点阵显示原理个人理解

单片机如何用LED点阵显示爱心?

点阵等效电路图

单片机如何用LED点阵显示爱心?

元器件图

这些内容,自己了解的,不保准啊。想了解标准的就去网上找资料或者查阅相关的书籍。

我这里是一个单色共阳极8*8点阵显示器。我们看它的等效电路图,它们都是由很多个发光二二极管组成,二极管具有单向导电性,所有只有当左端输入高电平(1),上端输入低电平(0)时发光二极管才会点亮。

这里的元器件图,P1端口就代表它等效电路的左端,P0端口代表它等效电路的上端。也就是说p1.0 输出一个高电平1,p0.0输出一个低电平0,这样就能让第一个发光二管点亮了。 知道这样的原理,以此类推,你想让那个点亮P0端输出低电平0即可,想让那个灯不亮只需要让与它对应的P0口输出高电平1即可。P1端口可以一直保持输入高电平1不变。

例如爱心图形第二排点亮的那四个灯,就是P0口输出10011001,这里是二进制数,转化为十六进制数就是99。也就对应程序数组中的第二个元素0X99。

单片机如何用LED点阵显示爱心?

我们将想要形成的图形一行一行的用1、0写出来,然后转化为十六进制数,然后组合成一个数组。然后用循环语句,将这些数组里面的元素调出来显示即可,只要延时的时间很短,肉眼看上去的图像就是一个爱心的图像。

多实验几次掌握规律即可,不懂原理也不影响编程。慢慢调试吧。