人机交互接口
⑵非编码键盘 这种键盘只简单地提供按键的通或断状态, 而按键的识别、键值的确定等工作全靠软件完成,需要程 序控制扫描键盘,判断是否有键被按下、哪个键被按下。 非编码键盘硬件电路简单,成本低,但占用CPU的时间较 长,相当于用时间换取硬件电路的简单化。
非编码键盘又可分为独立式键盘和行列式键盘
独立式键盘是指其中每一个按键均有一条输入线与计算机 的接口相连,如图所示,每个按键的电路相互独立。结构 简单,连接方便,但缺点是有多少个按键,就需要多少条 输入线。这种键盘结构占用硬件资源较多,适合按键不多 的场合。
2、行列式键盘的识别技术
行列法
扫描法中,为了提高效率,识别键盘中有无按键按下是由 行线送出全扫描字、列线读入行线状态来判断的,这叫做 按键发现。具体确定键盘中哪一个键按下可由行线逐行置 低电平后,检查列线输入状态来判断,这叫做按键识别。
扫描法按键发现的原理如下图所示:
行列式键盘是指在键盘中 按键数量较多时,为了减 少I/O口的占用,按键按行 和列来排列,成为矩阵形 式,如图所示,又叫矩阵 式键盘。以4×4键盘为例, 这种方式可排列4×4=16 个按键,但与计算机的连 线线仅为4+4=8条。这种 结构适合按键较多的场合。
6.1.2 键盘的去抖动技术
按键的按下与释放一般是通过机械触点的闭合与断开来实 现,由于机械触点的弹性振动,按键在按下时不会马上稳 定地接通,在弹起时也不能立刻完全地断开,因而在按键 闭合和断开的瞬间均会出现一连串的抖动。如图所示:
6.1.1 键盘的种类
根据键盘功能和结构形式的不同,通常把键盘分为两种基 本类型:编码键盘和非编码键盘。
⑴编码键盘 编码键盘的按键识别由专用的硬件编译码电路 实现,按下键后,键盘电路便能自动产生按键代码,如 ASCII码、EBCDIC码等。编码键盘使用方便,键盘码产 生速度快,占用CPU时间少,但对按键的检测与消除抖动 干扰是靠硬件电路来完成的,因而硬件电路复杂、成本高, 价格较贵,在单片机系统中应用较少
扫描法按键识别的原理如下图所示:
当按键发现部分已经发现有按键按下时,就需要进一步确 定具体是哪一个按键被按下,也就是需要具体确定按键的 具体位置。方法是先让行线输出第0行为0,其它行都是1, 这时读入列线,查看所读入的列线信号是否全为1,如果 全为1,则说明该键不在第0行(如图a所示);再让行线 输出第1行为0,其它行都为1,再读入列线信号,查看所 读入的列线信号是否为1,同样如果全为1,则说明该键不 在第1行(如图b);如是再查看第2行,第3行等等。当某 一行输出对应的列输入不全是1,则说明按键在该行,同 时,根据列输入中为0的位也能够确定该键所在的列,如 图d中所示,说明该按键在第3行第2列。
1、硬件去抖动技术
即在键开关输出端与计算机接口之间加一个硬件消抖电路, 如RC滤波电路、单稳态触发器电路、双稳态触发器电路 (R-S触发器)等。
其中RC滤波去抖动电路如图所示:
双稳态去抖动电路如图所示
由于硬件去抖技术增加了电路的复杂性,故适用于按键数 目较少的场合。
2、软件去抖动技术 根据下图我们可以发现,当有键按下或释放时,我们可以 利用软件延时一段时间再检测就会“躲过”这个不稳定的 抖动期,而进入稳定期。例如当我们检查到有键按下以后 延时一段时间(10ms~20ms),再检查一次看是否有按 键按下,若这一次检查不到,则说明前一次结果为干扰或 者抖动;若这一次检查到有按键按下,则说明信号已经稳 定,确实有键按下。同样,在监测到有按键释放时,也是 先延迟一段时间,然后再检查按键是否释放,如果又检测 到按键释放后则说明按键已稳定释放。
第6章 人机交互接口
人机交互接口是指人和计算机之间建 立联系、交流信息的有关输入/输出设备的 接口。它是计算机与用户之间最直接的信 息通道,是计算机设备的外在表现。对于 一个智能设备来讲,设计人性化的人机接 口,方便用户使用,变得越来越重要。
6.1 人机交互输入设备—键盘 6.2 人机交互输入设备—触摸屏 6.3 人机交互输出设备—LED 6.4 键盘、LED显示接口电路 6.5 人机交互输出设备—LCD
一般情况下,正常的按键操作其开关动作时间(抖动 时间加上稳定时间)大约100ms左右,而抖动时间一般都 不超过10ms。
按键的抖动会造成按一次键产生的开关状态被CPU误 读几次,即按键一次按下或释放被错误地认为是多次操作。 为了使CPU能正确地读取按键状态,必须在按键闭合或断 开时,消除产生的前沿或后沿抖动,去抖动的方法有硬件 方法和软件方法两种。
为了发现按键按下,行线(输出信号线)输出全0信号, 列线通过上拉电阻连接到Vcc,若无按键按下,读列线 (输入信号线),读到的信号各位应该为全1(如图a所 示)。当有任何一个按键按下时,该按键将相应的行线与 列线短路,而行线输出全是0,所以列线读到的信号应该 至少有一个位不是1(如图b所示),哪一个位不是1,说 明该按键在哪一列。
有了按键所在的行列值,可以转换成按键代码(键值), 根据键值的不同,执行不同的程序,即可完成按键的输入 功能。
(2)线反转法
线反转法也是一种常用的按键识别方法。这种方法非常简 单。通过前面的扫描法,我们可以发现在按键发现的过程 中,我们已经能够查找出按键所在的列,我们只需要把行 和列的角色互换一下,让列作输出,行作输入,实际上我 们就可以确定按键所在的行,这样我们只需要两步就可以 确定按键位置。其原理如下图所示:
软件键盘去抖动处理流程如 图所示。
这种软件去抖动的方法最大 的特点是成本低,实现起来 比较灵活,在键数目较多时, 大多采用软件延时法去抖动。
6.1.3 键盘的识别技术
1、独立式键盘的识别技术
独立式键盘,每个按键连 接了一个独立的输入端口, 所以只要CPU定时去查看 各个输入口的状态,只要 定时时间合适,即可识别 出相应的按键状态。但是, 如果查询时间不合适或者 按键动作太快,就有可能 漏判。为防止这种情况的 出现,可以利用中断技术 实现,具体实现电路如图 所示: