Arduino UNO通过PCF8574串行IIC接口驱动LCD1602/LCD2004液晶屏

本文介绍了LCD1602和LCD2004两种常用的字符型液晶显示模块,并详细说明了如何利用PCF8574 IO扩展模块配合Arduino UNO进行实际操作。包括接线方法、驱动程序编写及实验效果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LCD1602/2004液晶屏简介

LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。可以显示2行每行16个字符,总共32个字符。字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式LCD,常用16×1,16×2,20×2和40×2等的模块。不同厂家生产的LCD1602驱动控制芯片可能有所不同,但使用方法都是一样的,能够显示英文字母、阿拉伯数字、日文片假名和一般性符号。部分颜色的LCD在背光灯引脚A、K不接电源也可以在一定光照下可以看见显示出的字符。如黄绿屏的LCD1602/2004。
LCD2004可以显示4行每行20个字符,总共80个字符,比LCD1602(2*16=32个字符)显示的更多。其引脚功能顺序与LCD1602兼容。

在这里插入图片描述

在这里插入图片描述

PCF8574 IO扩展模块简介

在这里插入图片描述

它通过两条双向总线(I2C)可使大多数 MCU 实现远程 I/O 口扩展。该器件包含一个 8 位准双向口和一个 I2C 总线接口。PCF8574 电流消耗很低,且口输出锁存具有大电流驱动能力,可直接驱动 LED。它还带有一条中断接线(INT)可与 MCU 的中断逻辑相连。通过 INT 发送中断信号,远端 I/O 口不必经过 I2C 总线通信就可通知 MCU 是否有数据从端口输入。
带背光电源控制,可以通过跳线帽设置是否连接背光电源,插上跳线帽为连接背光电源,拔掉跳线帽为断开背光电源。
对比度可调节,旋转蓝色电位器,顺时针增强。
IIC总线上可以挂载八个PCF8574,即可连接八个LCD2004屏幕。
通过短路模块上的A0/A1/A2焊盘修改设备地址,默认不短接,此时A0/A1/A2都为1,短路时为0。PCF8574T的IIC器件地址为0100A2A1A0,PCF8574AT的器件地址为0111A2A1A0,本实验采用的是PCF8574AT,默认器件地址为0x3F。

在这里插入图片描述

Arduino UNO与模块接线

Arduino UNOFCF8574
A4SDA
A5SCL
5VVCC
GNDGND

LCD1602接线
在这里插入图片描述
LCD2004接线
在这里插入图片描述

测试代码

在Arduino IDE库管理器搜索PCF8574,并安装如图示所例程库
在这里插入图片描述

打开Hello_World.ino例程,并按如下程序修改例程
LCD2004驱动程序

LCD_I2C lcd(0x3F, 20, 4); // Default address of most PCF8574 modules, change according

void setup()
{
    lcd.begin(); // If you are using more I2C devices using the Wire library use lcd.begin(false)
                 // this stop the library(LCD_I2C) from calling Wire.begin()
    lcd.backlight();

    lcd.clear();
}

void loop()
{
    lcd.setCursor(3, 0); 
    lcd.print("Hello! LCD2004"); // You can make spaces using well... spaces
    lcd.setCursor(2, 2); // Or setting the cursor in the desired position.
    lcd.print("YouXin Electronic");
}

LCD1602驱动程序

LCD_I2C lcd(0x3F, 16, 2); // Default address of most PCF8574 modules, change according

void setup()
{
    lcd.begin(); // If you are using more I2C devices using the Wire library use lcd.begin(false)
                 // this stop the library(LCD_I2C) from calling Wire.begin()
    lcd.backlight();

    lcd.clear();
}

void loop()
{
    lcd.setCursor(1, 0); 
    lcd.print("Hello! LCD1602"); // You can make spaces using well... spaces
    lcd.setCursor(0, 1); // Or setting the cursor in the desired position.
    lcd.print("YouXinElectronic");
}

实验结果

在LCD2004上第一行和第三行显示出程序所输入的字符
在这里插入图片描述
拔掉跳线帽,关闭背光灯时,也可看见字符显示,这样可以省电
在这里插入图片描述
在LCD1602上第一行和第二行显示出程序所输入的字符
在这里插入图片描述
拔掉跳线帽,关闭背光灯时,也可看见字符显示,这样可以省电
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值