实践/硬件DIY

PCF8574 IO扩展模块怎么接线?Arduino I2C两线扩展8个IO口和地址设置详解

硬件DIY 2026-10-15 22:56:30 5阅读 3讨论 举报
PCF8574 IO扩展模块怎么接线?Arduino I2C两线扩展8个IO口和地址设置详解

项目里传感器、按键、LED一多,Arduino的IO脚马上就不够用了。比起换一块更贵的板子,一颗PCF8574就能救急:它是基于I2C总线的8位准双向IO扩展芯片,只需要SDA和SCL两根线,就能凭空多出8个可以读、可以写的GPIO口。这篇把它的接线、I2C地址怎么设讲清楚。

它的工作原理一句话

PCF8574内部有8个准双向IO脚,通过I2C通信和主控交换数据。I2C总线就两根线:SDA传数据、SCL传时钟,两根线还能挂多个设备,每个设备用不同的地址区分。对Arduino来说,PCF8574把读写8个IO的活儿拿到总线上去办了,主控只花两个脚就能控制一大片。

接Arduino很简单

模块一般是VCC、GND、SDA、SCL四个脚,连8个扩展IO口。对Arduino Uno/Nano来说,接法是:VCC接5V(3.3V也行),GND接地,SDA接A4,SCL接A5。模块上一般自带了上拉电阻,所以不用额外加上拉;如果你用的是纯IC自己搭,才需要在SDA、SCL上各加一个约10K的上拉电阻。

地址别用错:0x20到0x27

PCF8574的默认I2C地址是0x20。模块或芯片上有A0、A1、A2三个地址脚,通过跳线或接高低电平来改低位地址,可以得到0x20到0x27一共8个可选地址。也就是说,一根总线上最多可以挂8块PCF8574,扩展出64个IO口,而主控始终只占两个脚。如果模块连上后扫描不到,先核对A0/A1/A2的接法,再跑一个I2C扫描程序看设备到底在哪个地址。

做输出和做输入要分清

PCF8574的8个IO是准双向的,做输出时要注意它的驱动能力有限:灌电流(输出低电平时吸收电流)能到25mA左右,但拉高电流(源电流)很小。所以驱动LED这类负载,好习惯是把LED的正极接电源、负极通过电阻接IO脚,让芯片去"下拉",而不是把LED正极挂在IO脚上靠它推上去。做输入时,一般先让对应位输出高电平(芯片内部有弱上拉),再检测外部把它拉低,这样才稳定、不悬浮乱跳。

什么时候用它最划算

当你想给矩阵键盘、一堆按键、一排LED或继电器模块留出IO,又不想挤占原本的数字口,PCF8574就很合适。配Arduino有好几个现成库(如PCF8574.h、Adafruit_PCF8574),pinMode/digitalWrite/digitalRead用法和原生几乎一致,上手快。

四根总线接对、地址对上、把输出改成灌电流接法,PCF8574就能稳定多给你8个IO。卡壳大都在地址扫描和IO灌/拉电流方向这两处,理清就不懵。

版权声明:
作者:隔壁老王的教程
链接:https://www.aiddithome.com/p/397063f3856c6.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
3条评论
探头看一眼
1楼 · 7小时前

一根总线挂8块能扩64个IO,这个扩展能力对IO紧张的项目太友好

阿强焊点总飞
2楼 · 7小时前

地址扫描这点太关键,A0A1A2接错扫不到,跑个I2C scan一下就明白

第三次终于亮了
3楼 · 7小时前

输出用灌电流接法真省心,LED正极接电源负极挂IO,不然点亮很吃力

本文作者
最近更新:2026-10-15 22:56