键盘技术
单片机技术讲座ቤተ መጻሕፍቲ ባይዱ
第三讲:键盘及其接口技术
•键盘设计中应注意的几个问题 •键盘接口的软件设计 •串行显示/键盘接口芯片的用法 的用法
单片机技术讲座
• 在一个单片机应用系统中,键盘和显示是系统中 并不可少的输入输出设备,是控制系统与操作人员 对话的窗口。 •一个安全可靠的控制系统通常具有方便的交互功能, 操作人员可以通过外设键盘灵活地输入各种参数以 调节系统的运行,掌握系统的工作状态。在一些复 杂的应用系统中,为准确判断系统的运行状态和故 障定位,设计人员往往会在程序中加入一些用于系 统定位的代码,一种简便的做法便是额外设置几个 按键,通过按键的组合以及显示状态的不同来判定 系统的工作状况,以便及时了解系统内部运行状态, 一旦出现故障,也可在最短的时间内找出故障原因, 及时恢复。
单片机技术讲座
单片机技术讲座
一、键盘设计中应注意的几个问题 •键盘接口类型的选择 键盘接口类型的选择 •多键和重键的处理 多键和重键的处理 •键盘的防抖动技术 键盘的防抖动技术
单片机技术讲座
1.键盘接口类型的选择 1.键盘接口类型的选择 • 键盘的两种接口方式:独立式和行列式 键盘的两种接口方式: • 优缺点: 优缺点:
单片机技术讲座 键盘的防抖动技术 • 键盘采用机械弹性开关来反映一个电压信号的开、断。由 于机械触点的弹性作用,在闭合和断开瞬间会有抖动发生。抖 动时间的长短由按键的机械特性决定,一般在5~10ms之间。 为确保按键不产生误动作,在编写按键处理程序中必须有防抖 动措施,防抖动措施有硬件和软件两种方法。 • 硬件防抖动:采用RS触发器,构成双稳态消抖电路,一般 用在对按键操作过程比较严格的场合,采用硬件防抖动电路将 导致系统硬件电路设计复杂化。 • 软件消抖:当软件检测到第一次按键按下时,执行一个 10~20ms的软件延时程序,之后再检测该键电平是否仍维持在 闭合状态,若仍然保持,则确认此键是真正按下,从而消除了 抖动的影响。
单片机技术讲座 初始状态,显示1 2 3 4 5 6;按下K1时,显示6 5 4 3 2 1, 按下K4返回到初始状态。按下K2时,继电器动作,同时4个发 光二极管轮流闪烁,按下K4返回到初始状态。 主程序和按键子程序流程:
开 始
设置显示缓器数据为1、2、3 、5、5、6
调显示子程序
调按键子程序
返 回
单片机技术讲座
键盘接口的软件设计步骤:
1. 判断有无按键按下 2. 当发现有按键按下时,加入软件延时以消除 键盘抖动影响 3. 根据一定的键值编写相应的执行程序 4. 判断键值是否释放,若未释放,则等待以避 免重键或产生错误的按键结果。
单片机技术讲座
1、独立式键盘的程序设计 独立式键盘的程序设计 • 独立式按键的程序设计通常采用查询方式,对键 值的处理一般采取直接处理的方式,即用跳转指令 AJMP或采用散转指令Jmp @A+DPTR。 • 单片机接口电路的设计,一般采用低电平输入有 效方式。
主程序流程
单片机技术讲座
行列式键盘的程序设计 当系统需要的按键数比较多时,一般采用行列式 键盘。行列式结构的键盘显然比独立式要复杂, 识别也要繁琐一些。行列式键盘处理程序的关键 是如何识别键码,即按键所对应的值。通常将查 询键码的过程称之为“扫描”。
单片机技术讲座
3.串行显示 键盘接口芯片的用法 串行显示/键盘接口芯片的用法 串行显示 •独立式还是行列式,占用CPU大量的I/O端口。 •串行2线或4线接口的显示/键盘接口芯片,可最大限度减少 CPU I/O口资源,zlg7289便是其中的代表。 •zlg7289是一款可同时驱动8 位共阴式数码管和64个键的键盘 矩阵接口芯片,内部含有译码器可直接接受BCD码或16进制 码,并同时具有2种译码方式。主要特点有:(1)串行接口 ,无需外围元件可直接驱动LED数码管。(2)具有段寻址指 令,可方便控制独立的LED数码管。(3)键盘控制器内含去 抖动电路。zlg7289采用28脚DIP封装,控制指令分纯指令和 带有数据的指令两种。与键盘相关的指令为“读键盘数据指 令”,该指令可直接从7289中读出当前的按键代码。7289与 单片机的接口采用四线SPI串行总线方式,可以节省单片机 I/O口线,典型应用如下图所示。
单片机技术讲座
单片机技术讲座
+5v
89c51
单片机技术讲座
•多键和重键的处理 多键和重键的处理
一个单片机应用系统在实际操作中,如出现多键现象, 一个单片机应用系统在实际操作中,如出现多键现象, 即同时或先后按下两个以上的键,通常的处理办法是以 即同时或先后按下两个以上的键, 最先按下的键为当前按键。另外, 最先按下的键为当前按键。另外,当使用人员由于误操 作的原因而导致多次连击同一个按键,即重键现象。 作的原因而导致多次连击同一个按键,即重键现象。为 避免重键影响系统的正常运行,在软件编写过程中, 避免重键影响系统的正常运行,在软件编写过程中,以 该键释放作为按键的结束, 该键释放作为按键的结束,即执行完相应的按键功能程 序后,等待该键释放结束,以防止出现反复执行按键程 序后,等待该键释放结束, 序的现象。 序的现象。