摘要:为了在无线警报系统上实现数据输入、显示及存储等屏幕显示功能,提出了基于4*4个键盘交互的LCD显示多屏菜单设计方法。以ARM CortexTM-M0內核的微处理器为主控芯片,结合点阵液晶模块HTM12864进行C语言程序系统设计。对菜单数据项和功能函数进行独立设计,使菜单显示窗口化,并为每个窗口配置一个按键处理的回调函数来实现窗口切换。系统运行结果表明,该方法实现简单,占用内存少,操作界面简便,达到设计方法的目的。
随着人们对生活质量要求的提高,“智能家居”已经走入了我们的生活中。智能家居是以住宅为平台,兼备建筑、网络通信、计算机技术、设备自动化,集系统、结构、服务、管理为一体的安全、舒适、健康的居住环境。家居报警系统是智能家居系统的一个重要组成部分,实现智能家居环境下的安防智能化,人机交互界面美观可靠,操作方便等是安防系统发展的趋势。
无线警报系统利用无线通信和传感技术,通过无线传感器网络采集家庭内的信息,并通过无线通信将异常情况及时传输给用户或保安人员,用户远程操作,实现远程防火防盗警报。本文介绍在智能无线警报系统中实现多级菜单功能,方便设置和操作。
在传统的多级菜单的实现办法上,文献提出两点改进:把菜单项数据与功能程序分开和复用菜单项。文献提出了一种基于单片机系统的多级菜单模块化编程方法,使得程序编写效率较高,软件维护简单。文献提出基于飞思卡尔单片机MC9S08GT60控制的LCD人机界面方案,实现了数据通信、字符显示以及波形监测等功能。文献采用一键多义的非编码制键盘用标记转移算法,设计出基于4个键盘交互的多屏菜单系统。
鉴于之前的改进及设计方法,独立LCD显示模块,引入菜单窗口化的设计方法,使菜单项数据和函数功能完全分离,在菜单窗口下分行显示菜单项,同时完善LCD显示与键盘处理交互方法。为智能无线警报器设计开发4 x 4键盘与128x64图形点阵LCD模块交互的程序,在不同菜单窗口下,通过函数指针调用不同的按键处理函数,实现不同菜单窗口之间的切换。具有多级菜单显示结构,可完成分级菜单显示、参数设置及存储等常用功能,而且操作方便快捷。
1 智能无线警报系统结构
智能无线警报系统结构如图1所示,主要由单片机控制模块、GSM通信模块、无线传感器接收模块、LCD模块、电源模块等组成。
各个模块简介:MCU:主控芯片,实现与各模块之间进行数据交换和过程控制。GSM模块:提供GSM通信功能,支持语音和短信收发,SPK和MIC由GSM模块处理,MCU不需要参与,GSM模块通过UART串口与MCU通信,完成警报信息的发送、接收控制和语音通信功能;Buzzer:蜂鸣器,警报时产生蜂鸣声;Siren:警笛,警报时参数警笛声;ASK433模块:接收433Mhz警报信息;Key:包括矩形键盘和各类功能按键,用于用户密码的输入、各类设置和紧急警报等;LCD显示:采用132*64液晶显示模块,通过SPI与MCU通信,可通过键盘完成对警报手机的设置和更改,并将设置和更改数据存储,实现输入数据、显示、存储参数等功能。
2 LCD模块总体设计
2.1 软硬件开发环境介绍
本系统使用的主控芯片为新唐的NUC100,该芯片是32位内嵌ARM Cortex-M0内核的微控制器,运行频率可达50MHz,内建128K字节的Fla sh存储器,4K/8K/16K字节内建SRAM和4K字节用于存储ISP引导代码的ROM。另外还有丰富的外设,如定时器,看门狗定时器,RTC,RDMA,UART,SPI/MICROWIRE,I2C,IS,PWM定时器,丰富的GPIO,PS2,12位ADC,模拟比较器,低电压复位控制盒欠压检测功能。按键类型为4*4的矩阵,即0~9,*,#,OK,↑, ↓,DEL键。本系统使用的LCD显示屏的类型为HTM13264,分辨率是132*64的,显示类型为点阵,数据输入方式为SPI。
软件编译环境为Keil μVision4编译器,μVision4集成开发环境、仿真器、调试器等,提供一个单纯统一的环境,可以快速的编辑、仿真和调试程序。通过μVision4的工具条,就可以实现绝大多数调试和编辑的功能。
2.2 LCD菜单显示需求分析
根据该系统菜单的设计,LCD屏幕分四行显示,每行可以允许显示8个汉字字符,16个英文字符,如图2所示第一行是状态栏,显示感应器注册、通信模块信号量和电池电量,其他三行根据不同场景显示不同的内容,所有设置项目分三级菜单。
2.3 LCD菜单显示原理
菜单显示设计主要分为按键处理和菜单窗口两部分,主要原理是在主程序中设置一个按键处理程序,各菜单窗口利用统一的按键接口函数对按键处理程序中的按键函数指针进行重定向设定,使得按键处理程序能够指向各菜单窗口。每次按键操作完毕,均回到主程序。
2.3.1 菜单窗口实现方法
除状态栏外,将其他所有需要显示的菜单内容窗口化,即空闲窗口,第一级菜单窗口,第二级菜单窗口,第三级菜单窗口,之外还需要增加提示窗口。以窗口为单位来显示,可以简化进入、返回操作的处理。细化窗口下的显示,即将每个窗口分为三行显示,每行的显示内容根据上级窗口的ID来定义。为每个窗口配置一个按键处理回调函数,在收到按键中断后,交由回调函数处理当前的窗口上的回调函数。
2.3.2 行显示实现方法
显示行的类型应该分为可编辑字符型,可编辑密码型和不可编辑类型。行的显示是包含在窗口中的,需要为窗口创建一个显示行的栈,或者是一个显示数组,用来支撑列表式的显示方式。
2.3.3 窗口进入、退出规则
如图3所示,为空闲界面下进入其他菜单的处理规则,其他窗口的处理于此类似。所有非编辑窗口都做超时处理,超时后都要返回到空闲界面。窗口返回时,返回到上一窗口的进入位置。
2.3.4 窗口具体实现方法
包含空闲窗口在内,整个界面的窗口显示共有4个窗口。空闲窗口应该为程序的常驻窗口,即开机后空闲窗口的显示数据就会一直存在于RAM中,其余窗口则是根据按键事件的处理来创建和销毁。由于无法做到动态内存分配,所以窗口的销毁并不会带来内存的释放,而只是数据清除。每一级的窗口显示列表根据菜单树分级的定义应该为一固定值,并为每一个项目条标记一个ID,用作循环显示以及作为类型标记,如图4所示。每个显示窗口都包含3个显示行数据结构,用来为每次屏幕刷新提供数据。每个按键设有专门的程序处理入口。
3 系统运行结果
在新唐NUC100上和HTM13254的硬件平台上,实现了LCD多级菜单的显示,参数设置及存储功能。上电初始化屏幕之后,显示的空闲屏幕通过输入不同的密码进入不同的菜单窗口,当输入正确的安防密码之后,进入安防设置界面,如图5所示;当输入正确的设置密码之后,进入操作设置界面,如图6所示。以上两个不同的窗口下,都可以通过上下键,移动光标,实现翻屏显示;通过确定键进入下一级菜单;通过返回键返回上一级菜单出口或者直接退出到空闲界面。
设置参数时,通过上下键和确认键选择要设置的参数,不可编辑类型,如安防设置窗口,直接按下确定键设置。可编辑字符型,如短信或者电话号码设置,在进入设置界面之后,通过上下键和确定键进入电话号码设置界面,通过上下键选择要编辑的菜单项,此时,按下*号键,进入编辑界面,如图7所示,通过键盘上4*4的键盘矩阵,输入大小写字符及数字,按下确定键,即可保存输入的数据,如图8所示。
实验结果表明,LCD菜单屏显示界面简洁美观,和键盘交互操作方便快捷。LCD菜单的显示程序按模块化设计,不受其他模块程序等其他任何程序的影响。增加键盘有效性检查,视误操作为无效操作,保持在当前窗口,减少了用户的操作量;当无线安防警报系统功能扩增时,LCD模块程序的结构不变,有利于功能扩展。
4 结束语
介绍了多级菜单新的设计模式,仿照栈的数据结构,使菜单设计变得更为简单方便,软件维护更容易,为每个菜单窗口配置一个按键处理回调函数,产生按键中断后,交由回调函数去处理当前窗口上的按键反应。通过安防警报系统实现的实际应用表明,以上方法是切实有效的。同时,这些方法也为其他控制系统的多级菜单设计提供了参考和选择。