一、 引言
随着微处理器的广泛应用,越来越多的仪器采用智能化的操作方式,微控制器已经广泛应用到各个领域中,为了使仪器的操作更简便,人机界面更友好,在现代仪器电路中经常采用液晶与按键的搭配方式作为人机接口。液晶不仅功耗低,而且提供的可视化信息丰富。所以采用液晶提供菜单与按键反馈相组合的方式为理想的人机交互方式。根据实际不同的设计,本文主要介绍了在嵌入式系统中按键的软、硬件设计及菜单和程序模式之间的关系。
二、 按键的软、硬件设计
在嵌入式系统中,按键是常用的人机交互接口,其硬件电路设计的质量直接关系着最终产品的使用,决定着用户对产品的第一印象,所以,决不可轻视按键设计在电路中的作用。下面介绍几种常用的按键设计电路及其特点。
1. 端口按键一对一方式
这种方式在所需按键较少的系统中经常采用,其典型电路图1所示。
图.1 简单的按键接口
这种电路简单,成本低,在小型系统经常采用,其中上拉电阻的主要作用是保证I/O引脚不会悬空(即I/O引脚有确定的电平)。由于在实际使用中一般按键按下的时间远远小于按键弹起的时间,而一般单片机的逻辑0输入电流要大于逻辑1输入电流,所以采用电阻上拉的方式可减小功耗。典型上拉电阻取值为10kΩ。
上述电路的主要缺点是抗干扰能差,端口会出现抖动现象,容易产生误判,必须在软件中采用“防抖”处理。一般采用的方法为检测到按键信号后延时大于 5ms(一般为10ms-20ms)重新读取,并与前值对比若相同视为一次有效,否则丢弃。推荐的改进电路为采用MAX6816-MAX6818替换上拉电阻,在硬件中加入“防抖”处理。采用MAX6816改进后的电路与芯片输入、输出的效果对比分别如图2、3所示。
图.3 MAX6816输入、输出的端口电平对比
MAX6816-MAX6818分别为单、双、八通道的消抖按键芯片,并且具有ESD保护功能。使用该芯片改进电路后,不仅简化了软件的设计(可直接视端口电平改变为有效变化),更提高了电路的抗干扰能力,使最终产品更容易通过EMC测试。
2. 矩阵式键盘设计
在所需按键较多的系统中常采用矩阵式按键设计控制工程网版权所有,该方式可大大节约端口的占用(N为偶数时,N个端口最多可控制(N/2)2个按键),与一一对应的按键设计相比其主要缺点是扫描速度相对较慢。典型电路如图4所示。
图.4 矩阵式键盘接口
其控制端口分为A、B两组,A组用来驱动产生逐位送出的低电平信号,同时保持其它位为高电平。对A组的每位低电平信号都要在B组执行一次扫描。由电路特性可知,每个按键对应唯一的一组A、B组合,所以通过扫描可确定按键的位置。对矩阵式按键的扫描也要注意防抖问题,虽然矩阵式按键的扫描速度比一一对应的方式慢,但嵌入式系统运行在微秒甚至更低的数量级上,所以机械抖动问题依然要靠软件解决,在实际使用中也可根据需要由专用芯片改进设计。
3. A/D采样式具有优先级的键盘编码设计
很多的新型51单片机、ARM等微控制器都集成了A/D功能,而且往往A/D通道较多。所以在数字端口资源紧张而模拟端口资源充裕的情况下可考虑采用模拟通道作为部分按键的接口。该方法可在不增加成本的情况下,可有效的扩充按键资源,设计电路如图5所示,其中分压电阻的选取要特别注意,一定要保证在不同按键按下时www.cechina.cn,A/D端口的得到电压要有充分的间隙,并适当减小接地电阻阻值。由电路分析可知,这种按键组合具有优先权问题,KEY3的优先权最高,所以当KEY3按下时,KEY1、KEY2实际上被屏蔽了。
图.5 A/D采样式优先权编码键盘接口
由于A/D接口表面上为多通道设计,而在芯片内部往往只有一个A/D转换器通过模拟开关切换通道选择,所以在软件设计上要注意保证A/D通道的稳定时间,即通道切换后要等待几个时钟周期才能启动A/D得到有效值。对于这种模拟按键的抖动处理比数字按键要烦琐,首先硬件上要保证各按键电平之间有充裕宽度,即充足的A/D冗余位数来“防抖”。其次www.cechina.cn,由于分布电容、机械振动和接触电阻等的影响,会导致按键电平抖动,出现瞬时偏低的现象,所以可采用连续快速多次转换取最大值的方法判定有效键。
4. 采用专用的键盘芯片
采用专用芯片设计的键盘接口电路,具有操作简便,可靠性好等优点,但会提高产品造价,所以在实际使用时可根据需要进行选取。8279作为常用的并口键盘控制芯片可控制8×8的键盘矩阵,但其本身为并口传输,而且控制线较多,所以占用很多外部资源。ZLG7290为新型的I2C通讯的键盘、LED控制芯片,最多可控制8×8的键盘矩阵。由于采用了串行总线的通讯方式,所以占用I/O资源少,效率高。关于采用芯片设计键盘的电路与操作可参考有关数据手册,在此不再赘述。
随着半导体工业的发展,CPLD以其功能强大、开发成本低和保密性好等优点已经成为硬件设计中不可缺少的组成部分之一。在数字电路设计中,设计者完全可以根据自己的实际需要编写一片具有键盘扫描、液晶驱动、打印控制等诸多功能的CPLD芯片。
三、 菜单的结构、程序设计模式及键盘的搭配设计
菜单与键盘一起可构成良好的人机交互界面,与LED和其它提示信号相比采用液晶提供的菜单方式可提供给用户更多的帮助信息,更友好的交互方式。但如果菜单的结构设计混乱,提示信息不明确,则可能会让用户不知所措,会比没有菜单的系统更难以使用,所以良好的菜单与程序流程设计是产品成功的重要保障。菜单设计务必要做到结构清晰、功能明确,帮助语句无歧义。良好的菜单设计除包括基本的工作流程选择外,还应包括重要决策的再次确定和功能返回按键,以防止操作人员的失误。在设计中对不同的功能可根据实际情况分组,采用子菜单方式,以简化人机操作界面。“一键多意”式设计一定要注意区分“抖动”与“双击”——它们的时间间隔有着显著的差别。在按键事件的处理上也分为检测到按键事件即进行处理和待按键弹起后再进行处理两种,可根据实际需要进行选取。
具有菜单提示的系统因交互信息丰富可采用两套按键式结构,一套用来执行选择功能即上、下、左、右键,另一套用来输入数据、确定操作。减少按键的数量可降低产品的操作难度,良好的按键、菜单搭配还可防止产品的误操作,屏蔽不应执行的动作,提高产品的容错性。在实际设计中还要采用程序流程图辅助设计。
在裸机编程中,菜单的结构一般与程序的结构相对应,多采用按键事件触发式程序设计结构CONTROL ENGINEERING China版权所有,在C语言中通常采用的按键散转结构是switch case 结构。值得说明的是嵌入式C语言设计与台式机不同,在没有使用OS的嵌入式系统中嵌入式程序为一个超级循环结构,即程序一般一直运行直至系统掉电。所以在执行完散转功能后,程序不是退出而是返回到某个初始状态等待新的命令。为了防止程序受干扰误入不正常的选择状态可在的正常的散转功能后加入“default : *(void(*)())0)(); ”语句,该语句使程序返回到最初状态,即软复位操作。在不启用的中断入口处,以及检测到某些错误时也可使用“*(void(*)())0)();”语句使系统软复位。
在嵌入式系统中,与裸机编程相对应的是操作系统的使用www.cechina.cn,在资源比较丰富的系统中常采用RTOS,在RTOS中按键与菜单的组合常常用来进行任务的切换。使用RTOS的好处主要是堆栈的管理、中断的重入和不同任务之间的切换等问题都由系统来完成,而设计者只专注于任务的设计,可以缩短研发周期。但RTOS的使用并不是没有代价的,首先RTOS的使用并不是免费的,而且操作系统本身也会占用MCU资源,,所以在很多小型单片机上并不适用。
另一种设计模式是时间触发式模式,时间触发式模式是基于定时器中断设计的任务调度模式,它采用函数的指针方式调度满足条件的任务执行。与RTOS相比,时间触发式模式更适合功能较小的小型MCU(如51系列),它有更好的可预测性,占用更少的CPU资源,程序结构更明确、透明度高。在这种模式下,由定时器每隔一定的时间间隔调度刷新函数,确定可执行的函数(功能),再通过主函数中的调度函数根据函数指针依次调用具备条件的函数。在调度器(调度函数)中还可加入设置CPU闲置的语句,可在无任务时使CPU处于idle状态,以降低系统的功耗和提高抗干扰的能力。在这种小型系统中,因功能相对简单,菜单结构也可设计的尽量简单,明确提出可执行的任务,减少CPU在刷新显示上的时间。按键扫描子程可作为一项任务由调度器每隔一定的时间间隔调度,如果两次调用的时间间隔大于5ms则可省略防抖功能。按键信息在这里同样不会引起功能的立即执行(程序的跳转),而是改变某个函数(功能)的条件位,使其在下次调度中得到执行。由于调度器两次调度的时间间隔很短,所以并不会有明显的延误现象,可以满足大多数的应用场合。
四、 结束语
针对不同的硬件,本文介绍了在嵌入式系统中按键的软、硬件设计及不同设计的优缺点,并讨论了菜单设计和程序模式之间的关系。