首页 > 产品大全 > Arduino与74HC595移位寄存器 高效扩展输出引脚指南

Arduino与74HC595移位寄存器 高效扩展输出引脚指南

Arduino与74HC595移位寄存器 高效扩展输出引脚指南

在Arduino项目中,当需要控制大量LED、继电器或其他数字输出设备时,有限的I/O引脚往往成为瓶颈。74HC595移位寄存器是一款低成本、易于使用的串行输入、并行输出芯片,能够通过3个Arduino引脚控制8个输出,并支持多片级联,极大地扩展了输出能力。本文将详细介绍如何在Arduino中使用74HC595。

一、74HC595简介

74HC595是一款8位串行输入/并行输出移位寄存器,带有输出锁存器。其主要引脚功能如下:

  • DS(14脚):串行数据输入
  • SHCP(11脚):移位寄存器时钟输入,上升沿将数据移入
  • STCP(12脚):存储寄存器时钟输入,上升沿将移位寄存器数据锁存到输出寄存器
  • OE(13脚):输出使能,低电平有效(通常接地)
  • MR(10脚):主复位,低电平有效(通常接高电平)
  • Q0~Q7(15,1~7脚):8位并行输出
  • Q7'(9脚):串行数据输出,用于级联下一片595

二、硬件连接

以Arduino UNO为例,连接一片74HC595:

  1. 将74HC595的VCC(16脚)接5V,GND(8脚)接GND。
  2. OE(13脚)接GND,使输出始终使能。
  3. MR(10脚)接5V,不复位。
  4. DS(14脚)接Arduino的D11(数据)。
  5. SHCP(11脚)接Arduino的D12(移位时钟)。
  6. STCP(12脚)接Arduino的D13(锁存时钟)。
  7. 输出Q0~Q7可连接LED(需串联限流电阻)或其他设备。

若需级联多片,将第一片的Q7'(9脚)接第二片的DS(14脚),并共用SHCP和STCP信号。

三、Arduino编程

Arduino内置了shiftOut()函数,可轻松驱动74HC595。以下示例代码演示了如何通过595控制8个LED依次点亮(流水灯效果):

`cpp // 定义引脚 const int dataPin = 11; // DS const int latchPin = 12; // STCP const int clockPin = 13; // SHCP

void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}

void loop() {
for (int i = 0; i < 8; i++) {
// 将数据锁存到输出寄存器
digitalWrite(latchPin, LOW);
// 移位输出:从最低位开始,每次一个1
shiftOut(dataPin, clockPin, MSBFIRST, 1 << i);
digitalWrite(latchPin, HIGH);
delay(100);
}
}
`

代码说明:

  • shiftOut(dataPin, clockPin, bitOrder, value):将value的8位数据按指定顺序(MSBFIRST或LSBFIRST)移出。
  • 每次循环先将latchPin拉低,以便在移位过程中输出保持不变;移位完成后将latchPin拉高,数据锁存到输出引脚。
  • 1 << i生成一个只有第i位为1的字节,实现依次点亮。

四、级联多个595

级联时,只需依次发送多个字节,先发送将到达最后一片595的数据。例如,控制16个LED,使用两片595,代码片段如下:

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, highByte); // 第二片的数据
shiftOut(dataPin, clockPin, MSBFIRST, lowByte);  // 第一片的数据
digitalWrite(latchPin, HIGH);

此处highByte对应第二片595的输出,lowByte对应第一片。多片级联同理。

五、注意事项

  1. 电流限制:74HC595每个输出引脚最大灌电流约35mA,但芯片总电流有限制(通常70mA),不宜直接驱动大功率负载(如电机、高亮LED),建议配合晶体管或驱动芯片。
  2. 电源去耦:在VCC和GND之间靠近芯片处加0.1μF电容,提高稳定性。
  3. 电平匹配:74HC595工作电压2~6V,可与3.3V或5V Arduino兼容。
  4. 布线:时钟线较长时可能引入干扰,尽量缩短连线。

六、

74HC595是Arduino扩展输出引脚的理想选择,仅需3个引脚即可控制8路输出,且支持级联。掌握其工作原理和shiftOut()函数的使用,能够轻松应对LED矩阵、数码管、继电器组等需要多路输出的项目,提升项目的可扩展性和性价比。

如若转载,请注明出处:http://www.sevhua.com/product/46.html

更新时间:2026-10-05 22:08:34