讲解51单片机如何实现8*8 LED点阵

文章目录

  • 前言
  • 一、LED8*8点阵的原理
  • 二、LED8*8点阵原理图
  • 三、74HC595模块讲解
  • 四、74HC595模块写一个字节数据代码讲解
  • 总结

  • 前言

    本篇文章将为大家讲解LED8*8点阵的使用方法。

    一、LED8*8点阵的原理

    LED 88点阵是由64个LED灯珠组成的,它们排列在一个88的矩阵中。每个LED灯珠都可以独立控制,因此可以通过控制不同的LED灯珠来显示不同的图形、数字、字母等。
    LED 88点阵的原理是利用LED灯珠的发光特性,通过控制LED灯珠的亮灭来实现图形、数字、字母等的显示。在控制LED灯珠亮灭时,可以使用多种方式,如常规的直接控制、使用LED驱动芯片、使用单片机等。
    LED 8
    8点阵的驱动方式一般是行列扫描式,即先控制某一行LED灯珠亮起,然后在该行中控制需要亮起的LED灯珠,接下来再控制下一行LED灯珠亮起,以此类推。这种方式可以有效地降低驱动复杂度和成本,并且可以实现高速刷新,达到流畅的显示效果。
    LED 88点阵的控制方式也可以通过串口通信来实现,这时需要使用对应的串口通信模块和相关的控制程序。通过串口通信,可以实现更加灵活的控制方式,可以通过电脑、手机等设备来控制LED 88点阵的显示内容。

    二、LED8*8点阵原理图

    通过原理图可以知道LED8*8点阵通过P0端口和一个74HC595一起控制,实现指定的LED灯的亮灭。

    三、74HC595模块讲解

    74HC595是一种8位移位寄存器,可以通过串行数据输入(SER)对其进行控制。在移位寄存器中,每个输入位的值都会被存储在一个寄存器中,这个寄存器中的内容可以在需要时被并行输出。通过串行输入,数据可以逐位地移动到寄存器中,或者通过并行输出,可以一次将寄存器中的所有位输出。
    在74HC595模块中,它包含有一个74HC595芯片和一些其他的电路元件。芯片的引脚被连接到模块上的引脚上,这些引脚包括:

    SER:串行输入引脚,用于输入数据到移位寄存器中。

    SRCLK:移位寄存器时钟输入引脚,用于控制移位寄存器的移位操作。

    RCLK:移位寄存器输出时钟引脚,用于将移位寄存器中的数据输出到存储寄存器中。

    OE:输出使能引脚,用于控制芯片的输出状态。

    Q0-Q7:输出引脚,用于输出寄存器中存储的数据。
    在使用74HC595模块时,可以通过串行输入将数据逐位地输入到移位寄存器中。当所有数据位都被输入时,可以通过输出时钟将移位寄存器中的数据输出到存储寄存器中。在存储寄存器中,数据可以通过并行输出引脚一次性输出。
    通过控制输出使能引脚,可以控制芯片的输出状态。当输出使能引脚被拉低时,芯片的输出被禁用,此时输出引脚会显示高阻态。当输出使能引脚被拉高时,芯片的输出被启用,此时可以通过输出引脚读取寄存器中存储的数据。
    总之,74HC595模块是一种常用的数字电路模块,它可以将串行输入的数据通过移位寄存器转换为并行输出,控制灯光、数码管等数字电路元件的亮灭。

    四、74HC595模块写一个字节数据代码讲解

    /*******************************************************************************
    * 函 数 名         : hc595_write_data(u8 dat)
    * 函数功能		   : 向74HC595写入一个字节的数据
    * 输    入         : dat:数据
    * 输    出         : 无
    *******************************************************************************/
    void hc595_write_data(u8 dat)
    {
    	u8 i=0;
    	
    	for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中
    	{
    		SER=dat>>7;//优先传输一个字节中的高位
    		dat<<=1;//将低位移动到高位
    		SRCLK=0;
    		delay_10us(1);
    		SRCLK=1;
    		delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中	
    	}
    	RCLK=1;
    	delay_10us(1);
    	RCLK=0;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出	
    }
    

    点亮一个点:

    void main()
    {	
    	u8 i=0;
    
    	P0=0x7f;//将LED点阵左边第一列设置为0,即LED阴极为低电平,其余列为1,即高电平
    	while(1)
    	{			
    		hc595_write_data(0x80);//将LED点阵上边第一行设置为1,即LED阳极为高电平,其余行为0,即低电平								
    	}		
    }
    

    总结

    在现实生活中我们在街上看到的广告牌等可以移动的字体广告都可以使用LED8*8点阵制作出来。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 讲解51单片机如何实现8*8 LED点阵

    发表评论