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

按这个方向焊在LCD1602A屏幕上

首先我们获得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)
呜呼,生活变得好简单,好开心。

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)
评论