0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >基础知识 > 74hc595应用电路图

74hc595应用电路图

来源:
2025-07-11
类别:基础知识
eye 1
文章创建人 拍明芯城

74HC595移位寄存器应用电路详解

74HC595是一款非常常用的串行输入、并行输出的8位移位寄存器,它在需要扩展微控制器GPIO端口的应用中扮演着重要的角色。当微控制器的可用引脚数量有限,但需要控制大量的LED、数码管或其他并行设备时,74HC595能够有效地解决这个问题,极大地简化了硬件连接并节省了宝贵的微控制器引脚资源。通过串行数据传输,74HC595可以将3个微控制器引脚(数据、时钟、锁存)扩展为8个输出引脚,并且可以通过级联进一步扩展更多的输出。

image.png

74HC595引脚功能与工作原理

理解74HC595的工作原理是设计应用电路的基础。74HC595内部包含一个8位串行输入、并行输出的移位寄存器和一个8位并行输出的存储寄存器。

引脚功能:

  • Q0-Q7: 8位并行数据输出引脚。这些引脚直接连接到存储寄存器的输出,当存储寄存器的数据更新时,它们的状态也随之改变。它们是推挽输出,可以直接驱动LED等负载。

  • SER (Serial Data Input): 串行数据输入引脚。数据通过这个引脚一位一位地移入移位寄存器。每次时钟上升沿时,SER引脚上的数据位被移入移位寄存器的最低位(Q0),同时移位寄存器中的原有数据向高位移动一位。

  • SRCLK (Shift Register Clock): 移位寄存器时钟引脚。每个SRCLK的上升沿,SER上的数据被移入移位寄存器,并且移位寄存器中的所有位向高位(Q7方向)移动一位。这是串行数据传输的关键时钟信号。

  • RCLK (Register Clock / Latch Clock): 存储寄存器时钟/锁存时钟引脚。当RCLK的上升沿到来时,移位寄存器中的8位数据会被并行地传输到存储寄存器中,并立刻反映在Q0-Q7输出引脚上。这个操作允许在移位寄存器中准备好所有数据后再一次性更新输出,避免了数据在移位过程中对输出产生闪烁或不稳定的现象。

  • SRCLR (Shift Register Clear): 移位寄存器清零引脚。这是一个低电平有效的异步清零输入。当SRCLR引脚为低电平时,移位寄存器中的所有数据位(Q0-Q7)都会被强制清零为0。在初始化或需要清除输出状态时非常有用。通常情况下,如果不需要清零功能,应将其连接到VCC。

  • OE (Output Enable): 输出使能引脚。这是一个低电平有效的输出控制引脚。当OE引脚为高电平时,Q0-Q7输出引脚处于高阻态(三态),即不输出高电平也不输出低电平,相当于断开了连接。当OE引脚为低电平时,Q0-Q7输出引脚正常工作,输出存储寄存器中的数据。这个引脚在多片74HC595共用数据线或需要分时复用输出时非常有用。通常情况下,如果需要持续输出,应将其连接到GND。

  • Q'S (Serial Data Output / Q7 Prime): 串行数据输出引脚。这个引脚输出的是移位寄存器中的最高位数据(Q7)。它允许将多个74HC595级联,将一个74HC595的Q'S连接到下一个74HC595的SER引脚,从而实现更长的串行数据链和更多的并行输出。

  • VCC: 电源正极。通常连接到3.3V或5V直流电源。

  • GND: 电源地。

工作原理概述:

  1. 数据移入 (Shift Data): 微控制器通过SER引脚发送一位数据,并产生一个SRCLK的上升沿。74HC595会将SER上的数据移入其内部的8位移位寄存器。这个过程重复8次,直到8位数据全部移入。

  2. 数据锁存 (Latch Data): 当8位数据全部移入移位寄存器后,微控制器产生一个RCLK的上升沿。此时,移位寄存器中的数据会被并行地传输到存储寄存器中。

  3. 数据输出 (Output Data): 存储寄存器中的数据立刻通过Q0-Q7引脚输出,控制外部设备的状态。如果OE引脚为低电平,则输出有效;如果OE引脚为高电平,则输出高阻态。

这个分两步的操作(移位和锁存)是74HC595的关键特性。它确保了在所有数据都准备好之前,输出引脚不会发生变化,从而避免了输出端的“闪烁”或不一致状态。


典型应用电路图


以下是74HC595的几种典型应用电路图,涵盖了从最基本的单片驱动到多片级联扩展的应用场景。


1. 单个74HC595驱动8个LED


这是74HC595最基础也是最常见的应用。通过一个74HC595,我们可以用3个微控制器引脚来控制8个LED。

电路图描述:

  • 电源连接:

    • 74HC595的VCC引脚连接到微控制器的5V或3.3V电源输出。

    • 74HC595的GND引脚连接到微控制器的地线。

  • 控制引脚连接(与微控制器连接):

    • SER (Pin 14) 连接到微控制器的一个通用I/O引脚(例如:GPIO_DATA)。这是串行数据输入端。

    • SRCLK (Pin 11) 连接到微控制器的另一个通用I/O引脚(例如:GPIO_SRCLK)。这是移位寄存器的时钟输入。

    • RCLK (Pin 12) 连接到微控制器的第三个通用I/O引脚(例如:GPIO_RCLK)。这是存储寄存器的锁存时钟输入。

  • 功能引脚连接:

    • SRCLR (Pin 10):通常连接到VCC(高电平),使其保持非清零状态。如果需要异步清零功能,可以连接到微控制器的另一个GPIO引脚。

    • OE (Pin 13):通常连接到GND(低电平),使能输出。如果需要控制输出的使能/禁用,可以连接到微控制器的另一个GPIO引脚。

  • 输出连接 (Q0-Q7):

    • Q0-Q7 (Pin 15, Pin 1-7) 分别连接到8个LED的阳极。

    • 每个LED的阴极通过一个合适的限流电阻(通常为220Ω-1KΩ,具体值取决于LED的正向电压和期望电流)连接到GND。限流电阻是必不可少的,用于保护LED和74HC595,防止过流损坏。

工作流程:

  1. 微控制器准备一个8位的数据(例如:0b10101010)。

  2. 循环8次:

    • 取出当前位的最高位数据(例如,先是1)。

    • 将该数据通过SER引脚发送给74HC595。

    • SRCLK引脚一个上升沿(先拉低再拉高)。这会将数据位移入74HC595的移位寄存器。

  3. 当所有8位数据都移入移位寄存器后,给RCLK引脚一个上升沿。这会将移位寄存器中的数据锁存到存储寄存器,并立即反映在Q0-Q7输出引脚上,从而控制LED的亮灭。


2. 多个74HC595级联驱动更多LED


当需要控制超过8个输出设备时,74HC595的级联功能变得非常有用。通过连接一片74HC595的Q'S引脚到下一片74HC595的SER引脚,可以轻松地扩展输出。

电路图描述:

假设我们级联两片74HC595来驱动16个LED。

  • 公共连接:

    • 所有74HC595的VCCGND引脚都连接到相应的电源和地。

    • 所有74HC595的SRCLKRCLKSRCLROE引脚都可以并联连接到微控制器的相应引脚。这意味着所有的74HC595共享同一个时钟、锁存、清零和输出使能信号。

  • 串行数据链连接:

    • 第一片74HC595 (U1) 的SER引脚连接到微控制器的GPIO_DATA

    • 第一片74HC595 (U1) 的Q'S (Pin 9) 引脚连接到第二片74HC595 (U2) 的SER引脚。

    • 如果还有第三片,第二片(U2)的Q'S连接到第三片(U3)的SER,以此类推。

  • 输出连接:

    • U1的Q0-Q7连接到前8个LED及其限流电阻。

    • U2的Q0-Q7连接到后8个LED及其限流电阻。

工作流程:

  1. 微控制器需要发送16位数据(例如:两个8位字节)。

  2. 发送数据时,应从最末端的74HC595(距离微控制器最远的那一片)所需的数据开始发送。例如,如果要控制U1和U2,需要先发送U2的数据,然后发送U1的数据。这是因为数据是“推”入移位寄存器的,最早进入的数据会最终出现在距离SER最远的那一片的Q7端。

  3. 对于16位数据,微控制器将循环16次:

    • 取出当前位的最高位数据。

    • 将该数据通过SER引脚发送给第一片74HC595 (U1)。

    • 给所有74HC595的SRCLK引脚一个上升沿

  4. 当所有16位数据都移入各自的移位寄存器后(U1和U2的移位寄存器都被填充),给所有74HC595的RCLK引脚一个上升沿。这会将各自移位寄存器中的数据并行地锁存到存储寄存器,同时更新Q0-Q7输出引脚。


3. 驱动七段数码管


74HC595非常适合驱动七段数码管,无论是共阳极还是共阴极。这里以共阴极数码管为例。

电路图描述(共阴极):

  • 电源与控制连接: 同上述LED驱动电路。

  • 输出连接:

    • 74HC595的Q0-Q6引脚分别连接到七段数码管的a-g段。

    • 74HC595的Q7引脚可以连接到小数点(DP)段。

    • 每个段线(a-g, dp)都需要串联一个限流电阻(例如220Ω-1KΩ),然后连接到数码管的相应段。

    • 数码管的公共阴极连接到GND。

工作流程:

  1. 微控制器根据需要显示的数字或字符,准备相应的8位段码数据。例如,显示数字“1”,则对应段码可能为0b00000110(假设gfedcba顺序)。

  2. 按照驱动8个LED的方式,将8位段码数据串行移入74HC595的移位寄存器。

  3. 锁存数据,使数码管显示相应的数字。

对于多位七段数码管,可以采用以下两种方式:

  • 多片74HC595级联: 每位七段数码管使用一片74HC595驱动,所有74HC595级联起来,实现多位并行显示。这种方式连接简单,但需要较多的74HC595芯片。

  • 74HC595配合PNP/NPN晶体管进行动态扫描: 一片74HC595驱动所有数码管的段线(a-g, dp),然后用微控制器的其他GPIO引脚结合PNP或NPN晶体管来控制每位共阴/共阳极的通断。通过快速地轮流点亮每一位数码管,利用人眼的视觉暂留效应,实现多位同时显示的效果。这种方式节省了74HC595芯片的数量,但需要更复杂的软件控制和额外的晶体管。


4. 驱动继电器/高功率负载


74HC595的输出电流能力有限(最大输出电流通常为±35mA)。直接驱动继电器或需要更大电流的负载可能会损坏芯片。在这种情况下,需要使用外部驱动电路,例如晶体管或达林顿管阵列。

电路图描述:

  • 电源与控制连接: 同上述LED驱动电路。

  • 输出连接(以驱动NPN晶体管为例):

    • 74HC595的Q0-Q7引脚分别连接到NPN晶体管(例如2N2222、BC547)的基极,每个基极前串联一个限流电阻(通常为1KΩ-10KΩ)。

    • 晶体管的发射极连接到GND。

    • 晶体管的集电极连接到继电器的线圈一端。

    • 继电器的另一端线圈连接到外部电源(通常为12V或5V,取决于继电器类型)。

    • 在继电器线圈两端并联一个续流二极管(例如1N4007),方向与电流方向相反,用于释放继电器线圈断电时产生的反向电动势,保护晶体管。

工作流程:

  1. 微控制器发送8位数据给74HC595,控制相应输出引脚的高低电平。

  2. 当74HC595的某个Qx引脚输出高电平,相应的NPN晶体管导通。

  3. 晶体管导通后,电流流过继电器线圈,继电器吸合,其触点闭合,从而控制高功率负载的通断。


74HC595编程与软件控制


虽然上述电路图说明了硬件连接,但74HC595的真正力量在于其软件控制。以下是一个使用Arduino(基于C++)控制74HC595驱动8个LED的示例代码。

C++

// 定义连接74HC595的Arduino引脚const int LATCH_PIN = 8;   
// RCLK (ST_CP) - 存储寄存器时钟引脚const int CLOCK_PIN = 9;  
// SRCLK (SH_CP) - 移位寄存器时钟引脚const int DATA_PIN = 10;  
// SER (DS)    - 串行数据输入引脚void setup() {  
// 设置引脚为输出模式
 pinMode(LATCH_PIN, OUTPUT);
 pinMode(CLOCK_PIN, OUTPUT);
 pinMode(DATA_PIN, OUTPUT);  // 初始化74HC595的输出为全灭
 digitalWrite(LATCH_PIN, LOW); // 拉低锁存引脚,准备接收数据
 shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, 0x00); // 写入0x00,所有LED熄灭
 digitalWrite(LATCH_PIN, HIGH); // 拉高锁存引脚,更新输出}void loop() {  // 逐个点亮LED
 for (byte i = 0; i < 8; i++) {
   byte dataToSend = 0x01 << i; // 生成从Q0到Q7依次点亮的模式
   updateShiftRegister(dataToSend);
   delay(200); // 延时200毫秒
 }  // 逐个熄灭LED
 for (byte i = 0; i < 8; i++) {
   byte dataToSend = ~(0x01 << i); // 生成从Q0到Q7依次熄灭的模式
   updateShiftRegister(dataToSend);
   delay(200);
 }  // 交替点亮LED
 updateShiftRegister(0xAA); // 10101010
 delay(500);
 updateShiftRegister(0x55); // 01010101
 delay(500);  // 全亮
 updateShiftRegister(0xFF);
 delay(1000);  // 全灭
 updateShiftRegister(0x00);
 delay(1000);
}// 自定义函数,用于将数据写入74HC595void updateShiftRegister(byte data) {  
// 1. 拉低锁存引脚,准备移位数据
 digitalWrite(LATCH_PIN, LOW);  // 2. 通过循环将8位数据一位一位地移入74HC595
 // MSBFIRST表示从最高位开始发送数据,LSBFIRST表示从最低位开始发送
 // Arduino的shiftOut函数已经封装了SRCLK的上升沿操作
 shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, data);  
 // 3. 拉高锁存引脚,使数据从移位寄存器传输到存储寄存器并更新输出
 digitalWrite(LATCH_PIN, HIGH);
}

代码解释:

  • LATCH_PIN, CLOCK_PIN, DATA_PIN 定义了连接74HC595的Arduino引脚。

  • setup() 初始化Arduino引脚为输出模式,并在程序启动时将所有LED熄灭。

  • loop() 包含了演示如何控制LED亮灭的几种模式(逐个点亮、逐个熄灭、交替亮灭、全亮、全灭)。

  • updateShiftRegister(byte data) 这是核心函数,负责将一个字节的数据发送到74HC595。

    • DATA_PIN:数据引脚。

    • CLOCK_PIN:时钟引脚。

    • MSBFIRST:指定数据发送顺序,MSBFIRST表示从最高有效位(Most Significant Bit)开始发送,LSBFIRST表示从最低有效位(Least Significant Bit)开始发送。74HC595通常推荐使用MSBFIRST,因为这样发送的第一个位会最终出现在Q7,最后一个位会出现在Q0。

    • data:要发送的8位数据。

    • shiftOut函数会自动处理每次发送一位数据时,拉高和拉低时钟引脚的操作,模拟SRCLK的上升沿。

    1. digitalWrite(LATCH_PIN, LOW);:在开始发送数据之前,将锁存引脚拉低,确保数据只进入移位寄存器,不会立即更新输出。

    2. shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, data);:这是Arduino库中提供的函数,用于串行发送数据。

    3. digitalWrite(LATCH_PIN, HIGH);:当所有8位数据都通过shiftOut函数移入74HC595的移位寄存器后,将锁存引脚拉高,触发数据从移位寄存器传输到存储寄存器,并更新Q0-Q7的输出。

级联控制的编程思路:

当级联多片74HC595时,编程的关键在于发送数据时的顺序。你需要发送总位数的数据,并且要确保数据发送的顺序是正确的。对于N片级联的74HC595,你需要发送N * 8位数据。在发送时,应先发送最末端74HC595所需的数据(即距离微控制器最远的那片),然后依次向前发送。

例如,两片级联:需要发送16位数据。首先发送给第二片74HC595的8位数据,然后发送给第一片74HC595的8位数据。

// 假设有两片74HC595级联void updateTwoShiftRegisters(byte data2, byte data1) {
 digitalWrite(LATCH_PIN, LOW);
 shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, data2); // 先发送给第二片的数据
 shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, data1); // 再发送给第一片的数据
 digitalWrite(LATCH_PIN, HIGH);
}


74HC595应用中的注意事项


在使用74HC595进行电路设计和编程时,需要考虑以下几点以确保电路的稳定性和可靠性:

  • 电源去耦: 在74HC595的VCC和GND引脚之间靠近芯片的位置并联一个0.1μF(104)的陶瓷电容。这个去耦电容可以滤除电源噪声,提供稳定的电源,尤其是在高速开关或驱动感性负载时,防止芯片内部电路受到瞬态电压波动的影响。

  • 限流电阻: 在驱动LED或其他需要电流限制的设备时,务必串联限流电阻。74HC595的每个输出引脚能够提供或吸收的电流是有限的,如果直接连接LED而不加电阻,会导致LED过流损坏或74HC595的输出引脚烧毁。

  • 引脚状态初始化: 在程序开始时,确保所有控制引脚(LATCH_PIN, CLOCK_PIN, DATA_PIN)都被正确初始化,并将74HC595的输出设置为已知状态(例如,所有LED熄灭)。这可以避免在启动时出现随机的输出状态。

  • SRCLR和OE引脚:

    • SRCLR (Pin 10): 如果不需要清零功能,应将其连接到VCC。如果需要,可以连接到微控制器的GPIO引脚,并在需要清零时拉低该引脚。

    • OE (Pin 13): 如果需要持续输出,应将其连接到GND。如果需要控制输出的启用/禁用(例如,在扫描显示或多路复用应用中),可以连接到微控制器的GPIO引脚,并在需要禁用输出时拉高该引脚。

  • 数据顺序: 当级联多片74HC595时,数据发送的顺序至关重要。始终从“最远”的74HC595(即,串行数据链的末端)开始发送数据,因为数据会“推”过所有的寄存器。例如,如果U1和U2级联(U1的Q'S连接到U2的SER),你需要先发送U2的数据,再发送U1的数据。

  • 时序要求: 74HC595有其特定的时序要求,包括时钟脉冲宽度、数据建立时间、数据保持时间等。虽然在大多数微控制器应用中,直接使用digitalWritedelayMicroseconds来控制时序已经足够,但对于高速或更复杂的设计,需要查阅数据手册确保满足所有时序要求。Arduino的shiftOut函数通常已经考虑了这些时序,使用起来比较方便。

  • 电源电压: 确保为74HC595提供其工作电压范围内的电源(通常为2V-6V)。HC系列是CMOS器件,对电源电压波动有一定的容忍度,但超出范围可能会导致功能异常或损坏。

  • 共地: 微控制器和74HC595必须共用一个地线,以确保正确的信号参考电平。

  • 上拉/下拉电阻: 通常情况下,74HC595的输入引脚不需要额外的上拉/下拉电阻,因为微控制器的GPIO可以提供足够稳定的高低电平。但在某些特殊情况下,例如为了确保在微控制器未初始化时引脚处于已知状态,可以考虑在SER、SRCLK、RCLK上添加下拉电阻,SRCLR和OE上添加上拉电阻。


74HC595的扩展应用


74HC595不仅仅局限于驱动LED或数码管,其串行输入并行输出的特性使其在许多领域都有广泛的应用:

  • LED点阵显示屏: 通过多片74HC595级联,结合行扫描和列驱动,可以构建大型LED点阵显示屏,显示文字、图案甚至简单的动画。

  • LED立方体: 类似于点阵屏,74HC595可以用于驱动LED立方体的每一层或每一列LED。

  • 多路开关控制: 控制一组继电器、固态继电器或其他开关器件,实现多路电源通断、信号切换等功能。

  • 移位寄存器链: 作为更复杂数字电路的一部分,用于构建数据通道、数据缓冲器或自定义逻辑功能。

  • 扩展数字输出: 当微控制器IO口不足时,74HC595是最经济有效的扩展数字输出的方案之一。例如,控制多个步进电机驱动器、多个七段解码器等。

  • 并行数据采集(逆向应用): 虽然74HC595是串入并出,但有些类似功能的芯片(如74HC165,并入串出)可以与74HC595配合使用,实现串行扩展输入和输出。

  • 矩阵键盘扫描: 虽然主要用于输出,但在某些巧妙的设计中,74HC595也可以与输入扩展芯片(如74HC165)结合,用于矩阵键盘的行扫描和列读取。


总结


74HC595是一款功能强大、应用广泛的串行输入、并行输出移位寄存器。它通过简单有效的串行通信协议,极大地解决了微控制器I/O引脚不足的问题。理解其引脚功能、工作原理以及正确的应用电路设计是成功使用它的关键。无论是简单的LED控制,还是复杂的显示系统和多路控制,74HC595都能提供一种经济高效的解决方案。通过本文的详细介绍和代码示例,希望您能够充分掌握74HC595的应用,并将其灵活运用到您的电子项目中。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: 74HC595

相关资讯

资讯推荐
云母电容公司_云母电容生产厂商

云母电容公司_云母电容生产厂商

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告