微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 按键与菜单在嵌入式系统中的设计与应用

按键与菜单在嵌入式系统中的设计与应用

时间:03-21 来源:互联网 点击:

片设计键盘的电路与操作可参考有关数据手册,在此不再赘述。

随着半导体工业的发展,CPLD以其功能强大、开发成本低和保密性好等优点已经成为硬件设计中不可缺少的组成部分之一。在数字电路设计中,设计者完全可以根据自己的实际需要编写一片具有键盘扫描、液晶驱动、打印控制等诸多功能的CPLD芯片。

三、菜单的结构、程序设计模式及键盘的搭配设计

菜单与键盘一起可构成良好的人机交互界面,与LED和其它提示信号相比采用液晶提供的菜单方式可提供给用户更多的帮助信息,更友好的交互方式。但如果菜单的结构设计混乱,提示信息不明确,则可能会让用户不知所措,会比没有菜单的系统更难以使用,所以良好的菜单与程序流程设计是产品成功的重要保障。菜单设计务必要做到结构清晰、功能明确,帮助语句无歧义。良好的菜单设计除包括基本的工作流程选择外,还应包括重要决策的再次确定和功能返回按键,以防止操作人员的失误。在设计中对不同的功能可根据实际情况分组,采用子菜单方式,以简化人机操作界面。“一键多意”式设计一定要注意区分“抖动”与“双击”——它们的时间间隔有着显著的差别。在按键事件的处理上也分为检测到按键事件即进行处理和待按键弹起后再进行处理两种,可根据实际需要进行选取。

具有菜单提示的系统因交互信息丰富可采用两套按键式结构,一套用来执行选择功能即上、下、左、右键,另一套用来输入数据、确定操作。减少按键的数量可降低产品的操作难度,良好的按键、菜单搭配还可防止产品的误操作,屏蔽不应执行的动作,提高产品的容错性。在实际设计中还要采用程序流程图辅助设计。

在裸机编程中,菜单的结构一般与程序的结构相对应,多采用按键事件触发式程序设计结构,在C语言中通常采用的按键散转结构是switch case 结构。值得说明的是嵌入式C语言设计与台式机不同,在没有使用OS的嵌入式系统中嵌入式程序为一个超级循环结构,即程序一般一直运行直至系统掉电。所以在执行完散转功能后,程序不是退出而是返回到某个初始状态等待新的命令。为了防止程序受干扰误入不正常的选择状态可在的正常的散转功能后加入 “default : *(void(*)())0)(); ”语句,该语句使程序返回到最初状态,即软复位操作。在不启用的中断入口处,以及检测到某些错误时也可使用“*(void(*)())0)();”语句使系统软复位。

在嵌入式系统中,与裸机编程相对应的是操作系统的使用,在资源比较丰富的系统中常采用RTOS,在RTOS中按键与菜单的组合常常用来进行任务的切换。使用RTOS的好处主要是堆栈的管理、中断的重入和不同任务之间的切换等问题都由系统来完成,而设计者只专注于任务的设计,可以缩短研发周期。但RTOS的使用并不是没有代价的,首先RTOS的使用并不是免费的,而且操作系统本身也会占用MCU资源,,所以在很多小型单片机上并不适用。

另一种设计模式是时间触发式模式,时间触发式模式是基于定时器中断设计的任务调度模式,它采用函数的指针方式调度满足条件的任务执行。与RTOS相比,时间触发式模式更适合功能较小的小型MCU(如51系列),它有更好的可预测性,占用更少的CPU资源,程序结构更明确、透明度高。在这种模式下,由定时器每隔一定的时间间隔调度刷新函数,确定可执行的函数(功能),再通过主函数中的调度函数根据函数指针依次调用具备条件的函数。在调度器(调度函数)中还可加入设置CPU闲置的语句,可在无任务时使CPU处于idle状态,以降低系统的功耗和提高抗干扰的能力。在这种小型系统中,因功能相对简单,菜单结构也可设计的尽量简单,明确提出可执行的任务,减少CPU在刷新显示上的时间。按键扫描子程可作为一项任务由调度器每隔一定的时间间隔调度,如果两次调用的时间间隔大于5ms则可省略防抖功能。按键信息在这里同样不会引起功能的立即执行(程序的跳转),而是改变某个函数(功能)的条件位,使其在下次调度中得到执行。由于调度器两次调度的时间间隔很短,所以并不会有明显的延误现象,可以满足大多数的应用场合。

四、结束语

针对不同的硬件,本文介绍了在嵌入式系统中按键的软、硬件设计及不同设计的优缺点,并讨论了菜单设计和程序模式之间的关系。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top