使用74HC595芯片驱动LED点阵屏的使用笔记纯小白写

使用74HC595芯片驱动LED点阵屏的使用笔记1、控制显示LED点阵屏的思路普中A2开发板中LED点阵原理图:3、51单片机上使用LED点阵屏到此我们已经能够控制点阵屏上任意一盏灯的亮灭了,那么就简单的在单片机上显示个字母R吧。

如果您对纯粹新手写的这篇文章有任何疑问,欢迎在评论区讨论、反驳、指正。

如果你只是想了解74HC595如何使用,建议只看2.3。

1、LED点阵屏的控制与显示思路

通过查看普中A2开发板的原理图(图1)我们可以知道,哪个LED点亮是通过P0(P0_0、P0_1…P0_7)端口和DPa、DPb…DPh来控制的。 我的开发板上的点阵模块没有按照他给的原理图上的方向放置。 根据我的测试,我的LED点阵模块应该是按照他给的模块的方向,逆时针旋转180°,如图2所示。

例如:如果我想让第三行第四列的​​灯点亮,那么我需要将高电平(1)传递给DPc,将低电平(0)传递给P0_4,以使目标灯点亮。 。

图1 普众A2开发板LED点阵原理图:

图2 修改后的LED点阵示意图:

现在我们有了想法,让我们看看如何控制 DPa、DPb…DPh 和 P0_0、P0_1…P0_7 输入。 P0口比较简单,这里就不解释了。 从原理图中可以看出,DPa、DPb…DPh的输入是通过74HC595芯片来控制的(图3),所以我们的问题就变成了如何控制74HC595芯片,那么我们就重点学习74HC595芯片。

图3 74HC595(串并)模块:

2.了解74HC595芯片2.1. 74HC595芯片是什么?

我认为74HC595芯片是用3个输入端来控制N个输出端,同时允许输出端同时输出N个信号。 这里我们只需要同时输出八个信号即可。 如果我们要输出十六个、二十四个等,那么我们就需要对74HC595进行扩展(也就是多接几个这样的芯片,一个可以输出八个,需要多少个就接多少个)。

如果很难理解的话,建议把它想象成3个IO的输入来控制N个IO的输出。

2.2. 74HC595芯片各引脚解释与分析

原理图中可以看到下划线的OE(那个符号就不打了,以下简称-OE-)、RCLK、下划线的SRCLR(以下简称-SRCLR-)、SRCLK、SER、GND、VCC ,QA,QB…QH,QH`。

-OE-:更正式的名字是“输出使能控制引脚”,即使能按钮。 我所理解的“赋能”,字面意思是“赋能”谁“可以”做什么。 这里可以理解为使74HC595能够工作。 因为有一条过线,所以当低电位传到该引脚时,就可以开始工作。

RCLK:更正式的名称是“锁存寄存器时钟”。 我理解的意思是锁定要输出的数据,从实际功能可以发现,这里给1的时候,数据会输出到QA,QB…QH。 一般缩写为“RCK”。

-SRCLR-:更正式的名称是“移位寄存器清除引脚”。 我的理解是,当这里输入低电平时,就会清除移位寄存器。 因为原理图上是直接接高层的,不知道怎么改,所以没有测试它的具体效果。

SRCLK:更正式的名称是“移位寄存器时钟,上升沿移位”。 我的理解就是将已经录入的数据进行移位,为即将录入的数据腾出空间,这样就可以放入新的数据。一般缩写为“SCK”。

SER:更正式的名称是“串行输出”。 我的理解是,就是即将输入的数据,即要存储的0或1。

GND:从逻辑上讲,我确实知道这一点。

VCC:这是逻辑电源。

QA、QB…QH:更正式的名称是“并行数据输出终端”。 这是对应的输出,一次并行输出8位数据。

QH':您可以在此处扩展输出。 只需连接 8 的倍数即可输出所需的位数。 例如,如果我需要输出 24 位,那么我的块已经可以输出 8 位。 我只需要再连接两个外部块,总输出就是24位。 我没有工具,也没有专门测试过如何对外扩展,只是从网上收集的。 从数据来看,只要将它们的RCLK、SRCLK、SER连接起来即可。

单独看上面的参数不太容易理解,所以我们举个例子来连接上面的数据来理解。

让我们以霰弹枪为例。 如果我们有一把霰弹枪,可以一次射出八颗子弹(这并不是说一次射出八颗子弹,而是一梭就是八颗子弹,不用装弹就能射出)。 一次发射八颗子弹),在我们使用这把霰弹枪之前,我们需要先打开保险丝,也就是将enable-OE-接地,这样才可以使用; 然后给枪装子弹,我们需要在弹舱里一次装一颗子弹,即对应的SER=0或1,然后再装下一颗子弹。 当加载下一个子弹的时候,我们需要把上一个子弹压进去,这个压入的动作其实就是对应我们的SCK的。 当八颗子弹上膛后,我们就可以发射了。 按下扳机(即RCK=1),枪会发声,子弹就会从枪膛中射出。 第一个镜头是对应的QH,第二个镜头是对应的QH。 QF,第三次……,八次射击完成,即数据发送完毕。 如果一把枪不够用,可以使用工具将两把枪连接在一起。 这里的工具是QH'。 由于我没用过,所以下面就不举例了。

这个例子是我从别人的文章中学到的。 我改进了它并添加了我自己的理解。 我觉得还可以。 原始示例来自:

2.3. 74HC595芯片工作原理

感觉工作原理需要用图来理解,所以下面就用图来看看,见图4。

图4 74HC595芯片工作原理流程图:

其实我觉得上图已经很详细了。

2.4. 74HC595模块接线

从图3可以看出,如果要使74HC595工作,需要将OE接地,相应的J24应按图5连接:

图5

2.5、74HC595对应代码:

#include 
#include 
sbit SCK = P3^6;	//移位
sbit RCK = P3^5;	//输出
sbit SER = P3^4;	//输入
/**
  *@effect: 这个方法一次将给到的Byte输出给被控制端
  *@Byte: 要传出的8位数据
  *@return: 无
**/
void send74HC595Byte(char Byte) 
{
	char i ;
	for (i = 0;i < 8;i++)
	{
		SER = Byte>>7;	//输入给74HC595
		Byte = Byte<<1; //这两行代码可以从左向右去拿数据。如果输入的是1001 0110,那么第一次循环就会
						//拿到1,第二次就会拿到0,第三次0,第四次1...
		SCK = 1; //移位
		_nop_();
		_nop_(); //两个振荡(机器)周期,等下移位这个动作
		SCK = 0; //结束移位
	}
	RCK = 1; //将数据输出
	_nop_();
	_nop_(); //两个振荡(机器)周期,等下输出这个动作
	RCK = 0; //结束数据输出
}

3.在51单片机上使用LED点阵屏

此时我们可以控制点阵屏上任意一个灯的打开或关闭,所以只要在单片机上显示字母R即可。

根据图(图6)可以看出,只要打开标点灯,那么程序如下:

图6

对应程序:

//LED点阵屏显示图形
//在LED点阵屏上显示字母R
//这里的具体知识我写在了博客上,见链接:
//
#include 
#include 
#include 
sbit SCK = P3^6;	//移位
sbit RCK = P3^5;	//输出
sbit SER = P3^4;	//输入
/**
  *@effect: 这个方法一次将给到的Byte输出给被控制端
  *@Byte: 要传出的8位数据
  *@return: 无
**/
void send74HC595Byte(char Byte) 
{
	char i ;
	for (i = 0;i < 8;i++)
	{
		SER = Byte>>7;	//输入给74HC595
		Byte = Byte<<1; //这两行代码可以从左向右去拿数据。如果输入的是1001 0110,那么第一次循环就会拿到1,第二
										//次就会拿到0,第三次0,第四次1...
		SCK = 1; //移位
		_nop_();
		_nop_(); //两个振荡(机器)周期,等下移位这个动作
		SCK = 0; //结束移位
	}
	RCK = 1; //将数据输出
	_nop_();
	_nop_(); //两个振荡(机器)周期,等下输出这个动作
	RCK = 0; //结束数据输出
	P0 = 0xff; //将P0口置为0,防止下次操作时,点亮整排灯
}
void main()
{	
	while(2>1)
	{
		send74HC595Byte(0xff);
		P0_5 = 0;
		send74HC595Byte(0x98);
		P0_4 = 0;
		send74HC595Byte(0x94);
		P0_3 = 0;
		send74HC595Byte(0x92);
		P0_2 = 0;
		send74HC595Byte(0x61);
		P0_1 = 0;
	}
}

效果如图7所示。

图7:

4.遇到问题(更新中) 5.参考文章

CSDN:

B站:

①(这位老师讲得很好,强烈建议你看一下他讲的内容,粘贴视频链接(9-1、9-2))

6.第一次写博客的杂感

一大早醒来,看到74HC595的使用方法,心里一热,不妨自己总结一下,再写一篇文章。 虽然我知道写这篇文章会花费我一整天的时间,从早上拿到到吃晚饭,甚至遇到有问题的模块。 还没写(我遇到的问题有点混乱,无法完美解决,所以还没写)。

我看到很多文章都在谈论“时机”。 因为刚开始接触这些东西,不太懂时序图(之前是纯机械的,所以没有学数字、电气、模拟、信号),所以就没有去那里。 另外,如果哪位高手知道如何阅读和学习时序图,希望可以私信我,给我一些建议。 如果主人太忙,就算了。 毕竟一个人的时间和精力就这么多,哈哈。

经过一天的编码,我编码了 4500 个单词。 这比写论文还累。 光是把74HC595模块搞清楚就花了三四天的时间。 虽然有点痛,哈哈,不过现在回想起来,还是值得的。 的。

单片机

单片机的应用属于芯片级应用,你知道吗?

2024-4-6 2:05:00

单片机

《单片机原理及应用》试题库-填空题

2024-4-6 3:05:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索