教程:在STONE串口屏上制作家用电器控制系统
项目介绍(STONE触摸显示模块)
本教程将向您展示如何使用STONE STVC050WT-01触摸显示模块制作一个简单的家用电器控制系统。
STONE STVC050WT-01 触摸显示模块为 5 英寸,分辨率为 480×272。该模块已集成串口屏和触摸屏驱动所需的芯片,开发人员只需使用 STONE 官方 VGUS 设计软件进行 UI 界面设计并生成编程文件,下载至 STONE 显示模块,然后通过串口 (RS232/RS485/TTL)与之对应,即可实现复杂的UI设计功能。
具体流程如下:
下图展示了STONE STVC050WT-01显示模块的部分参数:
该显示模块仅是该系列产品中的一种。该系列还提供多种配置的显示模块。 www.stoneitech.com
STONE显示模块开发三步流程
- 使用STONE TOOL软件设计UI,并将设计文件下载至显示模块。
- MCU通过串口与STONE显示模块进行通信。
- MCU根据步骤2获取的数据执行其他操作。
UI 界面设计
今天我们制作了一个简单的家用电器控制界面。通过 Photoshop,我设计了以下简单界面:
功能:
当按下灯光按钮时,页面跳转至 2,显示三个灯光的开关状态。当按下开关按钮时,屏幕模块的串口发送开关信号协议。外部 MCU 可通过串口直接向屏幕模块发送数据,使屏幕直接显示灯光开关状态。
使用STONE串口屏的新项目
在STONE官网可下载TOOLS 2019软件的最新版本,通过该软件可进行UI设计:
STONE TOOL是一款无需安装的图形界面设计软件。下载后解压即可直接运行。需注意该软件需在Windows 8及Windows 10系统上以兼容模式运行
由于我使用的是分辨率为480*272的STVC050WT-01,且默认Flash空间大小为128Mbyte(可扩展至1024MByte),因此我选择了128Mbyte。
设置项目名称和存储路径,然后点击“确定”完成。
右键点击“Picture”目录并删除0.jpg:
在STONE TOOLS中添加UI图像
右键点击“picture”目录,将我们准备的两个UI图标添加到项目中:
在STONE TOOLS中添加“stock”字样
右键点击“Font file”,选择合适的字体添加到项目中。这里我选择了ASCII 24×48。
添加按钮
我们在 STONE TOOL 软件中的第一个 UI 上为“Light”按钮设置功能:
点击“Light”按钮时,将跳转到第二页。如何实现?
点击“Button”图标绘制按钮区域:
黄色区域代表用户绘制的按钮区域。按钮属性在STONE TOOL软件右侧的属性栏中列出:
只需将“pageswitch”选项设置为1,即可在按下按钮时切换到第二页。
在“Tool”中选择“Generating configuration file”,然后选择“Virtual serial port screen”。
然后我们将页面2左上角的箭头改为按钮:
当用户按下此按钮时,将返回第一页。
添加文本显示
使用文本变量控件,圈出“light1”后的空白区域:
然后点击刚添加的文本变量,STONE Designer右侧将显示属性界面,主要修改以下参数:
其中,“变量内存地址”指存储显示内容的内存地址。一个地址可存储两个字节。默认显示内容为“OFF”,需占用三个字节的内存空间。这意味着我们将“OFF”存储在地址0020和0021中。
带返回值的按钮
我们上面使用的控件是“Button”。此“Button”控件不返回值,这意味着当用户按下按钮时,显示模块的串口不会向MCU发送数据。
如果用户按下按钮并希望屏幕模块将数据返回给MCU,我们可以使用“return pressed key-value”控件:
属性栏设置如下:
将UI设计文件下载到显示模块
- 将USB闪存盘插入计算机
- 在STONE TOOL中点击“下载到U盘”按钮
3. 拔出USB闪存盘
4. 将USB闪存盘插入显示模块的USB接口并等待升级完成。升级完成后会发出提示音
5. 测试
串口通信
键值返回
将程序下载到显示模块后,打开电源,通过USB-TTL接口连接计算机,按下Light1的灯光按钮,返回串口数据
Press the button to turn off the light
Serial data return: A5 5A 06 83 00 26 01 00 A9
A5 5A: 帧头
06: 指令字节长度,83 00 26 01 00 A9 总共6字节(不包括数据帧头)
83: 读取变量内存指令
00 26: 变量存储地址
01: 数据字长度,00 A9,1字长度(2字节)
00 A9: 用户数据内容,取决于设置的按键。
写入寄存器数据
该指令将55 aa写入数据存储区域的地址0x0020:
0xA5 0x5A 0x05 0x82 0x00 0x20 0x55 0xaa
由于我们已将 Light1 的文本显示存储地址设置为 0x0020,因此通过串口向该地址写入数据等同于更改 Light1 文本显示框的内容。
读取寄存器数据
串口向显示模块发送以下命令:
0xA5 0x5A 0x03 0x83 0x00 0x20
表示读取0x0020的值,在更改项目中,表示读取灯的开关状态。