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

这篇具有很好参考价值的文章主要介绍了【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

74HC595是一款常用的串行输入/并行输出(Serial-in/Parallel-out)移位寄存器芯片,在数字电子领域有着广泛的应用。它具有简单的接口和高效的扩展能力,成为了许多电子爱好者和工程师们的首选之一。本文将深入介绍74HC595芯片的功能、应用场景以及工作原理。
【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子),物联网,stm32,mongodb,嵌入式硬件

一、功能概述:

平时我们需要实现使用单片机点亮一个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应用指南(以stm32控制点阵屏为例子),物联网,stm32,mongodb,嵌入式硬件
以下是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芯片由一个移位寄存器和一个输出寄存器组成。移位寄存器用于接收串行输入数据并进行位移操作,输出寄存器用于锁存移位寄存器中的数据并提供并行输出。
【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子),物联网,stm32,mongodb,嵌入式硬件

实现原理:

【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子),物联网,stm32,mongodb,嵌入式硬件

  1. 数据输入:

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

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

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

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

五、多个74HC595级联

连接图:

【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子),物联网,stm32,mongodb,嵌入式硬件

连接步骤:

  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引脚并行输出到外部设备。这样,您就可以通过编程控制和控制信号模式来控制这十六位输出设备的状态。

六、点阵屏

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

连接图:

【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子),物联网,stm32,mongodb,嵌入式硬件

控制流程:

控制LED点阵屏的基本流程如下:文章来源地址https://www.toymoban.com/news/detail-621758.html

  • 输入要显示的图案或字符的数据,通常使用一个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
#define GPIO_PORT  GPIOA

// 字符编码数据,使用负逻辑(低电平为亮)
const uint8_t font[][8] = {
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 空白字符
    {0x3E, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3E, 0x00},  // 字母A
    // 添加更多字符的字模数据...
};

// 函数声明
void delay(uint32_t time);
void sendByte(uint8_t data);
void sendCommand(uint8_t cmd);
void sendData(uint8_t data);
void displayMatrix(const uint8_t matrix[8]);

int main(void) {
    // 初始化GPIO和时钟配置
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = SER_PIN | SRCLK_PIN | RCLK_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIO_PORT, &GPIO_InitStructure);

    while (1)
    {
        // 显示字符A
        displayMatrix(font[1]);
        delay(1000);  // 延时1秒
    }
}

// 延时函数
void delay(uint32_t time) {
    while (time--);
}

// 发送一个字节到74HC595芯片
void sendByte(uint8_t data) {
    uint8_t i;
    for (i = 0; i < 8; i++) {
        GPIO_ResetBits(GPIO_PORT, SRCLK_PIN);  // 时钟信号置低
        if ((data & 0x80) == 0x80)
            GPIO_SetBits(GPIO_PORT, SER_PIN);  // 输出数据为1
        else
            GPIO_ResetBits(GPIO_PORT, SER_PIN);  // 输出数据为0
        data <<= 1;
        GPIO_SetBits(GPIO_PORT, SRCLK_PIN);  // 时钟信号置高,数据移位
    }
}

// 发送命令到74HC595芯片(锁存数据)
void sendCommand(uint8_t cmd) {
    GPIO_ResetBits(GPIO_PORT, RCLK_PIN);  // 时钟信号置低
    sendByte(cmd);  // 发送数据
    GPIO_SetBits(GPIO_PORT, RCLK_PIN);  // 时钟信号置高,锁存数据
}

// 发送数据到74HC595芯片(显示数据)
void sendData(uint8_t data) {
    GPIO_SetBits(GPIO_PORT, RCLK_PIN);  // 时钟信号置高
    sendByte(data);  // 发送数据
    GPIO_ResetBits(GPIO_PORT, RCLK_PIN);  // 时钟信号置低
}

// 显示一个8x8点阵图案
void displayMatrix(const uint8_t matrix[8]) {
    uint8_t row;
    for (row = 0; row < 8; row++) {
        sendData(matrix[row]);
    }
}

七、应用场景

  1. 数码管驱动:通过级联多个74HC595芯片,可以实现大规模数码管的驱动,使用较少的GPIO引脚输出更多的信息。
  2. LED点阵控制:通过级联多个74HC595芯片,可以实现对LED点阵的控制,从而显示各种图像和文字。
  3. 扩展IO端口:通过级联多个74HC595芯片,可以有效地扩展单片机的IO端口,用于连接更多的外部设备。
  4. 按键输入:通过74HC595芯片的串行输入功能,可以实现连续多个按键的输入,减少单片机的引脚占用。

到了这里,关于【物联网】超详细的74HC595应用指南(以stm32控制点阵屏为例子)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机LED点阵控制原理、74HC595工作原理和字母和滚动显示实验代码

    目录 1. 74HC595工作原理图解  2.LED点阵控制原理 3.点阵LED实验 3.1 配置74HC595代码 3.2 D点阵LED显示H   3.3 滚动LED  (1) 滚动扫描图示  (2)程序代码 4.遇到奇怪的bug    :        输出使能,输入低电平允许输出,因此需要用接线帽j24让oe和地短接。 (但是我普中A2的板子,不

    2024年02月04日
    浏览(61)
  • stm32 74hc595级联编程

    原理图如下  代码如下\\\"xl74hc595.c\\\" \\\"xl74hc595.h\\\" 代码如下 GPIO初始化 具体IO口根据实际需求进行修改 支持任意长度的的595芯片级联  

    2024年02月06日
    浏览(53)
  • 【74HC595】51单片机(普中A2开发板)LED点阵屏点亮以及74HC595芯片的使用笔记

    纯小白写的文章,如有问题,欢迎评论区讨论,反驳,指正。 如果你只想了解74HC595如何使用,建议只看2.3。 通过查看普中A2开发板的原理图(图1)可以知道,通过P0(P0_0、P0_1…P0_7)口和DPa、DPb…DPh来控制哪一颗LED点亮。我这个开发板上的点阵模块没有按照他给的原理图上

    2024年02月05日
    浏览(86)
  • STM32 4位数码管和74HC595

            在使用一位数码管的时候,会用到8个IO口,那如果使用4位数码管,难道要使用32个IO口吗?肯定是不行的,太浪费了IO口了。把四个数码管全部接一起共用8个IO口,然后分别给他们一个片选。所以4位数码管共有12个IO口。         当选择数码管1显示的时候,这可以

    2024年04月17日
    浏览(100)
  • 74HC595驱动7x11点阵屏(LED-7X11-JHM)DEMO

    由于我之前做了一个点阵时钟 ,但是无奈LED点阵屏价格比较贵,所以想找一个价格较为便宜的点阵来做便宜一点的点阵方案,再淘宝上看到有那种五毛钱一个的7x11的LED点阵,所以就想着试试搞一下这种点阵屏,这个由于是7x11的点阵,没有比较好的驱动芯片,只能自己想办法

    2024年02月13日
    浏览(53)
  • STM32 HAL库实现三位数码管显示(74HC595+按键+蜂鸣器)

    1、加强数码管学习,实现数码显示变量数据(三位数的显示); 2、3位数码+2个按键+蜂鸣器实现模拟电磁炉功率调节及显示; 关于74HC595的STM32F103的驱动以及数码的显示等请查阅我写的上一篇博客:https://blog.csdn.net/luojuan198780/article/details/136653377 实验效果参考下面网址视频:

    2024年03月17日
    浏览(86)
  • 51单片机——74HC595的应用(SPI实践)

    目录 SPI总线 SPI总线概述  SPI总线分类 SPI 优点及缺点 SPI接口硬件原理 SPI四种工作模式  74HC595应用 74HC595芯片概述 74HC595封装及管脚功能 74HC595工作原理 ​编辑  74HC595串行转并行点亮LED灯  程序实现   Proteus运行结构示意图 SPI总线概述   SPI(Serial Peripheral interface): 串行外

    2024年02月02日
    浏览(46)
  • 74LS595 74HC595使用方法以及驱动数码管显示(附:使用代码)

    由于74HC595与74LS595功能是一样的没有区别。LS和HC代表不同工作速度,HC代表CMOS芯片电路中工作速度最高的产品,LS表示普及、通用型产品。其驱动方法也是一样的。 74LS595是串行输入并行输出的器件,可以串联使用,达到引脚拓展的目的。主要引用在数码管的驱动,点阵的驱动

    2024年02月06日
    浏览(184)
  • HC595级联原理及实例 - STM32

            74HC595的最重要的功能就是:串行输入,并行输出。其次,74HC595里面有2个8位寄存器:移位寄存器、存储寄存器。74HC595的数据来源只有一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。 引脚图 14脚:DIN(SER),串行数据输入引脚 13脚:

    2024年03月28日
    浏览(46)
  • 【51单片机】IO 扩展(串转并)--74HC595

    参考: 普中 51 单片机开发攻略 第12章 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】 https://www.bilibili.com/video/BV1Mb411e7re/?p=21share_source=copy_webvd_source=77e36f24add8dc77c362748ffb980148 nop ()是什么语句? and 位运算操作符 【51单片机入门教程-2020版 程序全程纯手打 从零开始入

    2024年01月22日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包