|
|
@@ -1,105 +1,284 @@
|
|
|
+# LCD、触摸与字体演示系统
|
|
|
+
|
|
|
+## 一、功能模块介绍
|
|
|
+
|
|
|
+### 1.1 核心主程序模块
|
|
|
+1. **main.lua** - 主程序入口,负责系统初始化和任务调度
|
|
|
+2. **ui_main.lua** - 用户界面主控模块,管理页面切换和事件分发
|
|
|
+
|
|
|
+### 1.2 显示页面模块
|
|
|
+3. **home_page.lua** - 主页模块,提供应用入口和导航功能
|
|
|
+4. **lcd_page.lua** - LCD图形绘制演示模块
|
|
|
+5. **gtfont_page.lua** - GTFont矢量字体演示模块
|
|
|
+6. **customer_font_page.lua** - 自定义字体演示模块(目前仅预留相关页面,未有实际功能演示)
|
|
|
+
|
|
|
+### 1.3 驱动模块
|
|
|
+7. **lcd_drv.lua** - LCD显示驱动模块,基于lcd核心库,lcd_drv和exlcd_drv二选一使用
|
|
|
+8. **exlcd_drv.lua** - LCD显示驱动模块,基于exlcd扩展库,lcd_drv和exlcd_drv二选一使用
|
|
|
+9. **tp_drv.lua** - 触摸驱动模块,基于tp核心库,tp_drv和extp_drv二选一使用
|
|
|
+10. **extp_drv.lua** - 触摸驱动模块,基于extp扩展库,tp_drv和extp_drv二选一使用
|
|
|
+11. **gtfont_drv.lua** - GTFont矢量字库驱动模块
|
|
|
+12. **customer_font_drv.lua** - 自定义外部字体驱动功能模块(开发中)
|
|
|
+13. **hzfont_drv.lua** - 合宙软件矢量字库(开发中)
|
|
|
+ - gtfongt_drv、customer_font_drv、hzfont_drv
|
|
|
+ - 可以都不启用
|
|
|
+ - 可以仅启用一种
|
|
|
+ - 可以启用任意两种
|
|
|
+ - 可以全部启用
|
|
|
+
|
|
|
+## 二、触摸消息介绍
|
|
|
+
|
|
|
+1. **"BASE_TOUCH_EVENT"** - 基础触摸事件消息,包含触摸坐标和事件类型
|
|
|
+ - tp触摸库事件类型:`tp.EVENT_DOWN`(按下)、`tp.EVENT_MOVE`(移动)、`tp.EVENT_UP`(抬起)
|
|
|
+ - extp触摸库事件类型:`SINGLE_TAP`(单击)、`LONG_PRESS`(长按)可根据UI需求打开滑动事件
|
|
|
+ - 坐标范围:X: 0-799,Y: 0-479
|
|
|
+
|
|
|
+## 三、显示效果
|
|
|
+
|
|
|
+<table>
|
|
|
+<tr>
|
|
|
+<td>主页<br/></td><td>lcd核心库页面<br/></td><td>gtfont页面<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td rowspan="2"><img src="https://docs.openluat.com/cdn/image/Air8101_AirLCD_1020_AirFONTS_1000演示主页.png" width="80" /><br/></td><td rowspan="2"><img src="https://docs.openluat.com/cdn/image/Air8101_AirLCD_1020_AirFONTS_1000演示lcd页.png" width="80" /><br/></td></tr><td rowspan="2"><img src="https://docs.openluat.com/cdn/image/Air8101_AirLCD_1020_AirFONTS_1000演示GTFont页.png" width="80" /><br/></td></tr>
|
|
|
+</table>
|
|
|
+
|
|
|
+
|
|
|
+## 四、演示功能概述
|
|
|
+
|
|
|
+### 4.1 LCD图形绘制演示
|
|
|
+1. **基本图形绘制** - 展示点、线、矩形、圆形等基本图形绘制功能
|
|
|
+2. **图片显示** - 支持外部图片文件显示
|
|
|
+3. **二维码生成** - 动态生成并显示二维码
|
|
|
+4. **颜色示例** - 展示多种颜色显示效果
|
|
|
+
|
|
|
+### 4.2 GTFont矢量字体演示
|
|
|
+1. **矢量字体显示** - 使用AirFONTS_1000矢量字库小板显示平滑字体
|
|
|
+2. **字体大小切换** - 支持10-192号字体大小动态变化
|
|
|
+3. **灰度模式** - 支持灰度显示模式,字体边缘更平滑
|
|
|
+4. **多颜色显示** - 支持多种颜色字体显示
|
|
|
+
|
|
|
+### 4.3 触摸交互功能
|
|
|
+1. **页面导航** - 支持多页面之间的切换
|
|
|
+2. **按钮响应** - 触摸按钮的点击响应功能
|
|
|
+3. **模式切换** - 支持gtfont切换灰度/常规显示
|
|
|
+
|
|
|
+## 五、演示硬件环境
|
|
|
+
|
|
|
+### 5.1 硬件清单
|
|
|
+
|
|
|
+- Air8101 核心板 × 1
|
|
|
+- AirLCD_1020 触摸配件板 × 1
|
|
|
+- GTFont 矢量字库,使用的是 AirFONTS_1000 配件板 × 1
|
|
|
+- 双排40PIN的双头线 x 1
|
|
|
+- 母对母杜邦线 × 6,杜邦线太长的话,会出现 spi 通信不稳定的现象;
|
|
|
+- TYPE-C 数据线 × 1
|
|
|
+- Air8101 核心板和 AirLCD_1020配件板以及AirFONTS_1000 配件板的硬件接线方式为
|
|
|
+
|
|
|
+ - Air8101 核心板通过 TYPE-C USB 口供电(核心板背面的功耗测试开关拨到 OFF 一端),此种供电方式下,vbat 引脚为 3.3V,可以直接给 AirLCD_1020配件板和AirFONTS_1000 配件板供电;
|
|
|
+ - 为了演示方便,所以 Air8101 核心板上电后直接通过 vbat 引脚给 AirLCD_1020配件板和AirFONTS_1000 配件板提供了 3.3V 的供电;
|
|
|
+ - 客户在设计实际项目时,一般来说,需要通过一个GPIO来控制LDO给LCD和TP供电,这样可以灵活地控制供电,可以使项目的整体功耗降到最低;
|
|
|
+ - 核心板和配件板之间配备了双排40PIN的双头线,可以参考下表很方便地连接双方各自的40个管脚,插入或者拔出双头线时,要慢慢的操作,防止将排针折弯;
|
|
|
+
|
|
|
+### 5.2 接线配置
|
|
|
+
|
|
|
+#### 5.2.1 LCD 显示屏接线
|
|
|
+
|
|
|
+<table>
|
|
|
+<tr>
|
|
|
+<td>Air8101核心板<br/></td><td>AirLCD_1020配件板<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>gnd<br/></td><td>GND<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>vbat<br/></td><td>VCC<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>42/R0<br/></td><td>RGB_R0<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>40/R1<br/></td><td>RGB_R1<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>43/R2<br/></td><td>RGB_R2<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>39/R3<br/></td><td>RGB_R3<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>44/R4<br/></td><td>RGB_R4<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>38/R5<br/></td><td>RGB_R5<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>45/R6<br/></td><td>RGB_R6<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>37/R7<br/></td><td>RGB_R7<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>46/G0<br/></td><td>RGB_G0<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>36/G1<br/></td><td>RGB_G1<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>47/G2<br/></td><td>RGB_G2<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>35/G3<br/></td><td>RGB_G3<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>48/G4<br/></td><td>RGB_G4<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>34/G5<br/></td><td>RGB_G5<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>49/G6<br/></td><td>RGB_G6<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>33/G7<br/></td><td>RGB_G7<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>50/B0<br/></td><td>RGB_B0<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>32/B1<br/></td><td>RGB_B1<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>51/B2<br/></td><td>RGB_B2<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>31/B3<br/></td><td>RGB_B3<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>52/B4<br/></td><td>RGB_B4<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>30/B5<br/></td><td>RGB_B5<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>53/B6<br/></td><td>RGB_B6<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>29/B7<br/></td><td>RGB_B7<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>28/DCLK<br/></td><td>RGB_DCLK<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>54/DISP<br/></td><td>RGB_DISP<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>55/HSYN<br/></td><td>RGB_HSYNC<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>56/VSYN<br/></td><td>RGB_VSYNC<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>57/DE<br/></td><td>RGB_DE<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>14/GPIO8<br/></td><td>LCD_BL<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>13/GPIO9<br/></td><td>LCD_RST<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>8/GPIO5<br/></td><td>LCD_SDI<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>9/GPIO6<br/></td><td>LCD_SCL<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>68/GPIO12<br/></td><td>LCD_CS<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>75/GPIO28<br/></td><td>TP_RST<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>10/GPIO7<br/></td><td>TP_INT<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>12/U1TX<br/></td><td>TP_SCL<br/></td></tr>
|
|
|
+<tr>
|
|
|
+<td>11/U1RX<br/></td><td>TP_SDA<br/></td></tr>
|
|
|
+</table>
|
|
|
+
|
|
|
+#### 5.2.2 GTFont 字库接线
|
|
|
+
|
|
|
+<table>
|
|
|
+<tr> <td>Air8101 核心板</td><td>AirFONTS_1000配件板</td></tr>
|
|
|
+ <tr> <td>66/GPIO3</td><td>CS</td></tr>
|
|
|
+ <tr> <td>67/GPIO4</td><td>MISO</td></tr>
|
|
|
+ <tr> <td>8/GPIO5</td><td>MOSI</td></tr>
|
|
|
+ <tr> <td>65/GPIO2</td><td>CLK</td></tr>
|
|
|
+ <tr> <td>vbat</td><td>VCC</td></tr>
|
|
|
+</table>
|
|
|
+
|
|
|
+#### 5.2.3 接线图
|
|
|
+
|
|
|
+
|
|
|
+## 六、演示软件环境
|
|
|
+
|
|
|
+### 6.1 开发工具
|
|
|
+
|
|
|
+- [Luatools下载调试工具](https://docs.openluat.com/air8101/luatos/common/download/) - 固件烧录和代码调试
|
|
|
+
|
|
|
+### 6.2 内核固件
|
|
|
+
|
|
|
+- [点击下载Air8101最新版本内核固件](https://docs.openluat.com/air8101/luatos/firmware/),demo所使用的是LuatOS-SoC_V1006_Air8101 1号固件
|
|
|
+
|
|
|
+
|
|
|
+## 七、演示核心步骤
|
|
|
+
|
|
|
+### 7.1 硬件准备
|
|
|
+1. 按照硬件接线表连接所有设备
|
|
|
+2. 确保电源连接正确,通过TYPE-C USB口供电
|
|
|
+3. 检查所有接线无误,避免短路
|
|
|
+
|
|
|
+### 7.2 软件配置
|
|
|
+在`main.lua`中选择加载对应的驱动模块:
|
|
|
+
|
|
|
+```lua
|
|
|
+-- 加载显示屏驱动管理功能模块,有以下两种:
|
|
|
+-- 1、使用lcd核心库驱动的lcd_drv.lua
|
|
|
+-- 2、使用exlcd扩展库驱动的exlcd_drv.lua
|
|
|
+-- 根据自己的需求,启用两者中的任何一种都可以
|
|
|
+-- 也可以不启用任何一种,不使用显示屏功能
|
|
|
+lcd_drv = require "lcd_drv"
|
|
|
+-- lcd_drv = require "exlcd_drv"
|
|
|
+
|
|
|
+
|
|
|
+-- 加载触摸面板驱动管理功能模块,有以下两种:
|
|
|
+-- 1、使用tp核心库驱动的tp_drv.lua
|
|
|
+-- 2、使用extp扩展库驱动的extp_drv.lua
|
|
|
+-- 根据自己的需求,启用两者中的任何一种都可以
|
|
|
+-- 也可以不启用任何一种,不使用触摸面板功能
|
|
|
+tp_drv = require "tp_drv"
|
|
|
+-- tp_drv = require "extp_drv"
|
|
|
+
|
|
|
+
|
|
|
+-- 加载字库驱动管理功能模块,有以下三种:
|
|
|
+-- 1、使用gtfont核心库驱动AirFONTS_1000矢量字库配件板的gtfont_drv.lua
|
|
|
+-- 2、使用hzfont核心库驱动内核固件中支持的软件矢量字库的hzfont_drv.lua(正在开发中,后续补充)
|
|
|
+-- 3、使用自定义字体(正在开发中,后续补充)
|
|
|
+-- 根据自己的需求,启用三者中的任何几种都可以
|
|
|
+-- 也可以不启用任何一种,只使用内核固件中自带的点阵字库
|
|
|
+require "gtfont_drv"
|
|
|
+
|
|
|
+
|
|
|
+-- 加载输入法驱动管理功能模块(正在开发中,后续补充)
|
|
|
+
|
|
|
+
|
|
|
+-- 加载lcd核心库实现的用户界面功能模块
|
|
|
+-- 实现多页面切换、触摸事件分发和界面渲染功能
|
|
|
+-- 包含主页、lcd核心库功能演示页、GTFont演示页和自定义字体演示页
|
|
|
+require "ui_main"
|
|
|
+```
|
|
|
+
|
|
|
+### 7.3 软件烧录
|
|
|
+1. 使用Luatools烧录最新内核固件
|
|
|
+2. 下载本项目所有脚本文件和图片文件
|
|
|
+3. 将图片文件和脚本文件一起烧录到脚本分区
|
|
|
+4. 烧录完成后,设备自动重启后开始运行
|
|
|
+
|
|
|
+### 7.4 功能测试
|
|
|
+
|
|
|
+#### 7.4.1 主页面操作
|
|
|
+1. 设备启动后显示主页面,包含三个功能按钮
|
|
|
+2. 查看系统功能概览信息
|
|
|
+3. 点击各功能按钮进入对应演示页面
|
|
|
+
|
|
|
+#### 7.4.2 LCD演示页面
|
|
|
+1. 查看基本图形绘制示例(点、线、矩形、圆形)
|
|
|
+2. 查看图片显示区域(显示logo图片)
|
|
|
+3. 查看二维码区域(合宙文档二维码)
|
|
|
+4. 查看颜色填充示例展示
|
|
|
+5. 查看位图和英文字体演示
|
|
|
+6. 点击"返回"按钮回到主页
|
|
|
|
|
|
-## 演示功能概述
|
|
|
+#### 7.4.3 GTFont演示页面
|
|
|
+1. 计时阶段,gtfont说明显示
|
|
|
+2. 字体大小变化阶段,查看10-192号字体动态变化
|
|
|
+3. 点击"灰度/常规"切换按钮,体验不同显示模式
|
|
|
+4. 查看多颜色字体显示效果
|
|
|
+5. 点击"返回"按钮回到主页
|
|
|
|
|
|
-AirLCD_1020是合宙设计生产的一款5寸RGB888接口800*480分辨率的电容触摸显示屏配件板
|
|
|
+### 7.5 预期效果
|
|
|
|
|
|
-本demo演示的核心功能为:
|
|
|
+- **主页面**:正常显示,三个功能按钮响应灵敏
|
|
|
+- **LCD演示页面**:图形绘制清晰,图片和二维码显示正常,颜色示例完整
|
|
|
+- **GTFont演示页面**:字体显示平滑,字号切换流畅,灰度模式切换正常
|
|
|
+- **触摸交互**:所有触摸操作响应及时准确,页面切换流畅
|
|
|
|
|
|
-Air8101核心板+AirLCD_1020配件板,使用lcd图形库函数演示UI显示和触摸功能;
|
|
|
-
|
|
|
-
|
|
|
-## 核心板+配件板资料
|
|
|
-
|
|
|
-[Air8101核心板+配件板相关资料](https://docs.openluat.com/air8101/product/shouce/#air8101_1)
|
|
|
-
|
|
|
-
|
|
|
-## 演示硬件环境
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-1、Air8101核心板
|
|
|
-
|
|
|
-2、AirLCD_1020配件板
|
|
|
-
|
|
|
-3、双排40PIN的双头线
|
|
|
-
|
|
|
-4、Air8101核心板和AirGPIO_1000配件板的硬件接线方式为
|
|
|
-
|
|
|
-- Air8101核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关拨到OFF一端);如果测试发现软件重启,并且日志中出现 poweron reason 0,表示供电不足,此时再通过直流稳压电源对核心板的VIN管脚进行5V供电;
|
|
|
-
|
|
|
-- 为了演示方便,所以Air8101核心板上电后直接通过vbat引脚给AirLCD_1020配件板提供了3.3V的供电;
|
|
|
-
|
|
|
-- 客户在设计实际项目时,一般来说,需要通过一个GPIO来控制LDO给LCD和TP供电,这样可以灵活地控制供电,可以使项目的整体功耗降到最低;
|
|
|
-
|
|
|
-- 核心板和配件板之间配备了双排40PIN的双头线,可以参考下表很方便地连接双方各自的40个管脚,插入或者拔出双头线时,要慢慢的操作,防止将排针折弯;
|
|
|
-
|
|
|
-| Air8101核心板 | AirLCD_1020配件板 |
|
|
|
-| ------------ | ------------------ |
|
|
|
-| gnd | GND |
|
|
|
-| vbat | VCC |
|
|
|
-| 42/R0 | RGB_R0 |
|
|
|
-| 40/R1 | RGB_R1 |
|
|
|
-| 43/R2 | RGB_R2 |
|
|
|
-| 39/R3 | RGB_R3 |
|
|
|
-| 44/R4 | RGB_R4 |
|
|
|
-| 38/R5 | RGB_R5 |
|
|
|
-| 45/R6 | RGB_R6 |
|
|
|
-| 37/R7 | RGB_R7 |
|
|
|
-| 46/G0 | RGB_G0 |
|
|
|
-| 36/G1 | RGB_G1 |
|
|
|
-| 47/G2 | RGB_G2 |
|
|
|
-| 35/G3 | RGB_G3 |
|
|
|
-| 48/G4 | RGB_G4 |
|
|
|
-| 34/G5 | RGB_G5 |
|
|
|
-| 49/G6 | RGB_G6 |
|
|
|
-| 33/G7 | RGB_G7 |
|
|
|
-| 50/B0 | RGB_B0 |
|
|
|
-| 32/B1 | RGB_B1 |
|
|
|
-| 51/B2 | RGB_B2 |
|
|
|
-| 31/B3 | RGB_B3 |
|
|
|
-| 52/B4 | RGB_B4 |
|
|
|
-| 30/B5 | RGB_B5 |
|
|
|
-| 53/B6 | RGB_B6 |
|
|
|
-| 29/B7 | RGB_B7 |
|
|
|
-| 28/DCLK | RGB_DCLK |
|
|
|
-| 54/DISP | RGB_DISP |
|
|
|
-| 55/HSYN | RGB_HSYNC |
|
|
|
-| 56/VSYN | RGB_VSYNC |
|
|
|
-| 57/DE | RGB_DE |
|
|
|
-| 14/GPIO8 | LCD_BL |
|
|
|
-| 13/GPIO9 | LCD_RST |
|
|
|
-| 8/GPIO5 | LCD_SDI |
|
|
|
-| 9/GPIO6 | LCD_SCL |
|
|
|
-| 68/GPIO12 | LCD_CS |
|
|
|
-| 75/GPIO28 | TP_RST |
|
|
|
-| 10/GPIO7 | TP_INT |
|
|
|
-| 12/U1TX | TP_SCL |
|
|
|
-| 11/U1RX | TP_SDA |
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-## 演示软件环境
|
|
|
-
|
|
|
-1、Luatools下载调试工具
|
|
|
-
|
|
|
-2、[LuatOS-SoC_V1004_Air8101_20250527_085719.soc以及之后的固件都可以,如果打开这个网页,还没有合适的固件,联系合宙销售同事获取](https://docs.openluat.com/air8101/luatos/firmware/)
|
|
|
-
|
|
|
-
|
|
|
-## 演示操作步骤
|
|
|
-
|
|
|
-1、搭建好演示硬件环境
|
|
|
-
|
|
|
-2、不需要修改demo脚本代码
|
|
|
-
|
|
|
-3、Luatools烧录内核固件和demo脚本代码
|
|
|
-
|
|
|
-4、烧录成功后,自动开机运行
|
|
|
-
|
|
|
- (1) lcd上可以全屏显示一张图片,表示lcd显示功能正常;
|
|
|
-
|
|
|
- (2) 在触摸面板(注意:将触摸面板上的塑料膜撕掉)上,使用手指按下后,所按的位置会出现一个不太规则并且也没有全部填充的红色实心圆,表示触摸功能正常;
|
|
|
-
|
|
|
- (3) 每隔10秒钟,会自动刷屏,清空红色实心圆;
|
|
|
-
|
|
|
-5、[点击此处观看演示视频](https://docs.openluat.com/air8101/product/file/AirLCD_1020/lcd.mp4)
|
|
|
+### 7.6 故障排除
|
|
|
|
|
|
+1. **显示异常**:检查LCD接线是否正确,确认电源供电稳定
|
|
|
+2. **触摸无响应**:检查I2C接线,确认触摸芯片初始化成功
|
|
|
+3. **字体显示异常**:检查SPI接线(如使用GTFont)
|
|
|
+4. **图片无法显示**:确认图片文件已正确烧录到指定路径
|
|
|
+5. **系统卡顿**:检查内存使用情况,适当调整刷新频率
|