如何将PCF8574 I2C LCD与Arduino I2C接口通讯? - 【Arduino教程】

文章目录[隐藏]

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


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

连接16×2或20×4字符LCD的最简单方法是选择所需大小的LCD模块,然后以4位模式将其连接到Arduino UNO。但是此设置的主要缺点是,即使在4位模式下,LCD也需要Arduino的6个数字IO引脚才能正常通信。

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



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

下图显示了基于PCF8574 IC的模块,该模块专门配置用于LCD显示器。

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


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连接的电路图。

 


所需组件


  • Arduino UNO

  • 16×2液晶显示器

  • PCF8574 I2C液晶背包

  • 连接线

电路连接

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

除了实验板,我们还需要ICD2(在线调试编程器),这个装置具有调试编程二合一的功能,利用它的调试功能,我们可以快速方便的查找程序中的错误,而利用它的编程功能,可以将调试无误的程序最终烧写到单片机内部。

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

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


代码:I2C从站地址代码


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

不用从数据表中计算从设备地址,而是让我们使用一个简单的Arduino代码确定地址并将其显示在串行终端上。首先,按照上面的电路图进行连接。

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

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


LCD显示代码


在进入代码之前,您需要一个名为“ LiquidCrystal_I2C”的特殊库。它基于我们通常使用但针对I2C通信进行了修改的“ LiquidCrystal”库。您可以从下载库这个链接(https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library)。这里可以直接下载I2C库,长按二维码可直接进入:https://www.lanzous.com/iawj0lc

下载zip文件,解压缩内容并将目录重命名为“ LiquidCrystal-I2C”,然后将该文件夹放置在Arduino安装的库中(通常是C:\ Program Files(x86)\ Arduino \ libraries)。

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


工作中


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


应用领域


  • 通过使用基于I2C的LCD,与LCD通信所需的数字IO引脚数将变为零。这将有助于将其他传感器和执行器连接到微控制器(在本例中为Arduino)。

  • 由于使用的通信是I2C,因此您可以在同一I2C总线上最多连接8个类似的LCD显示器。这可以通过修改每个LCD的PCF8574 IC的地址引脚来实现。   


除了上述单片机,比较常用还有AVR单片机、MSP430、飞思卡尔单片机,这些单片机都是8或16位单片机。你到公司就职,公司的项目用到什么单片机,你就得学什么单片机。如果你有不错的单片机基础,接触一款新的单片机,稍微看看单片机手册,看下对应的例程,两三天能上手。

生成海报
点赞 0

创世纪

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

相关推荐

Esp8266多功能点阵时钟(开源)

原文地址 多功能点阵时钟 更新 点阵时钟立创PCB工程已经完成,开源地址为: ESP8266多功能点阵时钟 - PCB制作分享 简介 很早就了解ESP8266了,当时也用这个搞过一些小demo,一直也没有想

arduino与激光雷达?

先上图片: 一般来说,这样子的激光雷达都是与电脑或者树莓派等等配合使用的,但是暂时没有时间去捣鼓slam算法相关的东西,那有没有方法把它应用在其他简单的项目中呢? 。。。。我

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

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