
任务1 键盘控制原理
键盘是一组按键的集合,它是最常用的单片机输入设备。操作人员可以通过键盘输入数据或命令,从而实现简单的人-机通信。
键盘按其结构形式可分为编码键盘和非编码键盘两种。编码键盘通过硬件的方法产生键码,能自动识别被按下的键并产生相应的键码值,该键码值以并行或串行的方式发送给CPU,它接口简单,响应速度快,但需要专用的硬件电路;非编码键盘通过软件的方法产生键码值,它不需要专用的硬件电路,结构简单,成本低廉,但响应速度没有编码键盘快。为了减少电路的复杂程度,节省单片机的I/O端口,因此非编码键盘在单片机应用系统中使用得非常广泛。
1.消抖动
键盘是由按键构成的,键的闭合与否通常用高、低电平来进行检测。当键闭合时,该键为低电平;当键断开时,该键为高电平。在默认状态下(即平时),按键的两个触点处于断开状态,按下键时它们才闭合。
按键的闭合与断开都是利用其机械弹性来实现的。由于机械弹性的作用,按键 (K) 在闭合与断开的瞬间均有抖动过程,如图4-1所示。抖动时间的长短由按键的机械特性决定,一般为5~10ms。
若在触点抖动期间检测按键的通/断状态,可能导致判断出错,即按键一次被按下或释放,可能被错误地认为是多次操作,这种情况是不能容忍的。为了克服按键触点机械抖动所导致的错误,使CPU对键的一次闭合仅作一次键输入处理,必须采取消抖动措施。

图4-1 按键时的抖动
消抖动的方法分为硬件方法和软件方法两种。例如,采用RS触发器(双稳态触发器)构成的双稳态消抖动电路,采用单稳态触发器构成的单稳态消抖动电路,以及滤波消抖动电路,这些都是硬件消抖动方法,如图4-2所示。在图4-2(a)中,当按键K未被按下时,输出为1;当K被按下时,输出为0。此时即使因按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),只要按键不返回原始状态A,双稳态电路的输出状态不会改变,保持为0。也就是说,即使B点的电压波形是抖动的,但经双稳态电路后,其输出仍为矩形波。

图4-2 硬件消抖动方法
软件消抖动方法就是当检测到有键被按下时,执行一个10~20ms的延时子程序,然后再次确认该键是否仍保持闭合状态,若仍闭合则确认为此键被按下,从而消除了抖动的影响。软件消抖动流程图如图4-3所示。

图4-3 软件消抖动流程图
2.键盘结构
键盘可以分为独立连接式键盘和矩阵式键盘两类,每一类按其译码方法又可以分为编码及非编码两种类型,本书介绍的范例中所使用的键盘均为非编码键盘。
独立连接式键盘是直接用I/O端口线构成的单个按键电路,其特点是每个按键接一根输入线,占用一根I/O端口线,各键的工作状态互不影响,如图4-4所示。

图4-4 独立连接式键盘电路
独立连接式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O端口线,所以在按键较多时,占用I/O端口线较多,不宜采用。
矩阵式键盘又称行列式键盘,它是用I/O端口线组成行、列结构,行线与列线分别连接在按键开关的两端,列线通过上拉电阻接至电源,使无键被按下时列线处于高电平状态。按键设置在行、列线的交叉点上。当按键被按下时,行线与列线发生短路。矩阵式键盘具有占用I/O端口线较少,软件结构较复杂等特点,适用于按键较多的场合。用3×3的行列结构可构成9个键的键盘,用4×4的行列结构可构成16个键的键盘,如图4-5所示。

图4-5 矩阵式键盘