51单片机8*8 LED点阵实现原理讲解

举报
yd_274589494 发表于 2023/07/27 17:46:37 2023/07/27
【摘要】 @TOC 前言本篇文章将为大家讲解LED8*8点阵的使用方法。 一、LED8*8点阵的原理LED 88点阵是由64个LED灯珠组成的,它们排列在一个88的矩阵中。每个LED灯珠都可以独立控制,因此可以通过控制不同的LED灯珠来显示不同的图形、数字、字母等。LED 88点阵的原理是利用LED灯珠的发光特性,通过控制LED灯珠的亮灭来实现图形、数字、字母等的显示。在控制LED灯珠亮灭时,可以使用...

@TOC


前言

本篇文章将为大家讲解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点阵制作出来。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。