您好,欢迎访问三七文档
双35mm牵引高炮系统论文集1训练模拟器中键盘的设计郭俊萍王云飞(785厂)[摘要]为了适应双35mm牵引高炮火控系统训练模拟器(以下简称训练模拟器)的需要,研制了一种适合训练使用的专用键盘,设计中采用行扫描法识别键的闭合,并且在按键的选用和信号的传输上都有其独特之处,实践证明,这种键盘不仅性能稳定而且结实耐用。文章介绍了训练模拟器中键盘的设计方案,并对其软、硬件的设计分别作了说明。[关键词]行扫描;20mA电流环;抖动;重键1引言计算机是训练模拟器的控制核心,而键盘又是计算机的重要输入设备之一,它是实现人机对话的主要工具,键盘将数据、命令及指令输入到训练模拟器中。因此,键盘的容错性、稳定性、传输速率成为键盘设计的关键。另外本键盘安装于方舱的控制台上,因此除保证性能的稳定性又要具备一定的抗振性和密封性。2电路结构及工作原理2.1电路结构图1是键盘的电路结构图。单片机80C31是键盘的核心,P0口是数据线和地址线的复用端口。作为数据线,它与并行接口电路8255和EPROM2764的数据端口相连,作为地址线接到地址锁存器373的输入端口。P2口主要用作地址线,P2口的高3位与地址译码器相连,译码器的输出作为8255的片选信号。80C31的工作频率为6MHz。8255的PA口和PB口与键盘矩阵相连,当有键闭合时,8255将采集到的数据传送给80C31,通过80C31片内的串行端口输出,并加驱动电路,经光电隔离后送入计算机。用80C31内部定时器1作为串行通讯的波特率发生器,为键盘的数据传输提供波特率为300的20mA电流环信号。2764用于存贮键盘监控程序和应用程序。键盘矩阵图1电路结构框图P2P080C31TXDCSaaaaaaaaaaaaaaaaaaaaaRDWRD0-D7PA8255PB2764驱动串行输出地址锁存译码RDWR2双35mm牵引高炮系统论文集2.2工作原理2.2.1键的识别设计中采用行扫描法识别键的闭合。行扫描法识别闭合键的原理如下:先使第0行接地,其余行为高电平,然后看第0行是否有键闭合,这是通过检查列线电位来实现的,即在第0行接地时,看是否有哪条列线变成低电平。如果有某条列线为低电平,则说明第0行和此列相交位置上的键被按下接地;如果没有任何一条列线变为低电平,则说明第0行上没有键被按下。此后,再将第1行接地,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便在扫描中途退出,而将输入值进行移位,从而确定闭合键所在的列线位置。根据行线位置和列线位置,便能识别此刻闭合的到底是哪一个键。实际中,一般先快速检查键盘中是否有某个键已被按下,然后,再确定具体按下了哪一个键。为此,可以先使所有各行同时为低电平,再检查是否有列线也处于低电平。这时,如果列线上有一位为0,则说明必有键被按下,不过,还不能确定所闭合的键处在哪一行上,于是再用扫描法来确定具体位置。在硬件上,行线和列线的接法如图2:图2中是一个8×8=64键的键盘,将行线和8255的并行输出端口B相接。CPU每次使并行输出端口的某一位为0,便相当于将某一行线接地,而其他位为1,则相当于使其他行线处于高电平。为了检查列线上的电位,将列线和8255的并行输入端口A相接,CPU只要读取输入端口中的数据,就可以判别出第几号键被按下。从上面的原理中知道,键盘扫描程序中的第一步应该判断是否有键被按下。为此,使输出口各位均输出为0,即相当于将所有各行都接地。然后从输入端口读取数据,如果读得的数据不是FFH,则说明必有列线处于低电平,从而可断定必有某键被按下。此时,为了消除键的抖动,所以调用延迟程序,然后再判别具体按下的到底是哪个键。如果读得的数据是FFH,则程序在循环中等待。流程图见图3(a)。键盘扫描程序的第二步是判断哪一个键被按下。这段程序的流程如图3(b)所示。从流程图中可以看到,开始时,程序先将键号寄存器置0,将计数器值设置为键盘行的数目,然后设置扫描初值。扫描初值11111110使第0行为地电位,而其他行为高电位。输出扫描初值以后,又马上读取列线的值,看是否有列线处于地电位,若无,则将扫描初值循环左移一位,变为11111101,这样,使第1行为地电位,而使其他行为高电位。同时使键号成为8,即从第2行上第1个键开始检查。并且,计数值减1......。如此下去一直查+5V+5V+5V+5V第0行第1行第2行第7行第0列第1列第7列图2键盘矩阵图8255并行端口B8255并行端口A训练模拟器中键盘的设计3到计数值为0。如果在此过程中,查到有某一列线为地电位,则将列线数据保留,并右移一位,使进位位相当于第0列线的状态。如果此位为地电位对应值0,则相当于第0列线上的0号键(在第2次循环中为8号键...等等)闭合;否则,继续循环右移。由于已经确定了此行上有一键闭合,所以,一定可以在列线中检查出某列处于地电位。2.2.2抖动问题的解决在键盘设计时,除了对键码的识别以外,还有两个问题要解决,一个是抖动问题,另一个是重键问题。当用手按下一个键时,往往出现所按键在闭合位置和断开之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。抖动的持续时间随操作员而异,不过通常总是不大于10ms。显然,抖动问题会引起对闭合键的错误识别。用软件方法可以解决抖动问题,这就是通过延迟来等待抖动消失,这之后,再读入键码。在前面判断闭合键流程图3(a)中,可以看到,就是用这种方法来消除抖动的。所谓重键就是指有两个或多个键同时闭合。出现重键时,如果用行扫描法来读取键码值,必然出现读取值中有一个以上的`0。于是就产生了到底是否给予识别和识别哪一个键是否否进位位为0吗?读进列值设键号=0计数器=行数扫描初值11111110B输出扫描值,使某一行为地电位是否有一列接地?列值循环右移一位键盘命令处理计数为0吗?键号←键号+8计数器←计数器-1将扫描值循环左移一位,使下一行为地电位结束是是否图3(b)扫描法判断闭合键流程图延时20ms去抖动是否有一列值为低电平?置所有行线为低电平读取列值否是图3(a)判断闭合键流程图4双35mm牵引高炮系统论文集的问题。实际中,通常遇到的是两键相重的情况。细分起来,有如下几种重键的情况。a.A键先按后放,B键后按先放;b.A键先按先放,B键后按后放;c.A键、B键同时按下,但A键先放。对重键问题的处理采用巡回法。巡回法识别重键的思想是:等前面所识别的键被释放以后,就可以对其他闭合键作识别。具体地讲,在只有A键闭合的情况下,当然读入A键。如果A键先按后放,B键后按先放,那么由于采用巡回法时,只有在A键被释放以后才会识别其他键,所以对B键不予识别。如果A键先按先放,B键后按后放,且A键和B键在同一行,则识别A键而舍弃B键。这是一种特殊情况。如果A键先按先放,B键后按后放,且A键和B键不在同一行上,则巡回法认为这是正常快速操作,所以,对两键均作读入。如果A键、B键同时被按下,但A键后释放,B键先释放,而A键处于较小行号上,则只有A键被读入;但如果A键处于较大行号上,则由于它后释放,所以会使A键、B键均被读入。2.2.3信号的传输:由于键盘与计算机距离较远,且位数较多,故采用适宜于长距离传输的串行通讯方式。数据的传送在硬件上采用20mA电流环,并采用光电隔离,有效地抑制了发送端与接收端的干扰。电路如图4所示,在电路的发送端由三极管对信号进行放大与转换,转变为有无20mA电流,在线路上传送;在接收端,把电流信号通过发光二极管转换为光信号,由光敏三极管接收,产生相应的数字信号,输入到计算机。3按键的选用TXDD1R1V1R2D2R4INGNDR3+5V+5V20mxA电流环LE-LE+图4光电隔离电路图训练模拟器中键盘的设计5该键盘用于训练模拟器,使用人员杂,操作员的击键手法、力度都有差异,一般的键盘长期的过度用力会使弹力下降,考虑到这一点,选用了一种按DIN标准开发的弹簧式高级键开关,其结构小巧、可靠性高、寿命长、低抖动,特别适用于高可靠性的计算机外部终端设备。结构形式:键帽采用台弧式排列,全塑外壳,外型美观,工作可靠,操作手感好。4结束语设计中从键的识别、信号的传输及按键的选用等诸多方面,在软件、硬件上都做了周密的考虑,所以实际使用中该键盘性能稳定可靠,特别适合于训练模拟器使用。参考文献1戴梅萼,史嘉权.微型计算机技术及应用(第二版).北京:清华大学版社.19962周明德.微型计算机硬件软件及其应用.北京:清华大学出版社,19823周明德,白晓笛,田开亮.微型计算机接口电路及应用.北京:清华大学出版社,1987
本文标题:键盘的设计
链接地址:https://www.777doc.com/doc-1993594 .html