该工程属于 《校园自习室推荐与管理系统》 项目中控制层
的部分。
主要是通过LCD触摸屏
来显示教室内的环境信息、用电器信息,同时用户可以通过LCD触摸屏
上的虚拟按键来控制教室内的用电器,也可以用配套的小程序远程控制用电器,远程下发的命令会在面板上实时更新。
- 想学习嵌入式GUI的人
- 有一定单片机基础的人
- 对LCD触摸屏底层驱动感兴趣的人
- 触摸屏与核心板之间的通讯
- STM32F429 LTDC的使用
- DMA2D的使用
- 接触过UI库,想更深一步学习的人
- emwin
- 库太过全,显得冗杂,不知道该从何学起,学习成本较高
本工程从底层原理入手,从硬件层面学习GUI,为日后学习上层软件逻辑打下了基础。
- 虚拟按键
- 多页签切换
- 状态信息显示与转发
- 状态信息转发
- 控制命令处理与转发
- 控制命令转发
- 更新用电器状态
- 自制GUI库
- 相比其他UI库更接近底层
- 裁剪库,只留必要代码
- 相比STemwin刷新速度更快
- 未提供更多类型的响应事件,可能对后续拓展带来不便
- 为嵌入式GUI开发提供一个思路
- 原型DEMO
- 实操演示视频
- KEIL 5
- STM32F429芯片包
- STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
- 野火工程文件目录
- 野火STM32F429挑战者核心板
若用不同型号的板子,需要根据板子来修改工程文件中对应的代码
-
核心板图
-
芯片型号
- STM32F429IGT6
-
FLASH
- 图片数组写在程序中,需要FLASH大
-
SDRAM
- 显存,需要至少能放下一帧的像素数据
-
外部晶振
- 关乎到LTDC的像素时钟、LCD的显示时钟的分频
-
野火五寸LCD电容触摸屏
工程文件中关于触摸屏驱动、LCD驱动、像素尺寸等参数都是与该款电容屏相匹配的,若用其他型号的LCD触摸屏需要更改工程文件中对应的代码- 电容屏图
该款LCD屏幕上贴上了一层同等大小的I2C通讯的电容触摸屏。若仅有LCD的话无法实现虚拟按键的效果
-
- 杜邦线或FFC20pin软排线
连接LCD触摸屏与核心板 - (可选)野火STM32F429/F479挑战者底板
方便连线,即插即用
- 工程文件夹压缩包
- 包含keil5工程文件
- STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
- Fork本工程
- 将本项目置于User文件夹下
- Fork本工程
- 在你准备Fork本工程的目录下新建一个User文件夹
- 将本工程Pull到User
- 将压缩包解压到上一级目录
- 打开Project/MDK5/
- 编译并烧录
.jpg
Img2lcd.exe
icon文件夹
icon\icon.h声明数组
panel.c Touch_Icon 结构体 赋值gImage成员
触控处理函数
矩阵布局
绘制控件
控件处理函数
修改页签
页面绘制函数
页面判断逻辑(触控处理)
- 指令执行需要与其他硬件配合
- ESP8266 ST(STation)
将环境信息和用电器状态信息上传到公有云上
将云端下发的控制命令发送给面板 - ESP8266 AP(softAP)
将信息采集节点采集到的环境信息发送给面板
将用电器控制命令下发到各个控制节点