这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 基于嵌入式操作系统μC/OS-II实现软件显示任务的设计

共2条 1/1 1 跳转至

基于嵌入式操作系统μC/OS-II实现软件显示任务的设计

高工
2021-03-01 23:59:28     打赏

作者:王生胜,夏泽中,郝铁伟

随着现代生活中蓄电池需求量的日益增加,蓄电池的生产规模也逐渐扩大,同时对蓄电池生产中的控制也提出了更高的要求。由于蓄电池的化成过程是影响蓄电池质量的一个非常重要的工艺环节,因此,对蓄电池化成工艺过程的有效控制在很大程度上决定着蓄电池的质量。

本文给出了在蓄电池化成工艺过程控制系统设计中,将嵌入式操作系统μC/OS-II用于系统软件设计,并将系统各功能模块划分成不同优先级的任务由系统内核进行调度,从而通过人机操作界面显示系统任务的具体方法。

1系统总体设计

本系统中的控制器主要用于实现实时蓄电池的恒流充放电控制,检测蓄电池充放电过程中的电压和电流参数,以及测试蓄电池的负载能力。本系统的总体框图如图1所示。

基于嵌入式操作系统μC/OS-II实现软件显示任务的设计

蓄电池化成控制系统的主要功能可由变流控制器完成。系统运行时,只要通过外扩的键盘电路输人化成控制参数信息(即所谓的化成工艺文件设置),微控制器便可按照工艺文件的设置对蓄电池进行充放电控制。在整个系统运行过程中,控制器通过信号检测电路检测运行过程中的电流和电压参数,并将这些信息实时的显示在液晶显示器上。当在运行过程中遇到键盘操作、系统出现故障或者采集到的参数越限时,液晶显示器将自动切换到相关信息的显示界面中去,因此,本系统对液晶显示器的实时显示处理具有较高的要求。

2显示任务的实现

设计时,根据控制器所要实现的功能可将本系统划分成若干个任务,其中监控任务用于监视系统运行时各任务的运行状态;键盘任务用于对键盘进行扫描与处理;显示任务则用于实时显示系统运行中的各种状态信息以及控制信息;通信任务用于实现控制器之间以及控制器与上位机之间的通讯;采样与反馈任务用于实时采集现场数据并输出反馈控制信号。

本系统采用字符型液晶显示器VPG19264作为实时显示的窗口。VPG19264是一种图形点阵液晶显示器,点阵数为192(列)×64(行),可显示12×4(行)个16×16点阵汉字,也可完成图形、字符、动画的显示。它主要由行驱动控制器和列驱动器两部分组成192(列)×64(行)的全点阵液晶显示器。此显示器采用COB的软封装方式,可通过导电橡胶和压框连接LCD。当通过显示器显示汉字时,应首先使能显示器,然后通过写命令设置汉字显示的地址,最后写入要显示的汉字字模。

为了在系统运行过程中能够实时显示各种状态信息和控制信息,可在软件设计中引入面向对象的概念。本设计对很多与显示模块相关的函数都进行了特殊处理,因而其使界面显示更具人性化。

2.1菜单的操作

由于对显示器的操作大多都是通过对菜单进行的,因此,菜单的合理规划是本操作显示器的重点。在对菜单进行设计时,笔者采用了面向对象的思维,并将菜单编号、菜单显示内容、显示位置以及对功能键的响应作了封装,其封装格式如下:

因为对菜单的操作是模仿手机中的确认和取消键来处理的,因此,在封装时,本设计采用两个函数指针分别指向对应该菜单按下确认键和取消键功能的函数。在定义菜单时,采用结构体数组的方式给所有菜单赋予不同编号并保存在一个结构体数组中,然后通过对结构体数组的初始化来设s置所有菜单的初始化信息。这样,在实际操作时,通过一个通用的函数模块即可调用对应菜单的处理函数。下面的函数即代表了在对应菜单上按下确认键时程序的运行状态:

变量CurrentFocusMenu用于指明当前处于焦点状态的菜单项。

采用这种方式进行封装柯使菜单处理变得非常容易。这样方式在实际使用时。如果需要增加或减少菜单,只需在结构体数组中增加和删除菜单的初始化信息而几乎不需要增加其它代码;同时在进行界面切换时,也可以根据结构体中菜单的显示内容和坐标来调用统一的显示函数并进行处理,因而其菜单结构更加清晰。另外,采用面向对象的方式处理菜单,其程序也被大大简化,因而具有很好的扩展性。

2.2提示消息的处理

系统中经常会遇到需要工作人员确定的消息,比如在系统参数设置时,当工作人员输入数据之后和保存之前,应在LCD上显示出工作人员刚刚输入的数据,并给出一个提示消息以确认所输入的信息是否正确,这样可避免保存无效的数据,提高系统的可靠性。

本系统中模仿了面向对象中弹出消息框的编写方式,即仿照手机中弹出消息框的编程模型,来将面向对象的思维运用在程序设计中,这样设计出来的消息框非常具有人性化,而且操作也很方便。图2为系统中的两种消息框的显示模型。

图2中的左部只包含了一个简单的确认按钮,它无需工作人员做出是与否的决定,可用于一些简单的提示消息;而右半部分则包含了两个按钮,当消息框显示消息时,它需要工作人员按下键盘上的确认键以确认消息或者按下取消键否认消息,该模型常用于键盘输入完成后,在保存时提示工作人员的消息,以确认工作人员输入的内容正确与否。针对系统中所使用的LCD,图2所示的消息框上的坐标设置界面中的标注分别还给出了提示消息、按钮以及框线的坐标位置。图3所示是模拟消息框运行的程序流程图。

程序中应首先判断消息框的类型是显示确认按钮还是同时显示两个按钮,然后按照图2所示的坐标显示提示消息并绘制消息框的轮廓。因为消息框属模态对话框,必须按下确认或者取消键方能继续运行,所以程序紧接着将等待邮箱传递键值消息,如果工作人员按下确认键或者取消键,程序则返回键值消息给调用函数,以便调用函数能依据不同的按键分别处理,直到消息提示框运行结束。

将面向对象的思维方式运用在LCD显示设计中,可极大地提高程序编写的简洁性和系统运行的可靠性,其非常符合人们日常生活中经常接触到的界面,而且非常美观和亲近。

2.3显示任务的设计

系统中的LCD不仅要实时显示采集到的现场数据,而且在系统发现所采集的数据越限时,也能及时地显示出具体的故障信息,同时当工作人员通过键盘对系统参数进行设置时,LCD还能及时地切换显示画面并转向显示系统设置界面。因此。应设计一个显示任务来处理LCD的屏幕切换过程,其流程图如图4所示。

显示任务执行时,首先等待键盘或其它任务发送过来的邮箱消息,并将邮箱等待超时时间设置为系统显示采集数据的时间。当任务没有收到邮箱消息而超时时,任务将转去执行显示数据功能;否则,当收到邮箱消息时,任务将会根据邮箱的内容判断是否有键按下以更改系统设置。如是,则清屏LCD,并转去执行显示键盘操作功能。如果收到的邮箱不是用来更改系统设置的消息,则将判断邮箱是否要求显示器显示其它信息,如是,则清屏并转去显示其它信息(如系统故障信息等)。否则结束一次运行,并继续等待邮箱消息,重复上述过程。其所对应的程序伪代码如下:

通过上述方法设置显示任务,能够很好地实现LCD在显示数据、系统信息设置及其它故障信息之间的屏幕切换等功能,而且,该方法具有很好的通用性。

3结束语

本文介绍了在蓄电池化成控制系统设计中将嵌入式实时操作系统μC/OS-II用于系统软件设计,并在此基础上采用面向对象的思维方式来处理LCD显示屏幕的具体方法。该方法可有效的处理LCD显示任务,提高系统运行的可靠性和稳定性,同时也可美化系统的操作界面。




高工
2021-03-02 08:41:26     打赏
2楼

看看,学习学习



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]