本帖最后由 jinglixixi 于 2022-3-9 00:18 编辑
要实现环境状态检测仪的功能设计,需要由迪文智能屏、GD32L233开发板及相应传感器来构建,其中的参数设置、数据显示及波形绘制任务交由迪文智能屏来完成,环境检测任务则是由GD32L233开发板来读取相关数字式传感器来完成,两者的数据传递是靠串行通讯来实现。 1. 显示界面设计 迪文智能屏的界面如图1所示,其中主界面用于检测值的显示,辅助界面用于参数设置。 其主界面是由背景、文本显示控件、数据变量显示控件及基础触控控件构成,其中文本显示控件用于日期和时间的显示,数据变量显示控件则用于显示检测值,基础触控控件用于页面切换,其设计界面见图2所示。
图1 界面形式
图2 主界面设计 在界面中,温度的变量地址为1200,变量类型为整数(2字节),整数位数为2位,字体大小为16,显示颜色为白色;气压的变量地址为1202,变量类型为整数(2字节),整数位数为4位,字体大小为16,显示颜色为白色;光照的变量地址为1204,变量类型为整数(2字节),整数位数为4位,字体大小为16,显示颜色为白色。 日期的变量地址为1000,显示颜色为白色,文本长度为10,X方向点阵数为12,Y方向点阵数为24;时间的变量地址为1020,显示颜色为白色,文本长度为8,X方向点阵数为12,Y方向点阵数为24。 经字库、图库及配置文件生成,并将最终生成的“DWIN_SET”目录内容下载到智能屏即可。 2. 参数读取与接收 1)读取数据变量内容 以读取温度变量为例,其变量地址为1200,故读取的指令为“5A A5 04 83 12 00 01”,其反馈信息为“5A A5 06 83 12 00 01 00 1A”,见图3所示。其中的“00 1A”为数据值的26,与界面的显示值相同。
图3 读取测试 若使用指令“5A A5 04 83 10 00 05”,则可读取日期变量的数据,其中“32 30 32 32 2D 30 33 2D30 36”是日期值“2022-03-06”,见图4所示。
图4 读取日期变量 若使用指令“5A A5 04 83 10 20 04”,则可读取时间变量的数据,其中“31 30 3A 33 30 3A 30 30”是时间值“10: 30:00”,见图5所示。
图5读取时间变量 若使用指令“5A A5 04 83 12 00 05”,则可读取3个变量的数据,见图6所示。 温度的“00 1A”为26度,气压的“00 0004 00”为1024千帕,光强的“00 00 03 E8”为1000勒克斯。
图6 读取多个地址数据 2)修改数据变量内容 向变量地址1200发送“00 14”,即可将温度值更改为20度,见图7所示。
图7 更改温度值 向变量地址1202发送“04 00”,即可将气压值更改为1024KPa,见图8所示。
图8更改气压值 向变量地址1204发送“03 E8”,即可将光照值更改为1000 lx,见图9所示。
图9 更改光照值 由于迪文智能屏并没有独立的电子时钟计时功能,为此可以使用GD32L233开发板的RTC计时器或延时函数来完成。
模拟RTC秒计时的程序为:
- while(1)
- {
- tx_buffer[12] = i/10+'0';
- tx_buffer[13] = i%10+'0';
- tx_counter=0;
- while(tx_counter < nbr_data_to_send)
- {
- usart_data_transmit(USART0, tx_buffer[tx_counter++]);
- delay_1ms(1);
- }
- i++;
- i=i%60;
- delay_1ms(1000);
- }
复制代码
通过串口调试工具观察,其测试结果如图10所示。
图10 发送模拟计时指令 在连接GD32L233开发板的情况下,是使用UART2与开发板通信,其连接关系及显示效果见图11所示。
图11硬件连接与测试 4) 环境状态检测 环境状态的检测内容包括温度、大气压及光照强度,是由传感器BMP085和BH1750来获取,并在GD32L233开发板的控制下,将检测值转换为相应的指令传送给迪文智能屏来进行显示,其硬件构成及连接如图12和图13所示。 |