当前位置:文档之家› 22 键盘接口技术

22 键盘接口技术


1.硬件方法
硬件方法是设计一个滤波延时电路或单稳态电路等硬 件的间电滤。路波按来 延 键避 时S未开 消按按 抖下键 电时的路,抖,电动设容时置两间在端。按电下键压图S为与是C0由,PUR即2数和与据C非线组门D成输i之
入能启于充时电门电V突只i为压的延变要0, 开 迟, 使,门 启 时充 之输的 电 间电 大出输 压 取电 于V出 时 决压或o为,于等VV1io在与于R将。1充非1、不当0电门R会0S2m按时的改和s下间输变C即值时内出,可的,未V直避o大由达到才开小于到充变按,C与电为键两电非电0抖端,路门压动电这设的V的压段i计开大影不
+5V
8088
8255A
D7 CPU D0
D7 PA0
PA1
D0
PA2 PA3
S0 S1 S2
RD INTR
RD PA4
INTRa
PC3 PC4
PA5 PA6
PA7
INT
IR3
8259A
STBa
独图立5式-6 键独立盘式中键断盘中法断接法接口口电电路路
工作过程如下:当CPU对8255A初始化后,CPU 即执行主程序。当按下S0键即表示要进入自动控制状 态,此时与之相连的I/O口线呈现为低电平的同时, 与非门输出为高电平,经反相器变为低电平,使 8255A端口A的选通输入信号PC4 有效,则PA0~ PTASIT2时引间脚,接8收2并55存A入的3P个C3按发键出的IN“T0R”a或中“断1请”状求态信,号经, 经中断控制器8259A向CPU申请中断,CPU响应中 断后,即转到中断服务程序中。中断服务程序依次查 询按键的通断状态,当查询到是自动/手动(即S0=0) 时,则转到自动/手动控制子程序的入口地址,从而 使系统进入自动控制状态。如果没有键按下,则相应 的I/O口线均为高电平,也不会产生中断信号,CPU 继续运行主程序。
+5V
D0
S0
D1
S1
D2
S2
独立式键盘结构原理
图 5-4 独立式键盘结构原理
开始
N
有键闭合否?
Y
延时100 ms 消除键抖动
N
有键闭合否?
Y
D0=0?
Y
S0键功能程序
N
D1=0?
Y
S1键 功能程序
N
N
D2=0?
Y
S2键 功能程序
独立式键盘查询法程序流程图
图 5-5 独立式键盘查询法程序流程图
(2)中断法接口电路
矩阵式键盘接口电路
❖ 当键盘中无任何键按下时,所有的行线和列线被断开且相互
独键立所,在输的入行线线Y与0列~线Y7接列通都,为因高此电,平该;列当线有的任电意平一取键决按于下该时键,则所该在 的行线。基于此,产生了“行扫描法”与“线反转法”两种识别 方法。
❖ 行扫描法又称逐行零扫描查询法,即逐行输出行扫描信号 “0”,使各行依次为低电平,然后分别读入列数据,检查此(低 电平)行中是否有键按下。如果读得某列线为低电平,则表示此 (低电平)行线与此列线的交叉处有键按下,再对该键进行译码 计算出键值,然后转入该键的功能子程序入口地址;如果没有任 何一根列线为低电平,则说明此(低电平)行没有键按下。接着进 行下一行的“0”行扫描与列读入,直到8行全部查完为止,若无
转功能键入口地址
矩阵键盘扫描及键处理程序流程图
图 5-8
矩阵式键盘扫描及键处理程序流程图
程序设计
KEY: MOV AL,0
MOV CL,AL
;行值寄存器CL和列值寄存器DL清零
MOV DL,AL
MOV AL,0FFH
OUT PORT1,AL ;使所有行线为低电平
❖ 例如跨接在X2行与Y1列的18键按下,其键值计算 方法如下:第一次“0”行扫描X0行,无键按下, CL=00+08=08,接下来扫X1行,仍无键按下,加08 并进行DAA修正,CL=08+08=16,再扫X2行,此 时读入的列值不等于FFH即表明有键按下,则CL=16 不变。然后转求列值,列值寄存器先加1再把读入的列 值循环移位,由于按下的键在Y1列,所以需移位两次 才能移出0值,因此DL=02,然后将行值寄存器与列 值寄存器之值相加,并进行DAA修正,得到 AL=CL+DL=16+02=18,即键值为18。
键盘中断服务子程序,与查询方式相似,在保护现 场后,首先调用100mS延时子程序去除抖动,然后 依次查键号,并转入键功能处理程序,最后恢复现场、 中断返回。显然,查询顺序代表了按键的排队优先级。
采用中断法时,CPU对按键而言是被动方式,在无 键按下时不占用CPU时间,因而CPU有更多的时间 执行其他程序。
键按下
键释放
前沿抖动
闭合稳定
后沿抖动 释放稳定
二 抖动干扰的消除
按键的抖动是毫秒级的,而计算机处理速 度则是微秒级的,所以这种抖动对于人来说 是感觉不到的,但是对于计算机则是完全感 觉得到的。这种抖动就会造成按一次键产生 的开关状态被CPU误读几次。为了使CPU能 正确地读取按键状态,必须在按键闭合或断 开时,消除产生的前沿或后沿抖动,去抖动 的方法有硬件方法和软件方法两种。
键按下则返回。
❖ 有时为了快速判断键盘中是否有键按下,也可先将全部行线 同时置为低电平,然后检测列线的电平状态,若所有列线均为高 电平,则说明键盘中无键按下,立即返回;若要有一列的电平为
低,则表示键盘中有键被控下,然后再如上那样进行逐行扫描。
(3)矩阵键盘的程序设计
在计算机控制系统中,键盘扫描只是 CPU工作 的一部分。因此在设计键盘扫描程序时,必须要保 证键盘操作的实时性,又不能占有CPU太多的时 间,还要充分考虑到抖动干扰的消除。一般可根据 情况选用编程扫描、定时扫描或中断扫描中的一种 方式。
三、 非编码键盘
非编码键盘分为独立式键盘和矩阵键盘。 在计算机控制系统中,有时候只需要使用 简单的键盘就能完成操作输入,按键的数 量较少可采用独立式键盘。当按键的数目 较多时,将增加输入口线,为了减少输入 口线,可采路
现以3个按键为例,下图即为独立式键盘查询 法与合接C时口P,U电数的路据数。线据按直线键接DS0接0、、地DS,11、、因DS而22分相C别连PU通,读过当入上按D拉键i=电S0i阻闭; 当按键Si断开时,数据线通过上拉电阻接到正 电源,因而CPU读入Di=1。该接口电路实现的 功能为:查询检测是否有键按下,如有键闭合, 则消除抖动,再判断键号,然后转入相应的键 处理。其程序流程如图所示。采用查询法时, 必须保证CPU每隔一定时间主动地去扫描按键 一次,该扫描时间间隔应小于两次按键的时间 间隔,否则会有按键不响应的情形。显然这种 方式占用CPU时间比较多。
(1)矩阵式键盘的结构组成
矩阵式键盘又叫行列式键盘,是用I/O口 线组成的行、列矩阵结构,在每根行线与 列线的交叉处,二线不直接相通而是通过 一个按键跨接接通。采用这种矩阵结构只 需M根行输出线和N根列输入线,就可连接 M×N个按键。通过键盘扫描程序的行输出 与列输入就可确认按键的状态,再通过键 盘处理程序便可识别键值。
(2)矩阵式键盘接口电路
键盘与CPU的接口可采用并行端口8255A、 锁存器或缓冲器一类。下图给出了一种8×8非 编码矩阵式键盘的接口电路。行输出电路由 行扫描锁存器74LS273、 反相器与行线X0~ X7 连 接 组 成 , 列 输 入 电 路 由 三 态 缓 冲 器 74LS244与列线Y0~Y7以及上拉电阻组成。X、 Y线的每一个交叉处跨接一个键,其键值分别 是十进制数的01,02,……,64。该键盘的 接口地址为PORT1。
软件方法是指编制一段时间大于100ms的延时程序, 在第一次检测到有键按下时,执行这段延时子程序 使键的前沿抖动消失后再检测该键状态,如果该键 仍保持闭合状态电平,则确认为该键已稳定按下, 否则无键按下,从而消除了抖动的影响。同理,在 检测到按键释放后,也同样要延迟一段时间,以消 除后沿抖动,然后转入对该按键的处理。
上述分析说明:独立式键盘接口电路简单灵活,软 件结构简单,但每个按键必须占用一根I/O口线,在 按键数量较多时,需要占用较多的I/O口线。比如64 个按键,需要有64根线,不仅连线复杂,查询按键 的时间也较长。故这种键盘电路只适合于按键数量比 较少的小型控制系统或智能控制仪表中。
2、矩阵键盘的工作原理及接口
仍以3个按键为例,下图是一个炉温控制系统的功 能键分配图,S0、S1、S2分别代表自动/手动切换、 炉温参数显示和炉温参数打印功能。这是在上述查 询法接口电路的基础上,再把按键S0、S1、S2的数 据输出线经过与非门和反相器后与8255A的选通输 入信号PC4相连,8255A的PC3发出中断请求信号 经中断控制器8259A与CPU的中断请求引脚相连, 这是一种典型的中断法键盘接口电路。
响。同理,按键S断开时,即使出现抖动,由于C的放
电未是延施施迟加加过 滤滤程 波波, 电电也 路路会 含后消有消除前除按沿抖键抖动抖动的动、波的后形影沿。响抖。动图 的中 波, 形,V1V是2
(Di) Vo
Vi R2
R1
+5V
S
V1 (Di) V2
滤波延时消抖电路
图 5-3 滤波延时消抖电路
2.软件方法
键盘接口电路可分为编码键盘和非编码键盘两种 类型。编码键盘采用硬件编码电路来实现键的编码, 每按下一个键,键盘便能自动产生按键代码。编码键 盘主要有BCD码键盘、ASCII码键盘等类型。非编码 键盘仅提供按键的通或断状态, 按键代码的产生与识 别由软件完成。
编码键盘的特点是使用方便,键盘码产生速度 快,占用CPU时间少,但对按键的检测与消除抖 动干扰是靠硬件电路来完成的,因而硬件电路复 杂、成本高。而非编码键盘硬件电路简单,成本 低,但占用CPU的时间较长。
2.2 键盘接口技术
本节要点
1.按键的抖动干扰及其解决方法。 2. 独立式键盘的结构原理及其接口电路。 3.矩阵式键盘的结构原理及其接口电路。
相关主题