LCD 参考电路和选型推荐
Air8000 LCD 硬件电路说明
本文仅以Air8000为例进行说明,Air8000在硬件上完全一致
Air8000 支持 SPI 接口 LCD,如下表所示;
一、硬件支持
1. LCD 接口类型
Air8000 通过专用 SPI 接口连接 LCD 屏幕,支持多种驱动 IC;
目前已经调试支持的有:ST7735/ST7735S/ST7789/ST7796/ILI9341/ILI9486/GC9306/NV3037;
Air8000 开发板配件 LCD 当前使用的是 ST7796 ,大家可以灵活选择相应的 LCD 模组和供应商。
Air8000 的 LCD 具体接口引脚如下:
-
SPI 信号:
- CLK(时钟线):GPIO34(VDD_EXT 电压域)。
- SDA(数据):GPIO37(VDD_EXT 电压域)。
- 片选(CS):可通过任意 GPIO(如 GPIO35)控制。
- 数据/命令选择(RS):可通过任意 GPIO(如 GPIO38)控制。
-
复位控制(RST):
-
需通过 GPIO(如 GPIO36)控制,注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
-
背光控制(BL):
-
需通过 GPIO(如 GPIO30)控制,注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
2. 电源与信号设计
-
电压匹配:
- LCD 模块通常为 3.3V 电平,与 Air8000 直接兼容;
-
背光供电:
-
部分供应商提供的 LCD 模组的背光需独立供电,避免与 LCD 驱动 IC 共用电源导致电流冲击。
- Air8000 配套使用的 LCD 模组,背光不需要独立供电,可与 LCD 用同一电源。
- 参考设计:
|LCD模块引脚 | Air8000 GPIO | Air8000 管脚号 | 注意事项|
|------------|-------------|---------------|--------------|
| LCD_CLK | → GPIO34 | 25 | |
| LCD_CS | → GPIO35 | 26 | |
| LCD_RST | → GPIO36,| 27 | 注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。 |
| LCD_SDA | → GPIO37 | 28 | |
| LCD_RS | → GPIO38 | 29 | |
二、软件开发
1. LuatOS API 与驱动
- 有关 LCD 的代码太长,仅截取一段有关 API 和驱动的代码作为示例;
- 注意!Air8000 有专门的硬件 LCD 驱动接口且已封装好 API,无需再按照 SPI 接口 API 从头开始写驱动;
- 当然,Air8000 的硬件 LCD 接口本质上也是 SPI 接口的复用或者说专用,官方暂未公开此接口的具体资料;
- LCD 完整示例代码:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8000/demo/lcd
ocal airLCD = {}
function airLCD.lcd_init(sn)
if sn == "AirLCD_1000" then
width = 320
height = 480
lcd_ic = "st7796"
elseif sn == "AirLCD_1001" then
width = 320
height = 480
lcd_ic = "st7796"
elseif sn == "AirLCD_1002" then
width = 480
height = 480
lcd_ic = "R395435T01"
else
log.info("lcd", "没有找到合适的LCD")
end
lcd_param = {
port = lcd.HWID_0, -- 使用的spi id 号
pin_dc = 0xff, -- 命令选择硬件,不设置
pin_pwr = 9, -- 背光控制管脚,默认打开背光,不设置
pin_rst = 2, -- 屏幕reset 管脚
direction = 0, -- 屏幕方向
-- direction0 = 0x00,
w = width, -- 屏幕宽度
h = height, -- 屏幕高度
xoffset = 0, -- X轴偏移像素
yoffset = 0, -- Y轴偏移像素
sleepcmd = 0x10, -- LCD睡眠命令
wakecmd = 0x11, -- LCD唤醒命令
}
lcd.init(lcd_ic, lcd_param) -- 初始化LCD 参数
end
-- Air8000开发板配套使用的LCD模组驱动IC为ST7796
- LCD 驱动库:
- LuatOS 提供 LCD 驱动库(如
lcd
模块),请参考官方文档或示例代码。 - 若无现成库,需根据 LCD 驱动 IC 的手册编写初始化命令和操作函数,看 demo/lcd_custom 。
- LuatOS 提供 LCD 驱动库(如
三、注意事项
1. 电源与低功耗
- 休眠模式影响:
- RST 型号:注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
- 背光控制:需在休眠前关闭,避免持续耗电。
2. 驱动 IC 适配
-
初始化命令:
- 根据 LCD 驱动 IC 的数据手册编写精确的初始化序列(如 ST7796、ILI9341 命令不同)。
-
分辨率与格式:
-
确保设置的分辨率(如 240x320)与 LCD 物理尺寸匹配,避免显示错位。
3. 示例代码参考
- 摄像头与 LCD 联动:
-- 通过摄像头捕获图像并显示到LCD(以下代码仅为简单逻辑示例)
require("camera")
require("lcd")
camera.init() -- 初始化摄像头
lcd.init() -- 初始化LCD
while true do
local img = camera.capture()
lcd.showImage() -- 显示图像
sys.wait(1000)
end
四、典型应用场景
1. 物联网显示终端:如温湿度监测屏、设备状态指示。
2. 摄像头预览:结合 Air8000 的摄像头模块,实时显示图像或二维码解析结果。
五、参考资料
1. LCD 驱动 IC 手册:如 ST7796、ILI9341 数据手册。
2. LuatOS 官方文档:https://docs.openluat.com/osapi/
3. Air8000 开发板手册:获取 GPIO 复用表和硬件设计建议。