一种基于MC9S08GT60单片机的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 结束语
介绍了多级菜单新的设计模式,仿照栈的数据结构,使菜单设计变得更为简单方便,软件维护更容易,为每个菜单窗口配置一个按键处理回调函数,产生按键中断后,交由回调函数去处理当前窗口上的按键反应。通过安防警报系统实现的实际应用表明,以上方法是切实有效的。同时,这些方法也为其他控制系统的多级菜单设计提供了参考和选择。
CortexTM-M0 LCD显示模块 键盘交互 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)