如何将PCF8574 I2C LCD与Arduino连接?

在这个项目中,我们将看到如何将I2C LCD与Arduino连接。我们已经看到了如何连接常规16×2 LCD与Arduino。通过将I2C LCD与Arduino一起使用,您可以保留Arduino Uno的所有数字I/O针,并使用LCD使用LCDI2C通信

介绍

如下图中所示的字母数字字符LCD是许多DIY项目中经常使用的组件之一。它通常与Arduino一起使用,以显示广泛的信息,例如传感器读数,来自GSM模块的消息或任何状态信息。

LCD模块

连接16×2或20×4字符LCD的最简单方法是选择所需尺寸的LCD模块,并在4位模式下连接其Arduino Uno。但是,这种设置的主要缺点是,即使在4位模式下,LCD也需要6个Arduino的数字IO引脚才能进行正确的通信。

如果您的项目需要与多个传感器和其他IO设备进行交互,那么您可能需要Arduino的尽可能多的IO引脚。如果LCD本身利用可用的13个数字IO引脚中的6个,那么您只剩下7个引脚来接口其他组件。

如何将I2C LCD与Arduino连接?

解决方案是将I2C LCD与Arduino一起使用。为此,将基于I2C的GPIO扩展器与常规16×2字母数字LCD一起使用。

下图显示了一个基于PCF8574 IC的模块,该模块专门为LCD显示。

PCF8574 I2C LD

您可以将该模块直接插入常规LCD的引脚,并使用Arduino(或任何微控制器)使用I2C通信,您可以传输数据。

PCF8574的简短说明

PCF8574是一种基于I2C的I/O扩展器IC,可为具有I2C接口的微控制器提供8位I/O扩展。仅使用I2C接口的两行,即SDA(串行数据)和SCL(串行时钟),您可以配置8个双向I/O引脚。

注意:将提供有关PCF8574 GPIO扩展器的单独教程。因此,我将在该教程中提供有关PCF8574 IC的更多详细信息。

带有Arduino的I2C LCD的电路图

下图显示了用于将I2C LCD与Arduino连接的电路图。

I2C LCD带有Arduino电路图

需要组件

  • Arduino Uno
  • 16×2 LCD显示
  • PCF8574 I2C LCD背包
  • 连接电线

电路连接

首先,插入LCD显示屏背面的PCF8574模块。检查两个模块的引脚。使用以下图像作为参考。

I2C LCD带有Arduino LCD连接

通常,I2C引脚从LCD模块中出来,以便于与Arduino易于连接,如下图所示。

I2C LCD引脚

将I2C模块连接到LCD后,将PCF8574模块的GND和VCC引脚连接到Arduino的GND和5V引脚。最后,SDA和SCL引脚。将它们连接到Arduino Uno的针A4和A5销。

代码

I2C从地址的代码

I2C通信中的一个重要步骤是找出从设备的地址。基于PCF8574 IC的A0,A1和A2引脚,固定了I2C从模块的地址。

让我们使用Arduino的简单代码来确定地址并将其显示在串行终端上。首先,根据上述电路图进行连接。

然后上传以下代码以查看I2C从地址。

#include

void setup()
{
Wire.Begin();

Serial.Begin(9600);
而(!串行);
}

void loop()
{
字节错误,地址;
int i2cdevices;

serial.println(“扫描I2C设备……”);

i2cdevices = 0;
for(地址= 1;地址<127;地址++)
{
Wire.BeginTransermiss(地址);
error = wire.endtransmission();

如果(错误== 0)
{
serial.print(“在地址0x上找到I2C设备”);
if(地址<16)
serial.print(“ 0”);
serial.print(地址,十六进制);
serial.println(“!”);

i2cdevices ++;
}
否则(错误== 4)
{
serial.print(“地址0x的未知错误”);
if(地址<16)
serial.print(“ 0”);
serial.println(地址,十六进制);
}
}
if(i2cdevices == 0)
serial.println(“找到\ n的i2c设备”);
别的
serial.println(“ **** \ n”);

延迟(5000);
}

上传代码后,打开串行监视器并将波特率设置为9600。在我的情况下,地址为0x3F。因此,在实际的编程中(要在LCD上显示内容),我必须使用此地址。

I2C LCD扫描地址

在LCD上显示的代码

在进入代码之前,您需要一个称为“ LiquidCrystal_i2c”的特殊库。它基于我们通常使用但用于I2C通信的“ LiquidCrystal”库。您可以从关联。

下载zip文件,提取内容并将目录重命名为“ LiquidCrystal-i2c”,然后将文件夹放在您的库中Arduino安装(通常,c:\ program文件(x86)\ arduino \ libraries)。

以下是用于在LCD模块上显示文本的简单测试代码。

#include
#include

//将LCD地址设置为16个字符和2行显示的0x3F
LiquidCrystal_I2C LCD(0x3F,16,2);

void setup()
{
lcd.begin();

lcd.backlight();
lcd.setcursor(0,0);
lcd.print(“ i2c lcd with”);
lcd.setcursor(0,1);
lcd.print(“ arduino”);
}

void loop()
{
//在这里什么都不做...
}

在职的

该项目的工作非常简单。它只是具有LCD显示扩展的I2C协议。由于I2C总线上的从属地址很重要,因此要非常谨慎地计算它们,因为它们在程序中直接使用。除了I2C从地址外,LCD的所有其他功能都类似于常规LCD库。

申请

  • 通过使用基于I2C的LCD,与LCD通信所需的数字IO引脚数将变为零。这将有助于将其他传感器和执行器连接到微控制器(在这种情况下为Arduino)。
  • 由于使用的通信为I2C,因此您可以在同一I2C总线上连接8个类似的LCD显示器。通过修改每个LCD的PCF8574 IC的地址引脚,这是可能的。

2个回应

    1. 您必须用一个:(“)替换此字符(”)。那应该解决问题。(至少是由我做的)

发表评论

您的电子邮件地址不会被公开。

电子豪华粉丝
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map