返回

九、控制1602LCD屏幕显示内容

esp32

1. 运行效果

d642ab897d24d00962c7c0a72393cb7.jpg

2. 1602简介

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)

市面上字符液晶大多数是基于HD44780液晶芯片的

1653447173251

1653447047038

需要8根数据线来传输要显示的数据,当然还要其它的线配合一起完成

3. I2C(i2c)

I2C(Inter-Integrated Circuit),中文叫集成电路总线,它是一种串行通信总线,使用多主从架构,是由飞利浦公司在1980年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。

最重要的功能包括:

  • 只需要两条总线
  • 所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通过唯一地址进行软件寻址
  • I2C是真正的多主设备总线,可提供仲裁和冲突检测
  • 传输速度
    • 标准模式:Standard Mode = 100 Kbps
    • 快速模式:Fast Mode = 400 Kbps
    • 高速模式: High speed mode = 3.4 Mbps
    • 超快速模式: Ultra fast mode = 5 Mbps
  • 最大主设备数:无限制
  • 最大从机数:理论上是127

大白话:一种只用2根线就可以传递很多数据给其它多台设备的方法,这种方法叫I2C

大大减少了MCU上IO的使用

4. 控制1602LCD的整体逻辑

ESP32------I2C协议----->PCF8574------->1602LCD屏幕

1653446745423

5. 链接方式

5.1 整体链接方式

1653446273193

5.2 具体链接

1653445332189

1653445396239

1653445421205

1653445452191

1653445568189

6. MicroPython资料

在官网上有I2C的控制示例

地址:http://docs.micropython.org/en/latest/esp32/quickref.html

1653447822639

7. PCF8574地址

1653448051790

从购买到的两种的模块来看,默认的A2、A1、A0是不接的状态,处于高电平

这样就可以计算出来

  • PCF8574的八位二进制数01001110,地址是0x4e
  • PCF8574AT的八位二进制数01111110,地址是0x7e

1653448125804

8. 代码

下面代码调用了其它开发编写的模块,下载地址如下:

import time
from machine import SoftI2C, Pin
from esp32_i2c_1602lcd import I2cLcd


DEFAULT_I2C_ADDR = 0x27
i2c = SoftI2C(sda=Pin(15),scl=Pin(2),freq=100000)
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)

for i in range(1, 10):
    lcd.clear()
    lcd.putstr("loading...{}\n".format(i))
    lcd.putstr("wangmingdong")
    time.sleep(1)

# SDA GPIO15
# SCL GPIO2
# Vcc 5V (3V显示不清楚)
# GND GND
复制Error复制成功...

注意:

  • 如果运行上面程序报错,请将上面程序第6行的0x27改为0x3F,其它不变。