基于LPC2478的网络型电能质量监测装置人机交互功能研发

发布者:明理厚德最新更新时间:2012-08-21 来源: 维库 关键字:LPC2478  电能质量监测  人机交互 手机看文章 扫描二维码
随时随地手机看文章

0 引言

非线性、非对称、非平稳电力设备的大量使用,给保证供电质量带来了严峻的挑战。电能质量问题已经越来越引起用户和供电部门的重视。采取技术措施来对电能质量进行改善,首先就要对电能质量进行及时准确的监测。具有图形化接口的人机交互功能作为必不可少的功能之一,在电能质量监测装置的开发中占有重要的地位。文献[3-4]都实现了人机交互功能,但文献[3]只移植了μC /GUI 图形接口,而没有使用μC /OS-Ⅱ,系统对多任务的支持不够;文献[4]中完成了一定的人机交互功能,图形化程度不高,而且它们都是基于S3C44B0X 处理器。LPC2478 作为32 bit ARM7 处理器,集成了非常丰富的功能模块,可以大大减少外部芯片的使用,显着降低开发成本。在LPC2478 上进行人机交互功能的研究有很大的实际意义。本文采用LPC2478 微处理器,以RealView MDK 为开发平台,移植了实时嵌入式操作系统μC /OS-Ⅱ和μC /GUI 图形接口,在此基础上进行了用户程序的编写,最终实现了网络型电能质量监测装置的具有图形化接口的人机交互功能。

1 硬件结构及功能

1. 1 硬件结构

硬件结构图如图1 所示,网络型电能质量监测装置采用了双CPU 及双口RAM 的结构,2 个CPU 分别采用的是DSP( TMS320F2812) 和ARM(LPC2478)。TMS320F2812 的高速保证了装置的实时性,LPC2478 提供的丰富的接口大大增强了装置的可扩展性。双口RAM 采用的是IDT70V9289。其中,DSP 的主要作用是进行电力信号的采集、计算与分析及实现故障报警、事件记录;ARM 则主要负责人机交互功能和通信功能。

网络型电能质量监测装置硬件结构框图
网络型电能质量监测装置硬件结构框图
图1 网络型电能质量监测装置硬件结构框图。

装置中人机交互功能在硬件方面主要通过LPC2478 微处理器和6 个按键及LCD 液晶屏(AT056TN52)实现。装置所采用的液晶屏TFT-LCD 为AT056TN52,它有18 根数据线,设计中将其与LPC2478 处理器的数据总线相连; 解析度为640 × 480像素,每个像素可以显示最多26 万种颜色,完全可以满足装置的显示需求。

键盘采用的是6 个按键,LPC2478 的GPIO 中断功能使键盘的实现变得非常简单。该装置中每个按键都与I /O 口直接相连,另一端接地。为每个按键并联上一个电容可以有效防止按键抖动。

1. 2 网络型电能质量监测装置的功能

装置的主要功能:① 基本电力参数监测功能;② 电能质量参数监测功能;③ 人机交互功能;④ 报警功能;⑤ 网络通信功能。

针对装置丰富的功能,需要有强大的人机交互功能做为支持。为便于操作,装置的人机交互界面需要以中文窗口界面实现。用于人机交互功能的窗口分为两类:对话框和菜单。对话框的功能是参数的设置与显示,菜单的功能是为用户提供选择界面,接受用户的选择,并根据选择结果运行相应的程序。

设计人机界面时,首先要根据实际需求确定需要几级菜单,然后确定各级菜单中选择项的数量,最后确定每个选择项对应的窗口。装置的菜单结构如图2 所示。菜单中每个汉字为24 × 24点阵,对话框中的小字为21 × 21 点阵。本文设计了三级菜单,在屏幕下方显示一级菜单,选择一级菜单中的对应项后弹出二级菜单,二级菜单下又包含三级菜单。用户可以通过方向键以及确认键来进行选择并加以确认。

装置菜单结构图
装置菜单结构图
图2 装置菜单结构图。

2 人机交互功能的软件开发

要实现装置的有图形接口的人机交互功能,必须进行嵌入式操作系统和图形接口在LPC2478微处理器上的移植。嵌入式操作系统的使用可以大大提高装置的可靠性和实时性,图形接口的移植则可以显着提高图形化系统的开发效率,缩短开发周期。在比较了几种主流的图形接口之后,最终选择μC /OS-Ⅱ嵌入式操作系统和μC /GUI图形接口,因为它们的代码量少,而且功能强大,非常适合移植在资源有限的嵌入式硬件平台上。
[page]

2. 1 μC/OS-Ⅱ的移植

μC /OS-Ⅱ嵌入式操作系统的移植工作包含以下几个内容:编写硬件初始化启动代码;编写设备驱动代码;修改操作系统与硬件相关的代码。

所谓启动代码,就是处理器在启动的时候执行的一段代码,主要任务是定义程序入口指针;设置异常向量;初始化处理器各模式下的堆栈和寄存器;配置 CPU 时钟源;初始化系统功能模块;跳转到C 语言主程序中等等。由于以上的操作均与处理器体系结构和系统配置密切相关,所以一般由汇编来编写。在装置中示意性的启动代码为:

PRESERVE8

Vectors LDR PC,Reset_Addr

LDR PC,Undef_Addr

LDR PC,SWI_Addr

LDR PC,PA^_Addr

LDR PC,DA^_Addr

LDR PC,IRQ_Addr

LDR PC,FIQ_Addr

Reset_Addr

为每一种处理器模式初始化堆栈;

地址重映射,设置MEMMAP = 1;

配置时钟源,设置Fpclk = 72M;

初始化FLASH;

初始化SDRAM;

IMPORT __main

LDR R0,= __main

BX R0;跳转到主程序中

设备驱动代码是操作系统和硬件之间的桥梁。通过驱动代码,用户可以不用了解具体硬件的细节,只需调用驱动层所提供的函数就能对硬件进行操作。在移植μC /OS-Ⅱ时,亦只需根据硬件环境编写必要的硬件驱动程序即可。在此移植中,涉及到人机交互功能的硬件除微处理器LPC2478 外主要是键盘和液晶,液晶部分的驱动代码包含在了μC /GUI 图形接口的移植步骤中。而键盘的主要功能为接受用户的输入,在微处理器LPC2478 中,可以使用I /O 中断的功能来实现对键盘输入的监测,驱动代码则为键盘的中断处理程序:

void Key_Handler(void)

{ DWORD key_n = 0;

key_n = IO0_INT_STAT_F; / /读取中断状态

IO0_INT_EN_F & = 0xE07F8FFF; / /禁止中断

IO0_INT_CLR | = 0xFFFFFFFF; / /清除中断

if ((key_n&0x00800000) = = 0x00800000)

{ OSMboxPost(Keybox,(void * )1);}

if ((key_n&0x01000000) = = 0x01000000)

{ OSMboxPost(Keybox,(void * )2);}

if (key_n&0x02000000) = = 0x02000000)

{ OSMboxPost(Keybox,(void * )3);}

if ((key_n&0x08000000) = = 0x08000000)

{ OSMboxPost(Keybox,(void * )4);}

if ((key_n&0x10000000) = = 0x10000000)

{ OSMboxPost(Keybox,(void * )5);}

if ((key_n&0x00001000) = = 0x00001000)

{ OSMboxPost(Keybox,(void * )6);}

IO0_INT_EN_F | = 0x1F807000; / /开启中断

}

编写完硬件初始化启动代码和设备驱动代码之后,在修改操作系统与硬件相关的代码之前,应该了解μC /OS-Ⅱ的体系结构如图3 所示。移植μC /OS-Ⅱ,最主要的工作就是移植与硬件相关的3 个文件,即OS _CPU. H、OS _CPU_C. C 和OS _CPU_A. ASM。OS_CPU. H 中含有用#define 定义的与处理器有关的常量、宏和类型定义。通过对此处定义的修改,可以使源代码中对数据类型的使用不依赖于具体的处理器。移植时,只要使处理器、编译器和 μC /OS-Ⅱ三者之间数据类型统一即可。在此文件中还有一个μC /OS-Ⅱ对堆栈增长方式的定义OS_STK_GROWTH,由于Keil 只支持递减堆栈,因此,此处需要定义OS _ STK _GROWTH 的值为1。OS_CPU_C. C 文件中,需要进行的工作是编写任务堆栈初始化函数OSTask-StkInit()。该函数在创建一个任务时被调用。根据微处理器的寄存器结构,就可以确定在本次移植中针对LPC2478 应该使用的任务的堆栈结构,从而可以写出堆栈初始化函数代码。在OS_CPU_A. ASM 文件中,有4 个函数需要编写,分别是启动最高优先级就绪任务函数OSStartHighRdy(),时钟节拍中断服务子程序OSTickISR(),任务级任务切换函数OS_TASK_SW( ) 及中断级任务切换函数OSIntCtxSw()。

μC/OS-Ⅱ的体系结构图
μC/OS-Ⅱ的体系结构图
图3 μC/OS-Ⅱ的体系结构图。[page]

2. 2 μC/GUI 的移植

μC /GUI 是一种用于嵌入式应用的图形支持软件,它被设计用于为任何一个图形LCD 的应用提供一个有效的不依赖于处理器和LCD 控制器的图形用户接口。μC /GUI 的软件体系模块结构如图4 所示。移植的过程具体可以分为以下几步:按照需要,定制自己的开发环境;修改配置文件;编写硬件接口函数及LCD 驱动函数;编译、链接、调试例子程序。其中又以修改配置文件,编写硬件接口函数及LCD 驱动函数最为主要。

μC/GUI 的分层模块结构
μC/GUI 的分层模块结构
图4 μC/GUI 的分层模块结构。

(1) 对LCDConf. h 的修改。LCDConf. h 文件中包含的宏定义主要是LCD 宏和LCD 控制宏,用于定义所使用的LCD 的像素尺寸和所选择的功能,以及如何对LCD 控制器进行访问。在装置中为:

#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 人机交互程序结构示意图。

键盘输入部分,本装置采取的是I /O 中断方式,LPC2478 的GPIO 端口0 和端口2 的每根引脚都可以产生中断信号。每个中断信号可编程设置为上升沿触发、下降沿触发或脉冲触发。GPIO 中断信号与VIC 的外部中断3 共享同一个中断通道。该装置使用6 个按键,分别连接到GPIO 端口0 中的6 根引脚。设置GPIO 对应引脚的中断为下降沿触发。当按键按下时,对应的引脚上产生一个下降沿触发GPIO 中断,在中断处理程序中读取GPIO 下降沿中断状态寄存器的值,可以判断出按键按下,从而进行对应的处理。

编写液晶显示部分程序之前,必须对各个任务的优先级进行合理的分配,本装置的显示界面主要包括实时时间显示任务,三级菜单显示任务和各个具体显示任务或设置任务。任务优先级的分配上,实时时间显示的任务优先级最低;具体显示或设置任务的优先级要低于菜单显示任务;下级菜单显示的任务优先级要低于上级菜单显示的任务优先级。

功能显示菜单任务的触发条件有:① 上级菜单显示任务中的确定键;② 下级菜单显示任务中的返回键。需要注意的是返回上级菜单需要使用唤醒函数OSTaskResume(N),如果是从下级菜单返回,则需要把下级菜单的图像用背景图像覆盖。
[page]

功能显示菜单任务的流程如图6 所示。

功能菜单显示任务流程图
功能菜单显示任务流程图
图6 功能菜单显示任务流程图。

具体显示结果或设置任务的触发条件只有一种,就是最低级菜单显示任务中的确定键。在具体显示结果任务中,用确定键来返回顶级菜单。

在具体的设置任务中,按下确定键则保存设置结果,然后返回顶级菜单,按下取消键则不保存设置结果,直接返回顶级菜单。

在整个网络型电能质量监测装置所提供的功能中,实时时钟显示任务的重要性最低,因而给它分配的任务优先级也最低。实时时钟显示任务的触发条件为系统的启动,即该任务在系统启动时创建,在系统运行期间一直为就绪任务,不会被删除。LPC2478 的实时时钟功能是否正常,预分频寄存器的设置正确与否是关键因素。据数据手册中的说明,本装置采用的Fpclk 为18 M,故预分频寄存器的整数部分:
 

  预分频寄存器的小数部分:

  装置人机显示界面的三级菜单和设置对话框的实例,如图7、8 所示。

装置人机界面三级菜单示例

图7 装置人机界面三级菜单示例。

装置人机界面设置对话框示例



图8 装置人机界面设置对话框示例。

3 结语

(1) 基于嵌入式系统研发图形化人机交互功能的过程为:首先根据所要求的功能确定硬件结构,然后选择合适的嵌入式操作系统及图形接口并将其移植到所选的硬件平台上,最后编写应用程序以实现预期的功能。

(2) 电能质量监测装置对实时性要求比较高,采用μC /OS-Ⅱ操作系统并通过条件编译对其进行裁剪以减少程序存储空间并提高执行效率,再加上对各任务优先级进行合理分配以进行有效地调度,完全可以满足实时性的要求。

( 3 ) 在RealView MDK 开发环境下基于LPC2478硬件平台成功移植了μC /OS-Ⅱ嵌入式操作系统,移植后的操作系统在多任务环境下运行良好,为以后各种应用奠定了基础。

(4) 在移植成功μC /OS-Ⅱ嵌入式操作系统的基础上,成功移植了μC /GUI 图形接口,并在此基础上进行了网络型电能质量监测系统人机交互功能的开发,最终完成了预期任务。目前装置已投入了实际应用。应用情况表明:装置的人机交互功能界面友好,操作简单方便,工作可靠,性能稳定,得到了用户好*。

关键字:LPC2478  电能质量监测  人机交互 引用地址:基于LPC2478的网络型电能质量监测装置人机交互功能研发

上一篇:基于LPC2220低压无功补偿控制器设计
下一篇:基于LPC2131的嵌入式锂离子电池检测系统

推荐阅读最新更新时间:2024-03-16 13:06

2020年中国汽车人机交互数据研究
汽车人机交互是指人与汽车通过一定的交互方式完成信息交换的过程,主要有语音、手势、人脸、AR、全息影像、指纹识别等。 语音交互在车内发展已达十几年,2019 上半年装配率已达 28.7%,新上市车型装配率更高。从功能看,车内语音交互正在从信息娱乐(导航、多媒体等)向车体控制(车窗、天窗、车灯、雨刷、后备箱等)和生活服务(车家互联、车内购物等)方向延伸,语音技术和车机协议、车内生态正在逐渐打通。 手势识别于 2015 年率先搭载于宝马,2018 年起陆续搭载于君马 SEEK 5、奇瑞 5X、小鹏 G3 尊享版等国内车型,主要用于控制车内屏幕显示系统,如音乐播放、音量调节、地图缩放等,作为安静环境下的补充性交互方式。 人脸识
[嵌入式]
2020年中国汽车<font color='red'>人机交互</font>数据研究
汽车智能升级 OLAMI可助力打造车载人机交互解决方案
近来,新造车公司们的消息占据了科技领域的媒体头条。先是FMC拜腾南京的工厂开工、小鹏汽车1.0版正式下线,又有威马汽车EX5亮相和蔚来ES8上市,这或许意味着新造车运动即将成熟落地,汽车革命已经开始。   中国产业信息发布的《中国智能汽车行业发展及智能汽车行业未来市场空间分析》显示,在汽车产业,智能驾驶市场空间将从2014年的394亿元上升到2020年的2353亿,传统 汽车智能 升级已经成为大势所趋。围绕着汽车产业链的无人驾驶、消费创新、汽车出行等赛道上的较量才已然开始。面对这样一个万亿量级的大市场,全新的技术、服务模式和商业生态带来了产业颠覆的机会。   新造车公司们研发生产的汽车和传统汽车主要有两大差别,新能源和智能交互。在
[嵌入式]
小i机器人之后又有小e 人机交互准确率达95%
  国内银行业首款实体智能机器人交行“小e”26日正式亮相。这位长相标致、声音甜美、高智商与高情商兼具、还能自由行动的机器人,很快获得了交通银行软件开发中心研发推广部处长宋占军的好感,顺利通过了在发布会现场的“面试”,成为交通银行的新员工。   “小e”是智能机器人产业上下游合作的典型案例。实体“小e”的身体来自于韩国的Future Robot,小i提供思考的“大脑”,交行创造典型的金融行业应用场景。   在推动智能机器人产业化发展的进程中,小i机器人发现“从软到硬”是智能机器人发展的趋势。其最擅长的正是智能交互,特别是在金融领域,目前机器人交互的准确率通常都在95%以上。   当天,第十九届中国软博会系列活动之上海专场——由上海
[机器人]
机器人未来发展之十大关键技术详解
  当前各个国家对机器人技术都是非常的重视,人们生活对智能化要求的提高也促进了机器人的发展,在这样的背景下,机器人技术的发展可以说是一日千里,未来机器人将在以下技术的基础上飞速发展。   人机交互技术   东芝在本周举办的 CutTIng-EdgeIT& Electronics Comprehensive ExhibiTIon (CEATEC)展会上发布了一款全新人形交互机器人,而其最大特色就是可以通过手语与人交流。   据悉,多亏了关节中内置的43个电动机,这个名叫 AikoChihira 的女性角色机器人的肢体运动相当自然流畅,这也让手语表达成为了可能。不过,机器人动作模拟技术目前还存在诸多限制,东芝计划在2020年以
[嵌入式]
机器人未来发展之十大关键技术详解
智能电视“远程人机交互”如何解决?
随着2013年小米、乐视等互联网公司纷纷进入智能电视及机顶盒产业,带动传统电视厂商纷纷改革,智能电视的性能配置在呈加速度增长的同时,也越来越开始重视“人机交互”的概念。 现在的智能电视一般硬件用ARM平台,软件用Android系统的“双A”平台,支持的操控体验主要是近距离的,比如手机、平板等,主要采用触控方式。但“双A”平台到了电视、机顶盒后,操控方式变成远距离的了,所以需要一个新的操纵方式。 游戏、影视、上网……移动互联时代,传统的电视遥控已无法满足如此复杂的操纵需要。电视厂商也在想尽各种办法来解决这一问题,有的用无线键盘+鼠标,有的用空鼠,还有的在遥控器上加一块触摸板,但这些无疑对于Android系统的支持都不是很好,有很多
[嵌入式]
ZigBee无线传感心电图监视仪技术
  本文设计了基于ZigBee 无线传感网络的家庭远程医疗监护器,通过基于ARM7核的LPC2478提供的集成LCD支持将图像显示出来 ,同时将信号存储在SD卡上,并通过10/100以太网传输给医院,医院反馈信息并将其显示在LCD上,同时社区诊所的协调器网关把诊断结果无线返回给相应的家庭并在家庭LCD上显示出来,用户可以将结果传输到家庭计算机上进行存储。该设计可以方便地构建健康检测网络,不用复杂的操作便可以得到医生的诊断,十分适合家庭用户的使用。   系统实现   该系统中的传感器用来检测心电图的微弱信号,再经过放大滤波等调理之后进行编码,然后通过ZigBee无线模块发送到基于ARM和ZigBee协调器模块的网关,通过外围接口
[单片机]
ZigBee无线传感心电图监视仪技术
三菱电机研发协作式AI改善人机交互 有望用于自动驾驶车
据外媒报道,近日,日本三菱电机公司( Mitsubishi Electric Corporation )宣布已经研发了一种协作式人工智能(AI)技术,通过利用逆强化学习(IRL)来学习和模仿熟练工人的行为,从而增强人类与机器之间的协作。IRL是三菱电机Maisart AI技术的关键特征之一,能够让机器基于相对较少的数据模仿与人类类似的动作。未来,三菱电机将在机器与人类一同操作的工厂和配送点,将新型协作式AI技术测试部署到自动引导车和机器人中,从而进一步改进该技术。最终,该技术有望应用于自动驾驶车辆和其他应用。 (图片来源:三菱电机) 关键特性 1、 在人机同时工作的环境中,提升效率 在人机混合的工作环境中,三菱电
[汽车电子]
三菱电机研发协作式AI改善<font color='red'>人机交互</font> 有望用于自动驾驶车
智能座舱人机交互技术发展与座舱检测的传感器模块应用探讨
智能座舱人机交互技术发展趋势 当前,汽车不仅在动力源、驱动方式和驾驶体验上发生了改变,座舱也告别了传统枯燥的机械和 电子 空间,智能化水平飙升,已经成为继家庭和办公室之外的人们生活中的“第三空间”。通过人脸; 指纹 识别、语音/手势交互、多屏联动等高科技技术,目前的汽车智能座舱在环境感知、信息收集与处理的能力得到显著增强,成为人类驾驶的“智能小助手”。 智能座舱告别简单电子化进入智能助理阶段的一个显著标志是人与座舱的交互从被动式进入主动式,而这个“被动”和“主动”是围绕座舱本身定义的。过往的信息交流主要由人发起,现在人与机器都可以发起,人机交互水平已经成为定义智能座舱产品档次的重要标志。 为实现“互动”式的人机交互,需要让
[汽车电子]
智能座舱<font color='red'>人机交互</font>技术发展与座舱检测的传感器模块应用探讨
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved