Arduino--LCD1602(IIC)

(1)简介

前篇文章介绍了LCD1602的四位数据线控制方法:
https://blog.csdn.net/u011816009/article/details/106573622
但是该方法还是需要较多的IO口资源,在项目稍微复杂的情况下IO口便不够用了,而且连线麻烦,本文将介绍一种使用IIC总线的LCD1602控制方法,加上电源地线一共只需要4根线,实物如下:
在这里插入图片描述
其中,1602液晶背面焊接了一块IIC转接模块(PCF8574),如下图所示:
在这里插入图片描述
其中IIC的地址可以通过PCF8574转接板上的A0 A1 A2三个接口调节,具体对应情况如下:

A0A1A2ADDR
短路短路短路0X20
悬空短路短路0X21
短路悬空短路0X22
悬空悬空短路0X23
短路短路悬空0X24
悬空短路悬空0X25
短路悬空悬空0X26
悬空悬空悬空0X27

(2)接线

LCD1602(PCF8574)UNO
VCC5V
GNDGND
SDAA4
SCLA5

(3)程序

void loop(){
        lcd.setCursor(2,0);//设置显示位置
        lcd.print("LCD1602 IIC");//显示字符数据
        lcd.setCursor(0,1);//设置显示位置
        lcd.print("JUST USE TWO IO");//显示字符数据
}

(4)仿真结果

在这里插入图片描述

附完整代码及仿真文件下载文件

CSDN下载:
https://download.csdn.net/download/u011816009/85372211

百度网盘下载:
链接:https://pan.baidu.com/s/1p-w8mocD2siPMnixYMoXcA
提取码:pwkb

Proteus仿真文件:
https://blog.csdn.net/u011816009/article/details/124779569

相关头文件库函数:
https://blog.csdn.net/u011816009/article/details/111601854

  • 7
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
连接步骤如下: 1. 将 DS18B20 温度传感器的 VCC 引脚连接Arduino 板的 5V 引脚上,将 GND 引脚连接Arduino 板的 GND 引脚上,将 DATA 引脚连接Arduino 板的数字引脚上(比如 D2 引脚)。 2. 将 LCD1602 液晶显示屏的 I2C 模块的 VCC 引脚连接Arduino 板的 5V 引脚上,将 GND 引脚连接Arduino 板的 GND 引脚上,将 SDA 引脚连接Arduino 板的 A4 引脚上,将 SCL 引脚连接Arduino 板的 A5 引脚上。 3. 在 Arduino IDE 中安装并打开 OneWire 和 LiquidCrystal_I2C 库。 4. 编写代码,通过 OneWire 库读取 DS18B20 温度传感器的温度值,再通过 LiquidCrystal_I2C 库将温度值显示在 LCD1602 液晶显示屏上。 下面是一个简单的示例代码: ``` #include <OneWire.h> #include <LiquidCrystal_I2C.h> #define ONE_WIRE_BUS 2 // DS18B20 DATA 引脚连接到 D2 引脚上 OneWire oneWire(ONE_WIRE_BUS); LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2C 模块的地址为 0x3F,LCD1602 的行数和列数分别为 16 和 2 void setup() { lcd.init(); // 初始化 LCD1602 液晶显示屏 lcd.backlight(); // 打开背光 lcd.setCursor(0, 0); // 将光标移到第一行第一列 lcd.print("Temperature:"); // 在第一行第一列显示“Temperature:”文本 } void loop() { float temperature = getTemperature(); // 读取 DS18B20 温度传感器的温度值 lcd.setCursor(0, 1); // 将光标移到第二行第一列 lcd.print(temperature); // 在 LCD1602 液晶显示屏上显示温度值 lcd.print("C"); // 在温度值后面显示“C”符号 delay(1000); // 延迟 1 秒 } float getTemperature() { byte data[2]; float temperature = 0; oneWire.reset(); // 发送复位信号 oneWire.write(0xCC); // 跳过 ROM,直接发命令 oneWire.write(0x44); // 启动温度转换 delay(800); // 等待转换完成 oneWire.reset(); oneWire.write(0xCC); oneWire.write(0xBE); // 读取温度值 for (int i = 0; i < 2; i++) { data[i] = oneWire.read(); } temperature = ((data[1] << 8) | data[0]) * 0.0625; // 计算温度值 return temperature; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

541板哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值