【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子)_74hc595芯片使用

一、功能概述:

平时我们需要实现使用单片机点亮一个LED灯,那就要使用一个配置一个单片机的GPIO口输出高电平,但是点阵屏大到广告屏少说也有几百个LED灯,先不说浪费引脚的问题,单是单片机是否有这么多个GPIO口,这种情况下74HC595就派上用场了,它可以将串行的数据输出转化成并行输出的形式,这就使用1个GPIO口就可以控制8个LED,经过级联可以实现更少的IO口,这就是这个芯片最简单,也是最广泛的应用。

二、芯片的基本介绍

74HC595芯片是一种8位移位寄存器,可以通过串行数据输入的方式将数据存储在内部的寄存器中,并通过并行数据输出的方式将数据输出到相应的输出引脚上。它还具有级联能力,可以通过多个芯片级联扩展输出位数。它的主要功能包括:

  1. 8位移位寄存器:可以存储8位二进制数据。
  2. 串行数据输入:通过SER引脚输入数据。
  3. 时钟输入:通过SRCLK引脚提供时钟信号。
  4. 数据锁存:通过RCLK引脚锁存数据。
  5. 并行数据输出:通过QA~QH引脚输出数据。

三、引脚及功能

引脚及其功能
以下是74HC595芯片的引脚及其功能的详细说明:

  1. VCC (Pin 16):

    • 功能: 正电源引脚,用于给芯片供电。
    • 连接: 将此引脚连接到正电源(通常为+5V)。
  2. GND (Pin 8):

    • 功能: 地引脚,为芯片提供电路共同的参考地。
  3. SER (Pin 14):

    • 功能: 串行输入引脚,用于输入要移位的数据。
    • 连接: 将此引脚连接到微控制器或其他输出源的数据引脚。
  4. SRCLK (Pin 11):

    • 功能: 移位寄存器时钟引脚,用于控制数据移位。
    • 连接: 将此引脚连接到微控制器或其他控制源的时钟引脚。
  5. RCLK (Pin 12):

    • 功能: 输出寄存器时钟引脚,用于锁存数据并输出到输出引脚。
    • 连接: 将此引脚连接到微控制器或其他控制源的时钟引脚。
  6. QA-QH (Pins 15-1):

    • 功能: 并行输出引脚,输出锁存的数据。
    • 连接: 这些引脚连接到目标设备,例如LED点阵屏或其他外部设备的行选引脚。
  7. OE (Pin 13):

    • 功能: 输出使能引脚,用于控制输出引脚的使能状态。
    • 连接: 根据设计需求,将此引脚连接到高电平或低电平,以使输出引脚处于使能或禁用状态。

四、内部结构和原理

内部结构:

74HC595芯片由一个移位寄存器和一个输出寄存器组成。移位寄存器用于接收串行输入数据并进行位移操作,输出寄存器用于锁存移位寄存器中的数据并提供并行输出。
在这里插入图片描述

实现原理:

在这里插入图片描述

  1. 数据输入:

    • 串行输入:输入数据通过SER引脚以串行方式输入到移位寄存器中。
    • 时钟信号:SRCLK引脚提供时钟信号,当信号上升沿到达时,移位寄存器中的数据将进行位移操作。
  2. 数据位移:

    • 移位操作:在每个时钟脉冲上升沿时,移位寄存器中的数据向左移动一位,新的数据从SER引脚输入并进入移位寄存器的最低位。
    • 串行输入:通过连续的位移操作,数据位逐渐从SER引脚传递到移位寄存器的高位。
  3. 数据锁存和并行输出:

    • 数据锁存:当需要锁存数据时,使用RCLK引脚提供一个时钟信号。在信号上升沿到达时,移位寄存器中的数据将被锁存到输出寄存器中。
    • 并行输出:输出寄存器中的数据通过并行输出引脚(QA~QH)提供,并可连接到外部设备,如LED点阵屏。每个引脚对应输出寄存器中的一个位,其状态取决于锁存的数据。

通过该移位寄存器和输出寄存器结构,74HC595允许我们通过串行输入数据并通过逐位位移的方式控制并行输出引脚,实现对外部设备的控制。通过适时提供时钟信号,可以控制数据的输入、位移和输出锁存的时机,从而实现灵活的数据控制和显示效果。

五、多个74HC595级联

连接图:

在这里插入图片描述

连接步骤:
  1. 第一步:将第一个74HC595的QH'引脚(引脚9)连接到第二个74HC595的SER(引脚14)引脚,这将建立级联连接。
  2. 第二步:连接第一个74HC595的SRCLK(引脚11)RCLK(引脚12)引脚以及第二个74HC595的SRCLK(引脚11)引脚,以相同的时钟信号驱动两个芯片。
  3. 第三步:将第一个74HC595的QA-QH引脚(引脚15-1)连接到需要控制的8位输出设备的输入引脚。
  4. 第四步:将第二个74HC595的QA-QH引脚(引脚15-1)连接到另外8位输出设备的输入引脚。
  5. 第五步:分别连接每个74HC595的VCC引脚(引脚16)到正电源(通常为+5V),并将两者的GND引脚(引脚8)连接到共同的地线。

通过这种级联连接的方式,使用两枚74HC595芯片可以实现十六位输出控制。数据通过SER引脚串行输入到第一个芯片的移位寄存器,然后逐位向第二个芯片的移位寄存器传递。通过控制时钟信号,数据被移位和锁存到输出寄存器,并通过QA-QH引脚并行输出到外部设备。这样,您就可以通过编程控制和控制信号模式来控制这十六位输出设备的状态。

六、点阵屏

点阵屏是以逐行扫面的方式进行的,要不断刷新显示数据,间隔时间很少,所以在人眼上看就是同步进行的。

连接图:

在这里插入图片描述

控制流程:

控制LED点阵屏的基本流程如下:

  • 输入要显示的图案或字符的数据,通常使用一个8x8的二维数组存储。
  • 逐行遍历二维数组,按行输出数据到74HC595的SER引脚。
  • 在每次输出数据之前,通过SRCLK引脚提供一个上升沿时钟信号,将数据移位至寄存器。
  • 在所有数据输入完成后,通过RCLK引脚提供一个上升沿时钟信号,将数据锁存到寄存器中。
  • 通过级联的74HC595芯片,逐行输出控制LED点阵屏的行选引脚。
  • 在一定的时间间隔后,刷新显示下一行的数据,通过调节刷新速度可以实现持续的动画效果。
使用STM32F103控制点阵屏
1. 硬件连接:
  • 将STM32F103的相应引脚与74HC595芯片进行连接,例如将STM32F103的GPIO引脚连接到74HC595的SER(串行数据输入)、SRCLK(移位寄存器时钟)和RCLK(锁存寄存器时钟)引脚。
  • 将74HC595芯片的输出引脚(QA-QH)连接到LED点阵屏的行选和列选引脚。
2. 控制逻辑:
  • 准备要显示的图案或字符的编码数据,将其存储到适当的变量或数组中。
  • 编写逻辑代码来控制数据的传输和控制信号的生成,以实现位移寄存器和锁存寄存器的操作。
  • 使用适当的时钟信号触发数据的位移和锁存,使数据从移位寄存器移入到输出寄存器中,并在输出寄存器中锁定。
  • 使用GPIO引脚控制数据信号的传输和时钟信号的周期性触发。
3. 示例代码:
#include "stm32f10x.h"

// 定义74HC595芯片引脚连接
#define SER\_PIN GPIO\_Pin\_0
#define SRCLK\_PIN GPIO\_Pin\_1
#define RCLK\_PIN GPIO\_Pin\_2
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/86171ab62aedd46330b5dcaa496f0328.png)

![img](https://img-blog.csdnimg.cn/img_convert/1b8ef7b9af0352750d169bf7c2152ed6.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/17826135e9791b42cdae58e323f76033.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/d3e13c2d118c9e65bc56a6f3c3703d9c.png)

![img](https://img-blog.csdnimg.cn/img_convert/388ab6947bc296b461b4d9dec6166f8c.png)

![img](https://img-blog.csdnimg.cn/img_convert/5cf7a20943c5f1bd8a76ad311bd09d22.png)

![](https://img-blog.csdnimg.cn/img_convert/2c2116305a2a9f7d384a18e1e0ff6fb6.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32是一种32位微控制器单元,广泛应用于各种嵌入式系统和物联网设备中。74HC595是一个8位移位寄存器芯片,能够提供8个输出引脚。Led是一种常见的光电器件,广泛应用于各种电子设备中。 在使用STM32控制LED时,使用74HC595芯片可以扩展STM32的输出管脚,以控制更多的LED灯。使用74HC595芯片,可以通过简单的串行输入来控制LED,大大简化了控制板与LED的接线。每个74HC595芯片都可以扩展8个LED,如果需要更多的LED,可以通过级联多个74HC595芯片来实现。 在控制LED时,一般先通过STM32将要控制的LED信息(如亮灭状态、颜色等)传输到74HC595芯片,然后通过74HC595芯片的输出引脚控制LED的亮灭状态。较为常见的方式是使用移位寄存器实现,先将要控制的LED信息按位写入移位寄存器中,然后通过时钟信号将信息逐位输出到74HC595芯片控制LED的状态。此外,还需要控制74HC595芯片的锁存引脚,以统一控制LED的更新。 综上所述,使用STM32控制LED时,可以考虑使用74HC595芯片来扩展输出引脚,以更方便、更有效地控制LED的状态。 ### 回答2: STM32单片机可以通过74HC595芯片控制LED灯的显示。其中,74HC595是一个8位移位寄存器芯片,可以将串行数据转换成并行数据,控制LED灯的亮灭状态。 具体的原理是,STM32单片机通过SPI通信协议向74HC595芯片发送要显示的数据,其中每个位对应一个LED的亮灭状态。经过芯片内部处理,输出到并行输出端口,从而实现对LED灯的控制。 在使用74HC595控制LED灯时,需要注意以下几个问题: 1.硬件连接关系:在STM32单片机和74HC595芯片之间要连接SPI通信线,包括时钟线(SCK)、数据线(MOSI)、片选线(SS)以及74HC595芯片的输出端口(Q0~Q7)连接LED灯。 2.软件编程:需要对STM32单片机进行程序编写,包括SPI通信协议的初始化设置、数据发送等。同时需要对LED灯进行控制,可使用位运算符或数组的方式实现灯的亮灭状态。 3.电源参数:由于LED灯的驱动电流较大,需要考虑单片机和74HC595芯片的电源参数,例如电压和电流的大小,以保证系统的稳定性和可靠性。 总的来说,STM32单片机和74HC595芯片结合起来控制LED灯的显示,是一种简单而实用的方法,适用于各种应用场合,例如舞台灯光控制、LED屏幕展示等。 ### 回答3: STM3274HC595 串联时能够实现 LED 的控制74HC595 是一个 8 位串至并移位寄存器,可以扩展单片机的输出口,将单片机的少数几个端口扩展为很多个 IO 端口,用于控制多个 LED 灯的状态。 在使用 74HC595 控制 LED 灯时,可以通过串口的方式控制每一个 LED 的亮灭状态。具体来说,要使用 8 位二进制码对应 8 个输出口,每一个二进制数位对应一个 LED 灯的状态,通过 STM32 将这个二进制值发给 74HC595控制 LED 灯亮灭状态。 控制原理如下: 1. 通过 STM32 传输 8 个位的二进制码(如0x55),其中每一个二进制数位代表一个 LED 灯的状态 2. STM32 控制时钟管脚 CLK,时钟上升沿时,将对应 LED 灯的状态值写入 74HC595 的 QA - QH 8 个输出端口 3. 写入数据后,STM32 控制锁存端口 LCK 上升沿,将数据锁定到 74HC595 的输出端口中,此时 LED 灯会闪烁或亮起/灭掉 整个控制过程在 STM32 上实现非常便捷,可以通过 C 语言编写固件控制代码,实现对多个 LED 灯的远程控制。可以通过 STM32 自带的 SWD 调试接口,或者通过外部 J-Link 编程器将固件程序下载到 STM32 中,然后连接 74HC595,就可以控制 LED 灯了。也可以通过串口通信,将相关代码通过调试助手或者其他串口客户端软件上传到 STM32 中,在程序中处理不同的 LED 灯状态。这些方法都十分实用,可以节省大量硬件资源的使用,提高 LED 灯的控制效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值