您好,欢迎访问三七文档
第五章键盘及其接口技术黄福珍Huangfzh@shiep.edu.cn本章主要内容•键盘设计需解决的问题•独立式键盘的结构原理及其接口电路•矩阵式键盘的结构原理及其行扫描法•编码器及编码键盘接口电路5.1键盘输入电路•按键的特点和分类•按键的确认•按键防抖动技术•重键与连击的处理5.1.1按键的特点和分类•键盘的特点:键盘实际上是一组按键开关的组合,其中每一个按键就是一个开关量输入装置。•键盘的分类:◆编码键盘:能自动识别按下的键并产生相应代码,以并行或串行的方式发送给CPU。它使用方便,接口简单,响应速度快,但需要专用的硬件电路。◆非编码键盘:通过软件来确认按键并计算键值,其响应速度没有编码键盘快,但它不需要专用的硬件支持,而且可按不同方法定义各键,给系统带来很大灵活性。5.1.2按键的确认•通常按键所用开关为机械弹性开关,键的闭合与否,取决于机械弹性开关的通、断状态。一个按键开关通过机械触电的断开、闭合过程,其波形如下:•因此,键的闭合与否,反映在电压上就是呈现高电平或低电平。如果高电平表示断开的话,则低电平就表示闭合,所以通过对电平高低状态的检测,便可确认按键按下与否。前沿抖动后沿抖动图6-2按键的抖动干扰闭合稳定释放稳定键按下键释放5.1.3按键防抖动技术•按键的抖动干扰:由于机械触点的弹性振动,按键在按下时不会马上稳定地接通,而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰。前沿抖动后沿抖动图6-2按键的抖动干扰闭合稳定释放稳定键按下键释放5.1.3按键防抖动技术•硬件防抖技术:一般采用RC滤波消抖电路或RS双稳态消抖电路2RV5+1R1V2V图5-3滤波延时消抖电路SiVoV(Di)(Di)5.1.3按键防抖动技术•软件防抖技术:指编制一段时间大于100ms的延时程序,在第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理5.1.4重键与连击的处理•重键:◆重键指多个键同时闭合。系统确认哪个键操作有效完全由设计者的意愿决定(软件编程决定),如视按下时间最长者有效,或最先按下有效,或最后释放有效等◆重键的利用:定义一两个引导键,这些键按下时执行空操作5.1.4重键与连击的处理•连击:◆连击指一次按键产生多次击键的效果。一般在键盘编程时,将键的释放作为按键的结束,即等键释放电平后再转去执行相应功能程序,以防止一次击键多次执行的错误发生◆连击的利用:利用微机的定时器,可以对按键从按下到释放期间进行计时,以确定此次按键产生多少次击键的效果5.2非编码独立式键盘•独立式键盘结构原理•查询法接口电路•中断法接口电路5.2.1独立式键盘结构原理•结构:独立式键盘指直接用输入端口线构成的单个按键电路。由于每个按键单独占用一根输入端口线,各键的状态不会互相影响,因此,通过检测输入线的电平状态就很容易判断哪个按键按下•与微机的接口:独立式键盘一般通过并行I/O接口(8155或8255)或三态门缓冲器(74LS244)与微机接口,通过CPU对相关I/O口线状态的检测,即可知道键盘上是否有键按下和哪个键按下5.2.2查询法接口电路•接口电路:图5-4独立式键盘结构原理D0V5+D1D2S0S1S2◆该接口电路实现的功能为:查询检测是否有键按下,如有键闭合,则消除抖动,再判断键号,然后转入相应的键处理。5.2.2查询法接口电路•程序流程图:开始有键闭合否?NY延时100ms消除键抖动有键闭合否?NYNYNYNYD0=0?D1=0?D2=0?S0键功能程序S2键S1键序程能功序程能功图5-5独立式键盘查询法程序流程图◆采用查询法时,必须保证CPU每隔一定时间主动地去扫描按键一次,该扫描时间间隔应小于两次按键的时间间隔,否则会有按键不响应的情形。显然这种方式占用CPU时间比较多。5.2.3中断法接口电路•接口电路:5.2.3中断法接口电路•键盘中断服务子程序:◆与查询程序类似,在保护现场后,首先调用延时子程序消抖,然后依次查键号,并转入键功能处理程序,最后恢复现场、中断返回。◆采用中断法时,CPU对按键而言是被动方式,在无键按下时不占用CPU时间,因而CPU有更多的时间执行其他程序。5.3非编码矩阵式键盘•矩阵式键盘的结构及工作原理•矩阵式键盘的程序设计5.3.1矩阵式键盘的结构及工作原理•键盘结构:◆矩阵式键盘又叫行列式键盘,是用I/O口线组成的行、列矩阵结构,在每根行线与列线的交叉处,二线不直接相通而是通过一个按键跨接接通。采用这种矩阵结构只需M根行输出线和N根列输入线,就可连接M×N个按键。通过键盘扫描程序的行输出与列输入就可确认按键的状态,再通过键盘处理程序便可识别键值。5.3.1矩阵式键盘的结构及工作原理•矩阵式键盘与CPU的接口:可采用并行端口8255A、锁存器或缓冲器一类。V5+4001162432485633091725414957086474LS244D1D2D3D4D5D6D70DD1D2D3D4D5D6D70DCLKPORT174LS13874LS273IOWIOR1G2GY7Y0YYYYYY124365XXXXXXXX12436507图5-7矩阵式键盘接口电路5.3.1矩阵式键盘的结构及工作原理•矩阵式键盘接口电路:◆当键盘中无任何键按下时,所有的行线和列线被断开且相互独立,输入线Y0~Y7列都为高电平;当有任意一键按下时,则该键所在的行线与列线接通,因此,该列线的电平取决于该键所在的行线。◆由于矩阵式键盘中行、列线为多键共用,各按键均影响该键所在行和列的电平,因此各按键彼此将相互发生影响,所以必须将行、列信号配合起来并做适当处理,才能正确确定闭合键的位置。5.3.1矩阵式键盘的结构及工作原理•按键的识别:◆行扫描法:*又称逐行零扫描查询法,即逐行输出行扫描信号“0”,使各行依次为低电平,然后分别读入列数据,检查此(低电平)行中是否有键按下。如果读得某列线为低电平,则表示此(低电平)行线与此列线的交叉处有键按下,再对该键进行译码计算出键值,然后转入该键的功能子程序入口地址;如果没有任何一根列线为低电平,则说明此(低电平)行没有键按下。接着进行下一行的“0”行扫描与列读入,直到8行全部查完为止,若无键按下则返回。5.3.1矩阵式键盘的结构及工作原理•按键的识别:◆行扫描法:*有时为了快速判断键盘中是否有键按下,也可先将全部行线同时置为低电平,然后检测列线的电平状态,若所有列线均为高电平,则说明键盘中无键按下,立即返回;若要有一列的电平为低,则表示键盘中有键被按下,然后再如上那样进行逐行扫描。5.3.2矩阵式键盘的程序设计•程序设计:◆在设计键盘扫描程序时,必须要保证键盘操作的实时性,又不能占有CPU太多的时间,还要充分考虑到抖动干扰的消除。一般可根据情况选用编程扫描、定时扫描或中断扫描中的一种方式。5.3.2矩阵式键盘的程序设计•程控扫描法程序设计:◆判断是否有键按下:逐行输出行扫描信号“0”,即是CPU依次使行线X0~X7为低电平,其输出数据代码分别为01H(X0线)、02H(X1线)、04H(X2线)、08H(X3线)、10H(X4线)、20H(X5线)、40H(X6线)、80H(X7线)。然后读入列值,若不为FFH则有键按下◆消除按键的抖动干扰:调用延时100ms的子程序,以便认定确有键按下5.3.2矩阵式键盘的程序设计•程控扫描法程序设计:◆有键按下时求闭合键值:*分别设一个行值寄存器CL和列值寄存器DL。接口电路中跨接在行列线上的64个键,由于同一列相邻行之间相隔数8,所以每进行一次“0”行扫描后,如果此行无键按下,则行寄存器CL应加08再进行下一行的“0”行扫描;*若有键按下则不加08而转求列值,由于列值比键值小1,如第一行第一列的键按下时列值Y0(即数据位D0)=0比01键值小1,所以列值寄存器DL应先加1,然后将读入的列值循环右移,判断进位位CF是否等零即有否键按下,若无键按下,再继续加1、右移、判断,重复上述过程直到有键按下。*把行值和列值相加并进行DAA修正,即可得到所求的十进制键值。5.3.2矩阵式键盘的程序设计◆求闭合键值的例子:设跨接在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。矩阵式键盘扫描及键处理程序流程图5-8图有键按下否?NY有键按下吗?YN键值寄存器清0输出所有行为低电平输出所有行为低电平延时100ms输出某行为低电平此行有键按下?行键值加08求出下一行为低电平各行扫描完?返回YN列键值加1列值右移1位进位位为0吗?计算键值Y键值送缓冲单元转功能键入口地址NYN5.3.2矩阵式键盘的程序设计•程序清单:KEY:MOVAL,0MOVCL,ALMOVDL,ALMOVAL,0FFHOUTPORT1,ALINAL,PORT1CMPAL,0FFHJZDONECALLDELAYMOVAL,0FFHOUTPORT1,ALINAL,PORT1CMPAL,0FFHJZDONEMOVAH,08MOVBL,01HKEY1:MOVAL,BLOUTPORT1,ALINAL,PORT1CMPAL,0FFHJNZKEY2MOVAL,CLADDAL,08DAAMOVCL,ALRCLBL,1DECAHJNZKEY1DONE:IRETKEY2:INCDLRCRAL,1JCKEY2MOVAL,CLADDAL,DLDAAMOV[BUFF],ALJMPKEYADRENDKEY5.4编码键盘接口电路•具有优先级的二进制8位编码器CD4532B:状态输入编码输出EiI7I6I5I4I3I2I1I0GSO2O1O0Eo0××××××××00000100000000000011×××××××1100001××××××10100101×××××100101001××××1000101101×××10000110001××100000110101×100000011100110000000111105.4编码键盘接口电路•编码键盘接口电路:A1GSO2O1O0EiU2EoCD4532BGSO2O1O0EiU1EoCD4532BA2A3A4S15S8S7S0+5VR2C1EC2B1B2B3FHSTBIGR1D0D1D2D3+5V图5-9二进制编码键盘接口电路STB7I6I5I4I3I2I1I0I7I6I5I4I3I2I1I0I5.4编码键盘接口电路•编码键盘接口电路:◆采用两片CD4532B构成的16个按键的二进制编码接口电路:其中由于U1的Eo作为U2的Ei,所以按键S0的优先级最高,S15的优先级最低。U1和U2的输出O2~O0经或门A3~A1输出,以形成低3位编码D2~D0。而最高位D3则由U2的GS产生。当按键S8~S15中有一个闭合时,其输出为“1”。从而S0~S15中任意一个键被按下,由编码位D3~D0均可输出相应的4位二进制码。5.4编码键盘接口电路•编码键盘接口电路:◆为了消除键盘按下时产生的抖动干扰,该接口电路还设置了由与非门B1、B2、电阻R2、电容C2组成的单稳电路和由或门A4、电阻R1、电容C1组成的延时电路,电路中E、F、G、H和I这五点的波形如下图所示。TΔE点F点G点H点STBI点STB图6-11消抖电路波形图
本文标题:键盘及其接口技术
链接地址:https://www.777doc.com/doc-3375121 .html