MCU输入IO扩展:多片74HC165级联的高效采集方案
MCU输入IO扩展:多片74HC165级联的高效采集方案
·
MCU输入IO扩展:多片74HC165级联的高效采集方案
在嵌入式系统开发中,我们常常面临一个现实问题:MCU的GPIO资源有限。当项目需要采集大量开关、按键、传感器状态等数字输入信号时,仅靠MCU自身的IO引脚往往捉襟见肘。此时,IO扩展方案就显得尤为重要。
如果说 74HC595 是输出扩展的“明星芯片”,那么它的“孪生兄弟”——74HC165,就是输入扩展的不二之选。本文将详细介绍如何通过 多片74HC165级联,高效扩展MCU的输入能力,实现对数十甚至上百路数字信号的稳定采集。
一、应用场景与优势
典型应用场景:
- 工业控制面板的多按键/开关状态采集
- 多路限位开关或安全门状态监控
- 拨码开关配置读取(替代EEPROM)
- 低成本DI(数字输入)模块设计
方案优势: - 成本极低:74HC165单价1元左右
- 节省MCU资源:N×8输入仅需3~4个IO
- 抗干扰强:并行锁存避免读取过程中信号变化
- 易于扩展:理论上可无限级联(受限于时序和噪声)
二、74HC165芯片简介
74HC165 是一款 8位并行输入、串行输出移位寄存器,主要特性如下:
- 8路并行数据输入(D0~D7)
- 支持异步并行加载(通过 PL 引脚)
- 串行数据输出(Q7)
- 时钟输入(CP)和时钟使能(CE)
- 支持级联扩展(通过 Q7’ 输出连接下一级的 DS)
其工作流程如下: - PL(Parallel Load)拉低:将8路并行输入数据锁存到内部寄存器;
- PL拉高:进入移位模式;
- 在CP时钟驱动下,数据从 Q7 逐位串行输出;
- 若多片级联,前一级的 Q7’ 连接到下一级的 DS,实现数据链式读取。

三、硬件连接方案
以 3片74HC165级联为例,可扩展 24路输入。所需MCU引脚仅需 3~4个:
- PL(Load):并行加载控制(所有芯片共用)
- CP(Clock):移位时钟(所有芯片共用)
- Q7(Data):串行数据输入(仅连接第一片的 Q7)
- CE(Clock Enable):时钟使能控制引脚,低电平有效(所有芯片共用/或者分组)
在简单应用中,CE 可接地;在复杂或高可靠性系统中,建议由 MCU 主动控制
注:部分设计会额外使用 CE(Clock Enable)引脚,但通常可直接接地使能。
为什么有时要使用 CE 引脚?
虽然很多基础应用中会将 CE 直接接地(常使能),但在以下场景中,主动控制 CE 非常有用: -
- 多组165独立控制
若系统中有两组165分别采集不同信号,可通过 CE 分别使能,避免干扰。
- 多组165独立控制
-
- 与SPI或其他高速总线共享时钟
当 CP 连接到系统主时钟(如SPI SCK),但你不想在非采集时段移位,可用 CE 屏蔽无效时钟。
- 与SPI或其他高速总线共享时钟
-
- 防止噪声误触发
在 PL 拉高后、准备读取前,若 CP 线路上有毛刺,可能导致数据错位。此时可先保持 CE = HIGH,待系统稳定后再拉低 CE 开始移位。
- 防止噪声误触发
-
- 实现“暂停移位”功能
在调试或低功耗模式下,可临时冻结移位过程。

- 实现“暂停移位”功能
四、硬件设计要点
- ARM芯片可利用SPI接口(SPI 的 SCK 和 MISO 分别接 CP 和 Q7)接收串行数据,可以提高速率(如搭配FPGA则连接普通IO即可);
- 所有芯片共用 PL̅、CP、CE̅ 信号(同步操作);<特殊应用可分别控制CE>
- 未使用的并行输入引脚:接上拉或下拉电阻(典型值 10kΩ),防止浮空导致功耗增加或误触发。
- PL̅、CE̅:若 MCU 默认输出高阻态,建议外部上拉电阻(4.7–10kΩ),确保默认为非加载/非使能状态。
- DS(首片):若不使用外部串入,可接地或上拉,避免噪声干扰。
- 时钟线(CP)与 PL̅ 线 是关键同步信号,可加 串联小电阻(22–100Ω) 在驱动端,抑制反射(适用于较长PCB走线);
- 机械开关输入,建议软件消抖 + 硬件 RC 滤波;
- 若输入通道极多(>64位)或要求高速:
- 考虑专用GPIO扩展芯片(如 MCP23S17,SPI接口,16位I/O);
- 或使用 CPLD/FPGA 实现自定义并转串逻辑。
- 第一片的 Q7 --> 第二片的 DS --> 第三片的 D7 --> 第N片级联数据。。。
级联接线示例图(3片级联):

与ARM配套使用时是否必须用 SPI?
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| GPIO 软件模拟 | 灵活,任意引脚可用;无需配置 SPI;适合少量芯片 | 速度慢;占用 CPU 时间;代码略繁琐 | 少量 74HC165(1~2 片),低速应用(如按键扫描) |
| SPI + GPIO 控制 PL/CE | 速度快;DMA 支持;CPU 占用低 | 需要占用 SPI 外设和特定引脚;需注意时序匹配 | 多片级联(>2 片)、高速采集(如传感器阵列) |
五、常规I/O扩展方案对比
| 方案 | 接口类型 | 通道数 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|---|---|
| 74HC595 | 串入 → 并出 | 8位/片,可级联 | 成本极低(<¥1),节省IO;驱动能力强(可直驱LED) | 仅输出;无状态反馈;需软件管理时序 | LED矩阵、数码管、继电器控制 |
| 74HC165 | 并入 → 串出 | 8位/片,可级联 | 成本低;扩展输入简单 | 仅输入;无中断;需主动读取 | 按键扫描、开关量采集 |
| MCP23017/MCP23S17 | I²C(23017)或SPI(23S17) | 16位(8 in + 8 out 可配) | 支持中断(INTA/B);双向IO;地址可配置(I²C最多8最多8片) | 成本较高(¥8~15);速度受限于I²C(≤400kHz) | 工控面板、HMI、多外设控制 |
| PCF8574 | I²C | 8位(仅输出或准双向) | 超小封装;接线少(仅2线) | 无输入锁存;驱动能力弱;无中断 | LCD1602控制、简单IO扩展 |
| TCA9555 TI | I²C | 16位,带中断、极性反转 | 工业级温度范围;寄存器丰富;支持输入滤波 | 成本高(¥15+);需配置寄存器 | 工业传感器接口、高可靠输入 |
| CPLD/FPGA | 自定义逻辑 逻辑 | 数十至上百位 | 高速、并行、灵活;可实现复杂状态机 | 开发门槛高;成本高;需额外编程 | 高速数据采集、协议转换 |
六、结语
在资源受限的嵌入式系统中,74HC165级联方案为数字输入扩展提供了一种高性价比、高可靠性的解决方案。它与74HC595输出扩展相辅相成,共同构成了基于标准逻辑芯片的“IO扩展黄金组合”。
更多推荐




所有评论(0)