本帖最后由 jinglixixi 于 2021-5-14 12:10 编辑
LG7088BH是一个8*8的点阵模块,其引脚排列关系如图1所示。
图1 引脚排列关系
使用PCtoLCD2002可以提取显示所需要的字模,其形式如图2所示。
图2 字模提取
其中 “4”和“6”的字模分别为:
0x00, 0x00,0x20,0x60, 0xA0,0x60, 0x20,0x00
和
0x00, 0x00,0x60,0x80, 0xF0,0x90, 0x70,0x00
但从显示效果看,并不很理想,经调整改为:
0x00, 0x00,0x20,0x60, 0xA0,0xF0, 0x20,0x00
和
0x00, 0x00,0x60,0x80, 0xF0,0x90, 0x60,0x00
此外,从字模可以看出,其只使用了一半的空间,为此我们将2个字符拼接到一起来显示,见图3所示。
图3 点阵块显示效果
要实现图3所示效果,其程序结构如下:
#初始部分
import machine
import utime
h1 = machine.Pin(21, machine.Pin.OUT)
h2 = machine.Pin(20, machine.Pin.OUT)
h3 = machine.Pin(22, machine.Pin.OUT)
h4 = machine.Pin(18, machine.Pin.OUT)
h5 = machine.Pin(17, machine.Pin.OUT)
h6 = machine.Pin(16, machine.Pin.OUT)
h7 = machine.Pin(15, machine.Pin.OUT)
h8 = machine.Pin(14, machine.Pin.OUT)
l1 = machine.Pin(13, machine.Pin.OUT)
l2 = machine.Pin(12, machine.Pin.OUT)
l3 = machine.Pin(11, machine.Pin.OUT)
l4 = machine.Pin(10, machine.Pin.OUT)
l5 = machine.Pin(9, machine.Pin.OUT)
l6 = machine.Pin(8, machine.Pin.OUT)
l7 = machine.Pin(7, machine.Pin.OUT)
l8 = machine.Pin(5, machine.Pin.OUT)
l1.value(0)
l2.value(0)
l3.value(0)
l4.value(0)
l5.value(0)
l6.value(0)
l7.value(0)
l8.value(0)
h1.value(1)
h2.value(1)
h3.value(1)
h4.value(1)
h5.value(1)
h6.value(1)
h7.value(1)
h8.value(1)
i=0
#执行部分
while True:
for i in range(9) :
if i==1 :
l1.value(1)
l2.value(0)
l3.value(0)
l4.value(0)
l5.value(0)
l6.value(0)
l7.value(0)
l8.value(0)
h1.value(1)
h2.value(1)
h3.value(1)
h4.value(1)
h5.value(1)
h6.value(1)
h7.value(1)
h8.value(1)
。。。
if i==8 :
l1.value(0)
l2.value(0)
l3.value(0)
l4.value(0)
l5.value(0)
l6.value(0)
l7.value(0)
l8.value(0)
h1.value(1)
h2.value(1)
h3.value(1)
h4.value(1)
h5.value(1)
h6.value(1)
h7.value(1)
h8.value(1)
utime.sleep_ms(2)
如果嫌程序比较臃肿的话,可以设计相应的函数来进行优化处理。
图4 程序运行界面
为不辜负soso姐的期待,特把程序优化前后的情况附图加以对比说明:
优化前:
...
优化后:
...
由程序的行数看,明显可以看出两者的差异。