05-I2C控制LCD1602
I2C控制LCD1602一、简介二、具体实现逻辑一、简介什么是LCD1602LCD是显示方式LCD液晶显示器。每行可以显示16个字符一共可以显示2行。一般来说LCD1602有16个IO口控制它就需要16个引脚。但是这次购买的套件中通过I2C芯片进行了适配大大减少了引脚的占用从16个变少到了2个。I2C介绍(Inter-Intergrated Circuit)中文名称 集成电路总线它是一种串行通信总线适用于主-从架构。功能包括减少引脚占用只需要两个IO引脚所有组件之间都存在简单的主-从关系。连接到总线的每一个设备都可以通过唯一的地址进行软件寻址I2C是真正的多主设备总线可以提供仲裁和冲突检测传输速度标准模式-100Kbps快速模式-400Kbps高速模式-3.4Mbps超快速模式-5Mbps最大连接设备数无限制最大从机设备数127二、具体实现逻辑当前控制LCD1602的逻辑是这样的ESP32–I2C协议–PCF8574–LCD屏幕PCF8574接收I2C数据控制8个IO引脚的输出下图是连接方式MicroPython官网也有对I2C通信的描述frommachineimportPin,SoftI2C# 按照具体的连接方式定义好对应的scl和sda引脚通信频率 标准频率100Kbpsi2cSoftI2C(sclPin(12),sdaPin(13),freq100000)print(i2c.scan())# 扫描总线上出现的设备# 打印 [39]这里0x2716进制的39其实是I2C的默认地址它的值是由PCF8574芯片配置引脚的高低电平决定的给图中的A0-A2配置不同的阻值就能改变他的地址这里直接使用了普中的I2C驱动LCD的代码使用它们大大的简化了操作其中内容的复杂度。https://gitee.com/hong-shengquan/esp32/blob/master/Code/LCD1602/i2c_lcd.pyhttps://gitee.com/hong-shengquan/esp32/blob/master/Code/LCD1602/lcd_api.py直接将两个文件导入到ESP32中通过代码引用它们即可frommachineimportPin,SoftI2Cimporttimefromi2c_lcdimportI2cLcd# 按照具体的连接方式定义好对应的scl和sda引脚通信频率 标准频率100Kbpsi2cSoftI2C(sclPin(12),sdaPin(13),freq100000)print(i2c.scan())# 扫描总线上出现的设备DEFAULT_ADDR0x27# lcd对应的标准i2c对象 地址 几行lcd 每行对少个字符lcdI2cLcd(i2c,DEFAULT_ADDR,2,16)foriinrange(0,100):#lcd.clear()lcd.putstr(loading---{}%\n.format(i))lcd.putstr(Please wait.\n)#time.sleep_ms(1)可以看到这里的实现是非常简单的因为两个驱动代码已经封装好了基础功能此外I2cLcd还提供了其他的一些功能如移动光标、开关背光等。可以查看源码自行试验相关资料、代码

相关新闻