Air105 核心板提供了对LCD显示屏的支持,当然所支持的型是有一定范围,其支持的显示屏有:
1)基于st7735的1.8寸TFT显示屏
2)基于st7789的1.54寸TFT显示屏
3)基于st7735v的0.96寸TFT显示屏
4)基于gc9306x的2.4寸TFT显示屏
自己手头也有几块显示屏,但与它支持的型号都存在着一定的差异,经测试与修改从中实现了2款显示屏的驱动。其使用的引脚如图1所示,其具体的对应关系如下:
VCC--3.3V
GND--GND
SCL--PC15/HSPI_SCK
SDA--PC13/HSPI_MOSI
RES--PC12/HSPI_MISO
DC--PE08/U3_RX
CS--PC14/HSPI_CS
BL--PE09/U3_TX

图1 使用引脚
- 2.4寸的TFT屏
手中这块2.4寸的TFT屏,其核心芯片为ili9341,故其初始化的过程使用的是如下语句:
lcd.init("ili9341",{port
= "device",pin_dc = pin.PE08 , pin_pwr = pin.PE09, pin_rst =
pin.PC12, direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd)

图2 TFT显示屏
在对程序执行“运行和调试”后,其输出的信息如图3和图4所示。

图3 终端输出信息

图4终端输出信息
通过图3和图4可知,其程序的下载是成功,且支持对芯片ili9341的处理。
为了验证对显示屏驱动的有效性,可使用色彩清屏语句测试,其语句为lcd.clear(0xF800),其效果如图2所示,表明对显示屏的初始化是成功的,且清屏函数有效。
在图片显示语句的情况下,则可获得图5所示的效果,说明显示屏处于竖屏的显示模式。


图5 图片显示
此时,可令direction = 90来切换到横屏的显示模式,见图6所示。由图可以发现,屏上一块灰色的区域,说明其几何参数还不匹配。

图6 横屏显示模式
将参数调整为w = 320,h = 240之后,就可得到正确的效果,见图7所示。

图7 匹配后的效果
此外,还可以测试图形的绘制效果,见图8所示。
相应的绘制语句为:
lcd.drawLine(20,120,150,120,0x001F)
lcd.drawRectangle(20,140,120,170,0xF800)
lcd.drawCircle(50,150,20,0x0CE0)

图8 图形绘制
- 0.96寸LCD屏
手中的LCD屏,其核心芯片为st7735s,其初始化的过程使用的是如下语句:
lcd.init("st7735s",{port
= "device",pin_dc = pin.PE08, pin_pwr = pin.PE09, pin_rst = pin.PC12,
direction = 2,w = 160,h = 80,xoffset = 0,yoffset = 0},spi_lcd)

图9 LCD显示屏
在使用图片显示语句lcd.showImage(0,0,"/luadb/J.jpg")的情况下,其显示效果如图10所示。

图10 图片显示
你为什么会出现不规则的显示边框呢?
经测试分析,仍是参数不匹配产生的问题。将参数调整为xoffset
= 1,yoffset = 26之后,就可得到正确的效果,见图11所示。

图11 正确显示效果


图12 显示文字
为此就实现了这2款屏的显示驱动,使得开发板所支持的显示屏类型又有了新的丰富。