跳转至

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 。

三、注意事项

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 复用表和硬件设计建议。