都是摸着石头过河,请高手指点。@allankliu
显示选用常见的LCD5110,主要是网上可以找到micropython的驱动(5110内部使用8544驱动,
https://github.com/mbirth/wipy-upcd8544),自己简单改改就可以用啦。分辨率84*48。手上这块板子上没有丝印,而且有两排,所以注意铁皮宽一点的在上面。这样管脚顺序和图是一样的了。
一般接7个脚就行,8接不接都可以。其中数据脚有5个,SCLK和DIN就是SPI标准的SCK和MOSI。为了方便,CE(芯片使能,低电平有效)、RST和DC(数据1指令0选择)分别接了E11、E9和E7。初始化可以参照下列代码
- from pyb import SPI, Pin
- import upcd8544
- from font import Font
- SPI = pyb.SPI(1) #A5-SCK,A7-MO
- CE = pyb.Pin('E11')
- RST = pyb.Pin('E9')
- DC = pyb.Pin('E7')
- LIGHT = pyb.Pin('A3')
- lcd = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)
复制代码
然后可以使用以下方法来控制:
clear():位置自动回到00,就是左上角
position(x,y):x是横向位置,从左到右,0:83,y是上下的位置,从上到下,0:5
data(arr):后面接数组。LCD5110是这样,一个字节控制8个点,是当前x位置上的一列,所以8*8的字符可以直接往上写(8个字节),但是有点丑。
light_on()和light_off():实际控制和原驱动正好相反。修改了一下
其他方法基本上用不到。
然后又画葫芦写了一个8*8字体的模块(字体是mbed上copy来的,有点丑啊,比LCD1602还不如,谁有好看点的?),就是查询某个字符对应的数据。放到附件里面了。
另外感觉LCD这块有点难写,怎么把应用的特殊显示要求和通用的lcd字符显示代码分开?@allankliu
最后就是定义个函数,去写屏幕了
- def write_String(string):
- for s in string:
- lcd.data(Font.get_Font(s))
-
- lcd.position(20,1)
- write_String('HELLO')
- lcd.position(14,2)
- write_String('EEWORLD')
复制代码看图,大写还行,小写有点丑
font.py在附件里面,
font.py
(6.67 KB, 下载次数: 36)