STM32控制串口液晶屏的动态叠加曲线显示

2019-01-11 08:56束仁义张水锋
通化师范学院学报 2019年2期
关键词:柱状图液晶屏连线

陈 帅,束仁义,张水锋

在数据采集系统的液晶屏上需要绘制不同测点数据水平变化曲线,同时又要叠加绘制数据大小的柱状图形.例如要绘制N个测量点数据的柱状图,表示数据的相对大小,同时又要叠加绘制这N个测量点数据的水平方向动态变化,即连接柱状图顶点的连线,表示不同测点水平方向的变化趋势.运用工业串口液晶屏[1-2]可以绘制基本图形以及多条连续水平动态曲线[3],无法满足需求.本文研究实现了基于STM32控制在迪文串口液晶屏上的动态叠加曲线显示过程.

1 控制原理

1.1 串口帧格式[3]

迪文 DGUS[4]液晶屏 DMT80480T050_01WN如图1所示,组成包括驱动基板和液晶面.与外界通信有RS485和RS232接口,同时兼供电线路.这里采用单片机STM32通过RS232串口与液晶屏连接,连接示意图如图2所示.

通过STM32控制液晶工作只需在程序中向串口发送数据帧.发送的串口数据帧必须按照一定的格式,数据帧格式如表1所示.其中数据帧的帧头占2字节,数据长度占1字节,指令占1字节,然后是数据字节,根据系统参数配置选项最后可有2字节的检验码.

表1 迪文液晶屏的串口帧格式

帧头可以通过系统参数配置指定.数据长度字节值是指从指令字节开始至CRC校验的字节数.指令字节内容为0x80~0x84之一.也可以通过配置文件决定是否需要CRC校验字节.

图1 迪文液晶屏

图2 实验连接图

1.2 指令

迪文液晶的串口屏有五条指令,分别是寄存器写、寄存器读、数据存储器写、数据存储器读、曲线控制缓冲区写,对应的指令分别为80~84指令.

例如,如果通过配置文件设定不需要CRC校验,则STM32通过RS232串口向液晶屏发送十六进制帧:unsigned char Frame_pwd[8]={A5 5A 05 82 00 50 00 2A};则该帧表示在0050地址显示字符"*".其中帧头为A5和5A两字节;第三字节05表示数据长度为5,也就是帧的第3字节后面还有5个字节;第4字节82为指令,表示写数据存储器;第5~6字节00、50表示数据存储地址,该地址是在组态软件中设定的显示区地址,即决定了显示位置;第7~8字节00、2A表示ASCII码数值2A,对应字符"*".

迪文液晶屏支持绘制多个曲线数据连续变化的84指令,但靠这个指令难以满足我们的要求.而82指令有基本图形绘制功能,可以绘制点、圆、线、矩形等基本图形.

例如串口发送帧:{A5 5A 0F 82 00 10 00 01 00 01 00 10 00 10 F8 00 FF 00}

其中:

A5 5A:为帧头;

0F:是发送的数据长度(不含帧头和长度字节,即从82开始总共15字节);

82:曲线控制指令;

00 10:为变量(VP)地址;

00 01:写入VP地址的数据(作为绘图指令);(此处VP地址由于在DGUS配置软件中已经做成基本绘图的控件,因此存储的数据被DGUS默认为绘图指令,例如0001便是置点指令,0002为连线指令,0003画矩形,0004矩形填充,0005为画圆,0006为图片剪切,0008为区域填充,0009画垂直线)[曲线控制82向VP地址写入的数据(作为绘图指令)时发送数据的长度也相应不同];

00 01:写入数据0001(此处VP+1地址里存储的数据表示最大数据包数目.例如置点,0001表示置一个点);

00 10 00 10:往VP+2开始的地址里写入第一个顶点的坐标(这里分别是X,Y坐标(0010,0010));

F8 00:往VP+3地址写入的数,表示点的颜色(F800表示红色);

FF 00:表示绘图操作结束.

2 液晶配置

迪文液晶屏通过组态软件DGUS进行液晶界面配置设置.先在个人计算机上利用Photoshop等软件设计需要的图形界面,然后导入组态软件DGUS,再进行配置,包括系统参数配置、触控配置,最后生成配置文件.将配置文件复制到SD卡上,将SD卡插入液晶的插口,在液晶上电时就把SD卡上的配置文件下载到液晶屏中.

2.1 分辨率与系统参数配置

在组态软件DGUS下引入背景图,设置好屏幕分辨率800*640,系统参数配置串口波特率为115200,帧头字节为:0xA5,0x5A.

2.2 触控配置

以N取6点为例.

引入12个基本图形控件,放置在要绘制图形的恰当位置,如图3所示,它们是叠加在一起的.其中6个用于显示6点动态数据的柱状图,变量地址分别为0x2000、0x2020、0x2040、0x2060、0x2080、0x20a0;5个用于显示这6点动态数据的水平连线(柱状图顶点连线),变量地址分别为0x2410、0x2420、0x2430、0x2440、0x2450;1个用于显示水平参考坐标,变量地址设为0x2400.

图3 在液晶设计中引入12个基本图形控件

图3中的加括号的数据表示图形中相应点的坐标值.生成配置文件,导出变量.同时还可以查看变量.

3 编程控制

3.1 连线函数

在设计的每个基本图形控件上进行连线的操作功能:柱状线、水平坐标线、动态连线,都具有相同的点与点之间的连接操作.故在STM32中设计两点间连线函数以供调用,函数形式如下.void self_line(addr,X1,Y1,X2,Y2,color);

其中:函数参数都为无符号的整数.地址为基本图形控件的变量地址值,X1、X2和Y1、Y2分别为连线的起止两点的横、纵坐标,color为连线的颜色.函数无返回值.该函数实现比较简单:定义一个无符号字符数组作为串口准备发送的帧,使用82命令按照表1格式填充帧字节,调用串口发送函数把帧字节发送给工业液晶屏显示.有了连线函数,就可以通过参数改变进行曲线绘制.连线函数实现代码如下.

void self_line(u16 addr,u16 X1,u16 Y1,u16 X2,u16 Y2,u16 col

or)//连线函数

{

u8 frame_line[22]={0xa5,0x5a,0x13,0x82,0x21,0x10,0x00,

0x02,0x00,0x01,0xff,0xe0,0x00,0x10,0x00,

0x10,0x00,0x50,0x00,0x50,0xff,0x00};//19字节

frame_line[4]=(addr>>8)&(0xff);

frame_line[5]=(addr>>0)&(0xff);

frame_line[10]=(color>>8)&(0xff);//颜色

frame_line[11]=(color>>8)&(0xff);

frame_line[12]=(X1>>8)&(0xff);//起点

frame_line[13]=(X1>>0)&(0xff);

frame_line[14]=(Y1>>8)&(0xff);

frame_line[15]=(Y1>>0)&(0xff);

frame_line[16]=(X2>>8)&(0xff);//终点

frame_line[17]=(X2>>0)&(0xff);

frame_line[18]=(Y2>>8)&(0xff);

frame_line[19]=(Y2>>0)&(0xff);

uart3_sendbuf(frame_line,22);//STM32的uart3发送22字节,送液晶显示

}

3.2 参考坐标绘制

在连线函数self_line中,只要保持Y1=Y2,X1≠ X2即可绘出水平线.同样,保持X1=X2,Y1≠Y2即可绘出垂直线.

3.3 叠加曲线绘制功能

设数据保存在浮点数组strain中,则绘制叠加曲线过程为:

float strain_pos[7];//6个动态测量数据

int j; //变量

int px[7],y1[7],y2[7];//坐标变量数组

float scale=10;//坐标比例系数

for(j=1;j<=6;j++) //绘6测点叠加曲线图

{

px[j]=150+(j-1)*100; //水平方向x位置

y1[j]=135; //垂直方向 y起点

y2[j]=135-(strain_pos[j])/scale*90;//垂直方向y终点

self_line(0x2110+(j-1)*16,px[j],y1[j],px[j],y2[j],

0xffe0);//调用连线函数绘柱状图

if(j>=2)//从第2点开始

self_line(0x2400+(j-1)*16,px[j-1],y2[j-1],px[j],

y2[j],0xf800);//调用连线函数绘制连线图

}

4 实验

数据采集系统连接如图2所示.Stm32f103通过串口与迪文工业液晶屏连接.传感器采集使用zigbee无线模块采集.采集的压力通过stm32f103处理后,发送给迪文液晶屏进行动态显示,即要显示柱状图,又要叠加显示水平曲线.实验装置如图4.

图4 实验装置

图5 工业液晶屏显示的动态叠加曲线

实验结果如图5(a)(b)(c),分别是三个不同时间显示曲线的液晶屏显示照片.由图5(a)(b)(c)可见,工业液晶屏可以同时叠加显示柱状图和水平变化曲线图.当数据发生动态变化时,叠加柱状图和水平变化曲线随之改变.

5 结论

为了在工业液晶串口屏上同时叠加显示柱状图和水平曲线,采用组态软件设计了液晶显示界面,并进行了液晶配置.在STM32F103上设计了连线控制函数,在实验装置上进行了实验.结果验证了在STM32控制下,设计的方法可以在串口液晶屏上实现动态叠加曲线的显示.

猜你喜欢
柱状图液晶屏连线
快乐连线
快乐连线
基于Unity3D 的冒泡排序算法动态可视化设计及实现
快乐连线
快乐连线
基于FPGA的车内环境监测系统设计
一种消除液晶屏高温MURA的工艺研究
高中地理图像图表题解析技巧之管窥
基于单片机的点餐系统硬件设计
由科研论文中一个柱状图引发的编辑思考