基于STM32的液晶屏显示及数据传输控制系统
2019-06-11李崇宋宇宁栾显晔姜淇李嘉巍
文/李崇 宋宇宁 栾显晔 姜淇 李嘉巍
随着智能化水平不断提高,越来越多的医疗设备开始具备数据通信和可视化的功能,以方便现场监视和集中监控、提高操作安全性。但医疗康复设备操作这种产品的可视化功能设计还不够成熟,集中于界面的数据及图片更新无法实现单独控制,短时间内无法实现数据的同步更新,及界面更新时刷新速度慢导致拖尾等问题,尚不能满足人性化需求。
本文设计了一种基于STM32的液晶屏图像显示及数据传输控制系统,对液晶屏显示窗口分区划分处理,区域之间互不干扰,解决了刷屏速度慢的问题。采用ModBus RTU协议实时传输数据,提高了数据传输的速度和数据处理的灵活性。
1 系统的总体结构
液晶屏图像显示及数据传输控制系统的结构图如图1所示。该电路板采用意法半导体的STM32F103芯片作为主控芯片,通过串口与主控设备相连,通过操作ILI9341液晶屏控制芯片对LCD模块进行控制。薄膜按键采用矩阵式布线方式,应用并行IO接口连接。
2 液晶屏显示系统的硬件设计
本文选用的2.4寸液晶显示屏。控制器型号为ILI9341,该控制器支持8/9/16/18位数据总线的MCU接口,6/16/18位数据总线的RGB接口,以及3/4线的SPI接口。MCU为主机,LCD采用并行接口控制模式,和MCU通过IO接口相连接。由于MCU只发不收,只需要连接片选信号线L_CS、写使能输入信号线S_WE、传输数据类型信号线L_D/C、主设备输出线S_Dn(n=0~7)、液晶屏背光控制信号LED-A。本系统薄膜按键采用矩阵式布线结构。
3 液晶屏显示系统的软件设计
本文液晶屏图像显示及数据传输控制系统软件设计如下:首先对液晶屏参数设置、系统模块的功能以及对应的MCU接口初始化,4*4矩阵分布按键逐行逐列扫描,根据键值切换液晶屏图片区的内容。模块间通过判断全局变量及状态标志位的值实现主设备状态信息和液晶屏显示的同步更新。
3.1 液晶屏图像显示
本系统中液晶显示屏尺寸240*320,采用竖屏横显示方式。屏幕显示内容包括产品logo、图片、连接状态、剩余电量值和被控设备当前的姿态角度值。为避免切换图片时或动画显示时屏幕出现刷屏拖尾等问题,本文对此采用特殊分屏处理的方式。
首先对液晶屏模块进行初始化,用于功能的设定、清屏。创建两个独立的窗口,图片窗口——用于图片和动画的显示区,背景窗口——logo区和数据更新实时显示区(除图片区以外的区域即为背景窗口区)。
背景窗口的设置函数为void WM_SetSize();图片窗口的设置函数WM_HWINWM_CreateWindowAsChild();在创建新窗口前必须调用函数WM_SetCreateFlags(),两个窗口创建后必须添加窗口分离函数void WM_DetachWindow(),保持两个窗口的独立性,很好地解决了刷屏问题。
背景窗口的数据显示区使用EDIT文本编辑框小工具进行数值的显示,并在背景窗口创建1ms定时器对数值定时更新。图片区根据薄膜按键值的不同显示不同的图片内容。logo区为产品的个性标识。
3.2 ModBus RTU主站设计
本系统中数据传输显示板与上位机之间的通信采用Modbus RTU协议。本系统中数据传输显示板作为主站,上位机作为从站。数据传输显示板通过查询方式进行上位机数据的收集,并将设置、控制命令发送下去。上位机支持0x04、0x06两种功能码,分别可以实现读保持寄存器、写单个寄存器。
4 结语
图1:液晶屏图像显示及数据传输控制系统结构图
本文提出了一种基于STM32的液晶屏图像显示及数据传输控制系统的实现方法。与传统的液晶屏显示设备相比,该系统将液晶屏分成多个独立的窗口,将固定图形以及实时显示数据分开处理,应用窗口定时器实现文本编辑框内数据的显示,采用的Modbus RTU协议兼顾数据传输的实时性与硬件接口的通用性,有效的提高了实时数据的刷新速率,解决了液晶屏显示易出现的拖尾等现象,极大的提升了用户的体验,在医疗康复设备的操作手柄中得到了广泛的应用。