74HC595 是什么?用 3 根线扩出 8 路 IO 控制 8 颗 LED

2026-10-21 16:40:34 14阅读

Arduino 的 IO 口就那么十几个,要做 8 颗灯、8 个数码管或者一块 LED 点阵时总不够用。74HC595 就是一块“串转并”的移位寄存器,用 3 根信号线就能扩展出 8 路并行输出,是入门级多路控制里性价比最高的小芯片。

移位寄存器是什么

简单说,74HC595 把你用一根数据线一位一位送进来的数据,攒够 8 位后,一次性在它的 8 个输出脚 Q0~Q7 上同时放出去。Arduino 只要提供三根信号:数据(SER/DS)、移位时钟(SRCLK/SH_CP)、锁存时钟(RCLK/ST_CP)。

74HC595 与 Arduino 三线接线及芯片引脚定义框图

怎么接线

常用接法:SER 接 D2,RCLK(锁存) 接 D3,SRCLK(移位) 接 D4。VCC 和 OE 接 5V,GND 和 SRCLR 接地(SRCLR 是清零脚,正常拉高)。8 个输出脚 Q0~Q7 各串一颗 220~470Ω 限流电阻接到 8 颗 LED 的正极,LED 负极统一接地。

74HC595 驱动 8 颗 LED 的完整电路接线

控制代码

先 phối 好锁存脚和移位时钟,用 shiftOut 往片子里一位位送数据:

#define DS 2
#define ST_CP 3
#define SH_CP 4
void setup(){
  pinMode(DS,OUTPUT);pinMode(ST_CP,OUTPUT);pinMode(SH_CP,OUTPUT);
}
void loop(){
  digitalWrite(ST_CP,LOW);
  shiftOut(DS,SH_CP,LSBFIRST,0b10101010);
  digitalWrite(ST_CP,HIGH);
  delay(500);
  digitalWrite(ST_CP,LOW);
  shiftOut(DS,SH_CP,LSBFIRST,0b01010101);
  digitalWrite(ST_CP,HIGH);
  delay(500);
}

想要更多输出就级联

一片只能 8 路,但 74HC595 可以级联:把第一片的 Q7'(串行输出)接到第二片的 DATA 脚,共用移位和锁存时钟,就能用同样 3 根线控制 16 路、24 路甚至更多。对点阵、跑马灯这类“输出超多”的项目,这是最省 IO 的常用招。

避坑提醒

一是 LED 一定要串限流电阻,直接怼输出脚易烧芯片。二是数据发送要遵循 先移位后锁存 的顺序,否则显示会乱闪。三是买芯片认准 74HC595 或 M74HC595,别和 74LS595(不同电平)混着用。


作者:安利君
链接:https://www.aiddithome.com/p/1681e6bec6e596.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
修啥都行二哥
1楼 · 2026-10-21 16:40:38

先移位后锁存,这个顺序记下了。

下班才有空
2楼 · 2026-10-21 16:40:37

限流电阻必须串,我第一次没串直接冒烟了。

刷着刷着入坑了
3楼 · 2026-10-21 16:40:36

级联那段讲得明白,跑马灯不愁 IO 不够了。

参数党小马
4楼 · 2026-10-21 16:40:35

3 根线控制 8 个灯,这个扩展思路太实用了。