readme.md 9.6 KB

U8G2显示屏与按键演示系统

一、功能模块介绍

1.1 核心主程序模块

  1. main.lua - 主程序入口,负责系统初始化和任务调度
  2. ui_main.lua - 用户界面主控模块,管理页面切换和事件分发

1.2 显示页面模块

  1. home_page.lua - 主页模块,提供应用入口和导航功能
  2. component_page.lua - 组件演示模块,展示进度条和基本图形
  3. default_font_page.lua - 内置字体演示模块,展示U8G2内置字体效果
  4. gtfont_page.lua - GTFont矢量字体演示模块,展示外置字库效果

1.3 驱动模块

  1. hw_default_font_drv.lua - LCD初始化和内置字体驱动模块,hw_default_font_drv和hw_gtfont_drv二选一使用
  2. hw_gtfont_drv.lua - LCD初始化和GTFont外置字体驱动模块,hw_default_font_drv和hw_gtfont_drv二选一使用
  3. key_drv.lua - 按键驱动模块,管理BOOT键和PWR键

二、按键消息介绍

  1. "KEY_EVENT" - 按键事件消息,包含按键类型和状态
    • boot 键事件:boot_down(按下)、boot_up(释放)
    • pwr 键事件:pwr_down(按下)、pwr_up(释放)
    • 按键功能定义:
      • 主页:boot 键(释放)选择/切换选项,pwr 键(释放)确认
      • 组件演示页面:boot 键(释放)切换选项,pwr 键(释放)确认(返回或进度 +10%)
      • 内置字体页面:boot 键(释放)切换选项(只有一个返回按钮,无实际效果),pwr 键(释放)返回
      • GTFont 页面:boot 键(释放)切换选项(返回或切换字体大小),pwr 键(释放)确认

注意:当前代码中只处理按键的释放事件(boot_up 和 pwr_up),按下事件被忽略。

三、显示效果

主页
组件演示页
内置中文字体页面
GTFont页面




四、功能详细说明

4.1 组件演示页面

  1. 进度条显示 - 展示进度条,可通过"+10%"按钮增加进度(最大 100%)
  2. 基本图形绘制 - 展示圆形、实心圆、矩形、实心矩形、三角形
  3. 按钮交互 - 支持返回首页和调整进度两种功能

4.2 内置字体演示页面

  1. 内置字体显示 - 展示 U8G2 内置中文字体效果
  2. 时间显示 - 显示当前系统时间,支持实时更新
  3. 简洁界面 - 单按钮设计,便于快速返回

4.3 GTFont 矢量字体演示页面

  1. 矢量字体显示 - 使用 GTFont 矢量字库显示文字(需外置字库支持)
  2. 字体大小切换 - 支持 12、14、16、18、20 号字体大小循环切换
  3. 兼容性设计 - 无外置字库时自动使用内置字体显示

4.4 按键交互功能

  1. 页面导航 - 支持多页面之间的流畅切换
  2. 防抖处理 - 按键驱动内置 50ms 防抖,防止误触发
  3. 事件分发 - 统一的事件分发机制,便于扩展

五、演示硬件环境

5.1 硬件清单

  • Air780EHM/Air780EHV/Air780EGH 核心板 × 1
  • st7657 显示屏 × 1 本demo演示使用的屏幕购买链接
  • GTFont 矢量字库,使用的是 AirFONTS_1000 配件板 × 1
  • 母对母杜邦线 × 14,杜邦线太长的话,会出现 spi 通信不稳定的现象;
  • TYPE-C 数据线 × 1
  • Air780EHM/Air780EHV/Air780EGH 核心板和 ST7567单色点阵屏以及AirFONTS_1000 配件板的硬件接线方式为

    • Air780EHM/Air780EHV/Air780EGH 核心板通过 TYPE-C USB 口供电(核心板正面开关拨到 ON 一端),此种供电方式下,VDD_EXT 引脚为 3.3V,可以直接给 ST7567单色点阵屏和AirFONTS_1000 配件板供电;
    • 为了演示方便,所以 Air780EHM/Air780EHV/Air780EGH 核心板上电后直接通过 VBAT 引脚给 ST7567单色点阵屏,VDD-EXT引脚给AirFONTS_1000 配件板供电;
    • 客户在设计实际项目时,一般来说,需要通过一个 GPIO 来控制 LDO 给配件板供电,这样可以灵活地控制配件板的供电,可以使项目的整体功耗降到最低;

5.2 接线配置

5.2.1 LCD 显示屏接线

Air780EHM/Air780EHV/Air780EGH 核心板
st7567
57/U3TXD
SCL
28/U2RXD
CS
20/GPIO24
RST
29/U2TXD
SDA
58/U3RXD
DC
VBAT
BL
VBAT
VCC
GND
GND

5.2.2 GTFont 字库接线

Air780EHM/Air780EHV/Air780EGH 核心板
AirFONTS_1000配件板
83/SPI0_CS
CS
84/SPI0_MISO
MISO
85/SPI0_MOSI
MOSI
86/SPI0_CLK
CLK
24/VDD_EXT
VCC
GND
GND

5.2.3 接线图

六、演示软件环境

6.1 开发工具

6.2 内核固件

七、演示核心步骤

7.1 硬件准备

  1. 按照硬件接线表连接所有设备
  2. 确保电源连接正确,通过TYPE-C USB口供电
  3. 检查所有接线无误,避免短路

7.2 软件配置

main.lua中选择加载对应的驱动模块:

-- 加载显示和字体驱动模块,有以下两种:
-- 1. hw_default_font_drv - LCD显示驱动和内置字体驱动模块,hw_default_font_drv和hw_gtfont_drv二选一使用
-- 2. hw_gtfont_drv - LCD显示驱动和GTFont外置字体驱动模块,hw_default_font_drv和hw_gtfont_drv二选一使用
require("hw_default_font_drv")  -- 使用内置12号中文点阵字体
-- require("hw_gtfont_drv")     -- 使用GTFont外置矢量字库

-- 加载按键驱动
require("key_drv")

-- 加载UI主模块
require("ui_main")

7.3 软件烧录

  1. 使用Luatools烧录最新内核固件
  2. 下载并烧录本项目所有脚本文件
  3. 烧录成功后设备自动重启后开始运行

7.4 功能测试

7.4.1 主页面操作

  1. 设备启动后显示主页面,包含三个功能选项
  2. 使用 boot 键(释放)切换选择不同的菜单项
  3. 使用 pwr 键(释放)进入选中的演示页面

7.4.2 组件演示页面

  1. 查看进度条显示(初始 30%)
  2. 查看基本图形绘制效果
  3. 使用 boot 键切换按钮(返回、+10%)
  4. 使用 pwr 键执行当前选中按钮的功能
  5. 按 pwr 键(当返回按钮选中时)返回主页

7.4.3 内置字体演示页面

  1. 查看内置字体显示效果
  2. 查看当前时间显示(每 300ms 更新一次)
  3. 使用 boot 键切换按钮(只有一个返回按钮)
  4. 按 pwr 键返回主页

7.4.4 GTFont 演示页面

  1. 查看字体大小显示(如果使用 GTFont 驱动,则显示 GTFont 字体,否则显示内置字体)
  2. 使用 boot 键切换按钮(返回、切换字体大小)
  3. 使用 pwr 键执行当前选中按钮的功能
  4. 按 pwr 键(当返回按钮选中时)返回主页

7.5 预期效果

  • 系统启动:显示开机信息(内置字体进入/GTFont 进入),然后进入主页面
  • 主页面:正常显示三个菜单项,boot 键切换选项,pwr 键确认
  • 组件演示页面:进度条和图形显示正常,按键功能正常
  • 内置字体页面:字体显示正常,时间更新正常,pwr 键返回
  • GTFont 页面:字体显示正常,字体大小切换正常,pwr 键返回
  • 按键响应:所有按键操作响应及时准确,页面切换流畅

7.6 故障排除

  1. 显示屏不亮

    • 检查电源接线是否正确
    • 确认 SPI 通信速率是否合适
  2. 显示内容异常

    • 检查初始化参数和命令是否正确
    • 确认显示屏分辨率设置是否与自己的屏幕相同
  3. 按键无响应

    • 检查按键 GPIO 引脚配置
    • 确认按键中断处理函数是否正确注册
    • 检查防抖参数是否合适
  4. GTFont 功能异常

    • 检查 GTFont 字库接线是否正确
    • 确认 SPI 通信速率是否合适(20MHz)
    • 检查字库初始化是否成功
  5. 系统卡顿或重启

    • 确认内存使用情况
    • 适当调整屏幕刷新频率

7.7 扩展建议

本demo所演示的接口都可以在u8g2核心库中找到,更丰富的使用方式可以参考u8g2核心库进行进一步开发。