Skip to content

Gorgeous2017/StudyRoomControlPanelLTDC

Repository files navigation

室内控制面板工程文件

说明 description

该工程属于 《校园自习室推荐与管理系统》 项目中控制层的部分。
主要是通过LCD触摸屏来显示教室内的环境信息用电器信息,同时用户可以通过LCD触摸屏上的虚拟按键来控制教室内的用电器,也可以用配套的小程序远程控制用电器,远程下发的命令会在面板上实时更新

针对人群

  • 想学习嵌入式GUI的人
  • 有一定单片机基础的人
  • 对LCD触摸屏底层驱动感兴趣的人
    • 触摸屏与核心板之间的通讯
    • STM32F429 LTDC的使用
    • DMA2D的使用
  • 接触过UI库,想更深一步学习的人
    • emwin
    • 库太过全,显得冗杂,不知道该从何学起,学习成本较高

本工程从底层原理入手,从硬件层面学习GUI,为日后学习上层软件逻辑打下了基础。

主要功能

  • 虚拟按键
  • 多页签切换
  • 状态信息显示与转发
  • 状态信息转发
  • 控制命令处理与转发
  • 控制命令转发
  • 更新用电器状态

特点 Features

  • 自制GUI库
  • 相比其他UI库更接近底层
  • 裁剪库,只留必要代码
  • 相比STemwin刷新速度更快
  • 未提供更多类型的响应事件,可能对后续拓展带来不便
  • 为嵌入式GUI开发提供一个思路

视觉效果 Visuals

  • 原型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挑战者底板
    方便连线,即插即用

安装 Installation

独立工程文件夹

  • 工程文件夹压缩包
    • 包含keil5工程文件
    • STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
  • Fork本工程
    • 将本项目置于User文件夹下

集成工程文件夹

  1. Fork本工程
  2. 在你准备Fork本工程的目录下新建一个User文件夹
  3. 将本工程Pull到User
  4. 将压缩包解压到上一级目录
  5. 打开Project/MDK5/
  6. 编译并烧录

用法 Usage

替换图标

图标制作

.jpg
Img2lcd.exe

图标添加

icon文件夹
icon\icon.h声明数组
panel.c Touch_Icon 结构体 赋值gImage成员

修改布局

触控处理函数
矩阵布局
绘制控件
控件处理函数

修改界面

修改页签
页面绘制函数
页面判断逻辑(触控处理)

修改命令函数

开发 Development

要求 Requirements

  • 指令执行需要与其他硬件配合
  • ESP8266 ST(STation)
    将环境信息和用电器状态信息上传到公有云上
    将云端下发的控制命令发送给面板
  • ESP8266 AP(softAP)
    将信息采集节点采集到的环境信息发送给面板
    将用电器控制命令下发到各个控制节点