返回
九、控制1602LCD屏幕显示内容
esp32
2024-01-26 18:19:54
1. 运行效果
2. 1602简介
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)
市面上字符液晶大多数是基于HD44780液晶芯片的
需要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屏幕
5. 链接方式
5.1 整体链接方式
5.2 具体链接
6. MicroPython资料
在官网上有I2C的控制示例
地址:http://docs.micropython.org/en/latest/esp32/quickref.html
7. PCF8574地址
从购买到的两种的模块来看,默认的A2、A1、A0是不接的状态,处于高电平
这样就可以计算出来
- PCF8574的八位二进制数
01001110
,地址是0x4e
- PCF8574AT的八位二进制数
01111110
,地址是0x7e
8. 代码
下面代码调用了其它开发编写的模块,下载地址如下:
lcd_api.py
:https://doc.itprojects.cn/0006.zhishi.esp32/01.download/lcd_api.pyesp32_i2c_1602lcd.py
:https://doc.itprojects.cn/0006.zhishi.esp32/01.download/esp32_i2c_1602lcd.py
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
,其它不变。