基于ARM的网络型电能质量监测装置人机交互研发
一个基于DSP" target=_blank> 随着科技的发展和各种电力电子器件的普及,电网中的谐波含量也越来越多。无源滤波器由于结构简单、运行可靠、维修方便,除滤波外还兼有无功补偿的功能,以及容量可设计成很大而一直被广泛应用。对传统无源LC滤波器予以改进,设计新型配网无源LC滤波回路,并基于DSP" target=_blank> 2. 2 μC/GUI 的移植 (1) 对LCDConf. h 的修改。LCDConf. h 文件中包含的宏定义主要是LCD 宏和LCD 控制宏,用于定义所使用的LCD 的像素尺寸和所选择的功能,以及如何对LCD 控制器进行访问。在装置中为: 键盘输入部分,本装置采取的是I /O 中断方式,LPC2478 的GPIO 端口0 和端口2 的每根引脚都可以产生中断信号。每个中断信号可编程设置为上升沿触发、下降沿触发或脉冲触发。GPIO 中断信号与VIC 的外部中断3 共享同一个中断通道。该装置使用6 个按键,分别连接到GPIO 端口0 中的6 根引脚。设置GPIO 对应引脚的中断为下降沿触发。当按键按下时,对应的引脚上产生一个下降沿触发GPIO 中断,在中断处理程序中读取GPIO 下降沿中断状态寄存器的值,可以判断出按键按下,从而进行对应的处理。 具体显示结果或设置任务的触发条件只有一种,就是最低级菜单显示任务中的确定键。在具体显示结果任务中,用确定键来返回顶级菜单。
图3 μC/OS-Ⅱ的体系结构图。
μC /GUI 是一种用于嵌入式应用的图形支持软件,它被设计用于为任何一个图形LCD 的应用提供一个有效的不依赖于处理器和LCD 控制器的图形用户接口。μC /GUI 的软件体系模块结构如图4 所示。移植的过程具体可以分为以下几步:按照需要,定制自己的开发环境;修改配置文件;编写硬件接口函数及LCD 驱动函数;编译、链接、调试例子程序。其中又以修改配置文件,编写硬件接口函数及LCD 驱动函数最为主要。
μC/GUI 的分层模块结构
图4 μC/GUI 的分层模块结构。
#define LCD_XSIZE (640)
#define LCD_YSIZE (480)
#define LCD_BITSPERPIXEL (16)
(2) 对GUICong. h 的修改。对GUICong. h文件进行修改就是对μC /GUI 相应的功能进行裁减。通过对这个文件的修改,可以决定图形接口是否支持操作系统,是否采用内存设备,是否采用窗口管理器等。在装置中为:
#define GUI_OS (1)
#define GUI_SUPPORT_TOUCH (0)
#define GUI_SUPPORT_MEMDEV1
#define GUI_WINSUPPORT 1
(3) LCD 驱动程序。根据本文所采用的液晶AT056TN52 的数据手册,编写对应的LCD 驱动程序, 在GUI_LCDDriver 文件夹中的LCDDummy. c文件中,有一个函数的修改,它就是LCD_L0_SetPixelIndex( ) 函数。在这个函数中需要根据具体的硬件写出一个在指定位置显示一个指定像素值的语句,因为本次移植所用的外部SDRAM 为LCD 所分配的显示缓存起始地址为0xA0000000,因此,这个语句在装置中为:
* (0xA0000000 + (640 × 2 × y + x × 2)) = PixelIndex
除此之外,还有几个函数需要改写,它们都可以通过调用LCD_L0_SetPixelIndex( ) 函数实现。
主要是以下几个函数:
LCD_L0_Init(); / /初始化显示屏
LCD_L0_ReInit(); / /重新初始化LCD
LCD_L0_Off(); / /关闭LCD
LCD_L0_On(); / /开启LCD
LCD_L0_DrawBitmap(); / /通用绘制位图函数
LCD_L0_DrawHLine(); / /绘制一条水平线
LCD_L0_DrawVLine(); / /绘制一条垂直线
LCD_L0_FillRect(); / /填充一个矩形区域
LCD_L0_XorPixel(); / /反转一个像素
2. 3 人机交互界面程序的编写
在工业上应用的一些图形界面并不需要多么复杂,而是需要显示一些简洁实用的功能界面,μC /GUI 的优势从而也能得到发挥。该装置的人机交互程序结构如图5 所示。在移植成功μC /OS-Ⅱ实时操作系统和μC /GUI 图形界面系统的基础上,装置人机交互界面程序的编写会很方便。
人机交互程序结构示意图
图5 人机交互程序结构示意图。
编写液晶显示部分程序之前,必须对各个任务的优先级进行合理的分配,本装置的显示界面主要包括实时时间显示任务,三级菜单显示任务和各个具体显示任务或设置任务。任务优先级的分配上,实时时间显示的任务优先级最低;具体显示或设置任务的优先级要低于菜单显示任务;下级菜单显示的任务优先级要低于上级菜单显示的任务优先级。
功能显示菜单任务的触发条件有:① 上级菜单显示任务中的确定键;② 下级菜单显示任务中的返回键。需要注意的是返回上级菜单需要使用唤醒函数OSTaskResume(N),如果是从下级菜单返回,则需要把下级菜单的图像用背景图像覆盖。
功能显示菜单任务的流程如图6 所示。
功能菜单显示任务流程图
图6 功能菜单显示任务流程图。
在具体的设置任务中,按下确定键则保存设置结果,然后返回顶级菜单,按下取消键则不保存设置结果,直接返回顶级菜单。
在整个网络型电能质量监测装置所提供的功能中,实时时钟显示任务的重要性最低,因而给它分配的任务优先级也最低。实时时钟显示任务的触发条件为系统的启动,即该任务在系统启动时创建,在系统运行期间一直为就绪任务,不会被删除。LPC2478 的实时时钟功能是否正常,预分频寄存器的设置正确与否是关键因素。据数据手册中的说明,本装置采用的Fpclk 为18 M,故预分频寄存器的整数部分:
实时操作系统 图形接口 电能质量监测装置 人机交互 相关文章:
- 电源设计小贴士 1:为您的电源选择正确的工作频率(12-25)
- 用于电压或电流调节的新调节器架构(07-19)
- 超低静态电流电源管理IC延长便携应用工作时间(04-14)
- 电源设计小贴士 2:驾驭噪声电源(01-01)
- 负载点降压稳压器及其稳定性检查方法(07-19)
- 电源设计小贴士 3:阻尼输入滤波器(第一部分)(01-16)