回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

ESP32-C5 mpy i2c 驱动LCD1602A屏幕 简单

头像 米菲爸爸 2025.10.11 10 0

     相信只要初学过创客的人手里都会有一个硕大的点阵屏幕,这东西会出现在任何新手套装里。我记得我在初学Arduino的时候也尝试点亮过,但是因为引脚有16个之多,所以自从用杜邦线在面包板上插好的那一天起我就没有再拆掉过…… 因为杜邦线实在太容易不小心就掉一根了,所以一直没有拆掉的勇气。直到有一天我发现网上有一个i2c转接板可以解决我的痛点,只要把它焊在屏幕背后我就把一个16pin的屏幕变成了只有4pin的i2c屏幕,接线难度指数级下降。

 

blackcard.jpg

按这个方向焊在LCD1602A屏幕上

adapter.jpg

首先我们获得LCD1602A的驱动

https://github.com/v-leihe/PicoFun/blob/main/lib/LCD1602A.py

 

然后再获得LCD1602A的i2c驱动文件LCD1602AI2C.py

https://github.com/v-leihe/PicoFun/blob/main/lib/LCD1602AI2C.py

 

Demo文件

https://github.com/v-leihe/PicoFun/tree/main/examples/Part20-lcd1206a.py

 

按Esp32C5的pin脚修改程序

#3v3   → VCC

#GND → GND

#10/C → SCL

#9/D   → SDA

 

i2c = SoftI2C(sda=Pin(9),scl=Pin(10),freq=100000)

 

呜呼,生活变得好简单,好开心。

 

2fdc33b7311891b27cb5d4e816a42b12.jpg

代码
import time
from machine import SoftI2C, Pin
from LCD1602AI2C import LCD1602AI2C
 
DEFAULT_I2C_ADDR = 0x27  # lcd1602的地址是0x27
i2c = SoftI2C(sda=Pin(9),scl=Pin(10),freq=100000)
lcd = LCD1602AI2C(i2c, DEFAULT_I2C_ADDR, 2, 16)  # 行数2,行的大小16个字节
 
lcd.clear()  # 清屏
lcd.putstr("ESP32-C5\n")
lcd.putstr("MiffyDad")

关于LCD1602A的显示规则:

已知屏幕有两行16列,也就是可以显示2x16个字符。

当字符不足16时就按顺序显示。

如 lcd.putstr("MiffyDad")

 

#显示

MiffyDad

#显示完毕

 

当字符超过16但不到32时,显示完16个字符自动换行

lcd.putstr("ABCDEFGHIJKLMNOPQRSTUVWXYZ")

 

#显示

ABCDEFGHIJKLMNOP

QRSTUVWXYZ

#显示完毕

 

当字符超过32时,显示效果就比较意外了

lcd.putstr("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")

 

#显示

6789EFGHIJKLMNOP

QRSTUVWXYZ012345

#显示完毕

 

这里6789是从头开始显示,这个应该超出了大部分人的预期。

那么我们把要显示的内容稍微修改一下,实现一个跑马灯效果

代码
import time
from machine import SoftI2C, Pin
from LCD1602AI2C import LCD1602AI2C
 
DEFAULT_I2C_ADDR = 0x27  # lcd1602的地址是0x27
i2c = SoftI2C(sda=Pin(9),scl=Pin(10),freq=100000)
lcd = LCD1602AI2C(i2c, DEFAULT_I2C_ADDR, 2, 16)  # 行数2,行的大小16个字节
 
lcd.clear()  # 清屏
input = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

for i in range(0, len(input)-32 + 1) :
    output = input[i:i+32]
    lcd.putstr(output)
    time.sleep(1)

评论

user-avatar