74HC595移位寄存器怎么接线?Arduino用3根线扩展8个IO口详解

电机传感器师硬件DIY 2026-10-15 22:56:24 4阅读 举报

给小车加一排指示灯、做数码管或者点矩阵的时候,最头疼的就是Arduino的数字口不够用。74HC595就是专门对付这个的:一颗8位串行输入的移位寄存器芯片,只占Arduino的3个数字口,就能并行输出8路信号,而且几颗还能串联级联,扩展出来的口几乎不限量。这篇把它的三个控制脚怎么接、输出脚怎么驱动说清楚。

移位寄存器到底干了啥

74HC595是一颗串行输入、并行输出的移位寄存器。意思是数据从一根线上一位一位"流"进来,攒够8位后,一次性从8个并行输出脚(Q0~Q7)同时输出。芯片内部有两个寄存器:移位寄存器负责接收串行数据,存储寄存器负责把数据锁存到输出口上。这种双寄存器设计的好处是,往里面填数据的时候输出不会跟着乱闪,等锁存脉冲一来,8路才一起更新。

三个控制脚怎么接:数据、时钟、锁存

74HC595真正需要的就是三个信号:数据脚(DS/SER,第14脚)、移位时钟脚(SH_CP/SRCLK,第11脚)、锁存脚(ST_CP/RCLK,第12脚)。常见接法是把这三根分别接到Arduino的D4、D6、D5。剩下的供电和控制脚也不能漏:第16脚VCC接5V,第8脚GND接地,第13脚OE(输出使能)接GND让它一直开,第10脚SRCLR(移位清零)接5V让它不复位。8个并行输出脚Q0~Q7就分别去驱动LED、数码管或下一颗芯片。

数据是怎么送进去的

Arduino里用shiftOut()函数就能把一字节数据一位一位送进去,然后给锁存脚一个由低到高的脉冲,8路就一起输出。注意有个容易忽略的位序问题:shiftOut默认MSBFIRST还是LSBFIRST,要和你的接线对应,弄反了LED的点亮顺序就是反的。程序里先把锁存脚拉低、送完数据再拉高,这个时序不能省,否则输出会乱。

级联扩展几乎不限量

一颗74HC595只有8路,想扩展更多就把上一颗的第9脚(QH'串行输出)接到下一颗的数据脚(SER),时钟和锁存两根线两颗共用,这样串起来就有16路、24路……数据按顺序一次送进去就行。控制小车的点阵屏、数字钟、跑马灯这些,基本都用这种级联。

只要三个控制脚接对、OE和SRCLR别漏接、把移位顺序对上,74HC595就能用很少的引脚撑起一大片输出。卡壳多半在OE/SRCLR没接好导致没输出、或者位序反了,顺着这两个点查很快。

版权声明:
作者:电机传感器师
链接:https://www.aiddithome.com/p/108cab8feee6ab.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
3条评论
拆机党
1楼 · 1天前

shiftOut的位序反过一回,LED从右往左亮,对调LSBMSB就好了

锡点
2楼 · 1天前

级联串起来很方便,几颗一路连下来,跑马灯随便做,引脚是真省

电烙铁爱好者
3楼 · 1天前

OE和SRCLR真不能漏接,我第一次没接13脚直接没输出,找半天