如何用Arduino的扩展IO接口与PCF8574通讯 - 【Arduino教程】

文章目录[隐藏]


Arduino UNO是电子产品的初学者和业余爱好者的入门板,可实现各种应用。我看到了几个使用Arduino开发的项目,从简单的电机控制到带有图形OLED显示屏的完整气象站。

Arduino UNO的主要问题之一是可在我们的项目中使用的数字IO引脚数。我们知道Arduino UNO板带有13个数字IO引脚和5个模拟输入引脚。

对于简单的项目,这可能就足够了,但是如果您要开发一个包含大量传感器,显示单元(LCD或OLED),电机控制和通讯(例如Serial,又要占用两个IO引脚)的复杂项目,则你要担心一点

如果您有Arduino Mega开发板,那么这将不是问题,因为您有大量的IO引脚。问题仅在于UNO和Nano等较小的电路板。

要解决此问题,可以使用PCF8574 IO扩展器模块。我已经使用此IC通过I2C引脚将16×2 LCD显示器与Arduino接口。在此处查看该项目。



关于PCF8574 IC的简要说明


PCF8574是I2C总线到8位并行总线IO扩展器IC。它以一种简单且具有成本效益的方法为许多微控制器提供GPIO扩展。该IC的接口是使用SDA(数据)和SCL(时钟)线路的I2C(或I 2 C)。因此,如果您的微控制器的IO引脚数量有限且具有I2C功能,则可以使用该IC扩展IO引脚。

以下是采用SOIC封装的PCF8574 IC的引脚图。

该封装中有16个引脚,下表给出了简单的引脚说明。

当您购买基于PCF8574 IC的IO扩展模块时,必须小心,因为市场上有两种类型的使用PCF8574 IC的板卡。一个是完整的IO扩展器模块,可以访问所有端口引脚,INT引脚和地址引脚。下图显示了此模块。这是我们将在项目中使用的模块。

还有另一块板配置为与16×2或20×4字符LCD显示器接口。在此板上,地址引脚被拉高,您无法访问所有IO引脚和INT引脚。因此,购买前请检查两次。


如何将PCF8574与Arduino接口连接


由于PCF8574模块的工作是扩展微控制器的IO功能,因此我们可以将其与Arduino UNO板一起使用,以将数字IO数量增加到21。该模块的IO端口引脚可以用作输入或输出

以下是PCF8574与微控制器接口的简单框图,其中两个IO端口引脚配置为输入,一个引脚用于驱动LED,其余引脚用作多个外围设备的控制引脚(输出)。

我们可以对Arduino UNO板和PCF8574 IO扩展板使用类似的设置来控制各种外设。


电路图


以下是PCF8574与Arduino UNO板接口以控制8个LED的电路图。


所需组件


  • Arduino UNO(或任何Arduino板)

  • PCF8574 IO扩展板

    相信许多爱好电子的朋友都听说过集成芯片这个词,而集成芯片要追溯到1947年当时的贝尔实验室诞生了世界上第一个晶体管,从这以后电子时代飞速发展,集成芯片中就有着几千万的晶体管,单片机就是一块集成芯片,只是这块集成芯片有着一些特殊的功能,通过程序的编写我们能够使用这些功能。单片机就像是人的大脑一样,大脑可以控制手脚的运动,能够处理感官接收到的信息,单片机也是如此,单片机能够对外设器件进行控制,能够处理外设接收到的数据。

  • 连接线

  • 5V电源

  • 8个LED

  • 8 x330Ω电阻


连接说明


由于PCF8574模块适用于I2C通信,因此我们必须使用Arduino的I2C引脚来控制模块的IO引脚。Arduino UNO的引脚A4和A5是I2C引脚,其中A4是SDA(数据)引脚,而A5是SCL(时钟)引脚。

将这些引脚连接到PCF8574板上相应的SDA和SCL引脚。现在,将模块的VCC和GND引脚连接到Arduino的+ 5V和GND引脚。

为了测试项目,让我们将一些LED连接到PCF8574模块的IO端口,以便我们可以使用Arduino对其进行控制。因此,在VCC和IO端口之间连接8个LED和相应的限流电阻。

注意:我没有在电路图中连接串联限流电阻。但是我建议您连接它们,只是为了安全起见。

注意:建议为LED使用外部5V电源,而不要通过Arduino板给LED供电。


代码:用于解析I2C从地址

首先,我们必须找出PCF8574模块的I2C总线从设备地址。使用以下代码计算模块的地址。就我而言,当A0,A1和A2引脚连接到LOW时,地址原来是0x20。因此,我将在实际代码中使用此地址。


代码:用于控制IO端口

进入实际项目,除了Arduino IDE附带的“ Wire”库外,您不需要任何其他库。使用以下代码切换备用LED。


工作中


该项目的工作非常简单。我已使用I2C通信将PCF8574与Arduino连接。确定PCF8574模块的从站地址后,我们必须使用该地址开始I2C通信。

当LED连接到IO端口时,您要做的就是以HEX格式发送不同模式的LED触发代码。

由于I2C不使用Arduino的任何现有数字IO引脚,因此您在Arduino UNO板上总共获得21个IO引脚(在Arduino UNO上为13个,在PCF8574 IO端口上为8个),您可以使用更大的引脚项目。


摘要


这个简单的项目,其中通过将PCF8574与Arduino 的扩展IO接口连接来增加Arduino UNO板的IO引脚数。使用此IO扩展模块,您可以连接许多IO设备,例如温度传感器,湿度传感器,16×2 LCD显示器,状态LED,继电器,电机等,而无需担心IO引脚的数量。

其实所谓移植,都是算法软件层次,离底层越远越好。比如windows下的项目移植到Linux下。因为操作系统会自动适应不同的底层硬件,我们写代码无需考虑寄存器的不同。但是在单片机这里,显然我们做不到这点,因此,移植也只能是算法结构上的参考了,代码还是得重新建立。

生成海报
点赞 0

创世纪

单片机学习,电子制作DIY学习与分享,各种新鲜的,有趣的,好玩的,一起来吧!机器人、无人机、树莓派/Raspberry Pi、arduino、极客、创客等

相关推荐

【Arduino实验15 红外遥控电风扇】

目录 一、设计目的 二、设计要求 三、设计原理 1.舵机 2.直流电机 3.ULN2003驱动 四、硬件设计 1.舵机 2.直流电机 3.ULN2003驱动 4.红外遥控电风扇 五、软件设计 1.舵机控制程序 2.电