郭京,沈华, 段小虎
(中航工业西安航空计算技术研究所,陕西 西安 710068)
摘要:矩阵键盘是人机交互的重要设备。实际应用场景中,用户通过键盘按键产生激励信号,经过驱动电路送到扫描电路,最终传给处理器电路,从而完成人机交互。在这个过程中,驱动电路负责传递信号,驱动电路的设计决定着整个系统能否正常工作。在驱动电路中引入高阻设计后,可以避免多个按键同时按下时矩阵键盘内部电路发生短路的情况,能让整个驱动电路更加可靠。
关键词:矩阵键盘;驱动电路;高阻设计
中图分类号:TP391文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.08.009
引用格式:郭京,沈华, 段小虎.矩阵键盘驱动电路的高阻设计[J].微型机与应用,2017,36(8):26-27,30.
0引言
随着电子信息技术的高速发展,越来越多的工业控制设备和移动终端设备得到广泛的应用,这些设备通称为嵌入式系统。IEEE( 国际电气和电子工程师协会) 对嵌入式系统的定义为“用于控制、监视或者辅助操作机器和设备的装置”。在这些嵌入式系统中,键盘作为人机交互的重要手段,是应用最为广泛的输入设备之一。当按键较少时,采用独立式键盘,当按键较多时,采用矩阵式键盘,矩阵键盘是人机交互的重要设备[1]。实际应用场景中,用户通过键盘按键产生激励,经过驱动电路后送到扫描电路,最终传给处理器电路,从而完成人机交互。驱动电路负责整个过程中的信号传递,驱动电路的设计决定着整个矩阵键盘能否正常工作。为了避免多个按键同时按下时矩阵键盘内部电路发生短路的情况,本文提出一种矩阵键盘驱动电路的高阻态设计方法。
1矩阵键盘的应用模式
本设计中矩阵键盘的硬件架构如图1所示。图1中的矩阵键盘为6行4列,每行和每列在默认状态下是不连接的,当某一个按钮按下时,交叉处的行与列相连接。
为了获得按键的位置信息,通常的做法是模块不停地在行信号上循环输出扫描信息,并监控列信号的状态,根据这两者的组合来判断是否有按键被按下以及被按下的按键的行列位置坐标。
2矩阵键盘的电路设计
2.1硬件平台的构架
图1矩阵键盘的硬件架构如图1所示,模块内通过FPGA内部的状态机循环向矩阵键盘的行信号发出“011111”,“101111”,“110111”,“111011”,“111101”,“111110”的电平进行驱动,然后监控键盘列信号的状态,当未发现按键按下时,不停地进行此循环,当发现按键按下时,则暂停循环,直到按键释放后再继续循环扫描[2]。
若键盘没有任何键被按下,则键盘的列信号为开路,但由于模块内部对每个列信号进行了电阻上拉,因此键盘没有任何按键按下时,列信号为全1。当键盘被按下某个键时,如图1所示,按下了坐标为(行=3,列=2)的键,其对应的行、列信号在按键处被导通,则FPGA状态机循环在进行到将行信号输出为“111011”时,则采集到列信号的值为“1101”,不是全1,则表示此时有按键被按下,并且在此时根据行信号的输出值和列信号的输入值判断出当前被按下的按键的位置。FPGA的状态机在此时停止循环,并且将按键被按下的事件作为中断通知处理器,并提供按键的坐标。然后待该按键被释放后,则列信号重新变为全1,表示按键被释放,然后FPGA的状态机继续进行循环。
2.2驱动电路分析
这样的一种设计架构和应用方式对于仅有单独按键被按下的情况是可以正常使用的,但是用户在长按住某个按键时,同时按下另一个同列的按键,驱动电路会发生预期之外的现象。原因如图2所示。
当按下(行=3,列=2)的按键时,据前文所述,列信号应该为“1101”,若在长时间按下(行=3,列=2)的按键时,同时按下(行=5,列=2)的按键,则电路发生如图2所示的变化,矩阵键盘的第3行、第5行、第2列的信号都连接了起来,由于此时行信号输出为“111011”,所以发生了如图中虚线箭头方向的电流回路,行信号5的高电平输出和行信号3的低电平输出发生了短路,从而导致列信号2的电平由原来的0变为了VCC/2,驱动电路在采集到列信号2为VCC/2后,向FPGA驱动输出高电平,所以FPGA端会采集到列信号变为全1。然后当(行=5,列=2)的按键被释放后,电路恢复到仅有(行=3,列=2)的按键被按下的状态,列信号重新变为“1101”。
上述过程如表1所示,在长时间按住某个按键时,同时按下并释放另一个同列的按键时,驱动电路传出的信号会让FPGA认为首先被按下的按键被按了两次,从而导致与预期不符的混乱。并且如果同时按下同列的两个按键,则会发生高电平输出与低电平输出短接的问题,对于驱动电路管脚也有所损害。
2.3驱动电路的高阻态设计
由于FPGA对于列信号的状态采集无法将上述的例外情况与正常的按键释放相区别,所以需要设计一种新的驱动电路来解决这个问题,一种改进方式如图3所示,将行信号驱动循环由原有的“011111”,“101111”,“110111”,“111011”,“111101”,“111110”更改为“0ZZZZZ”,“Z0ZZZZ”,“ZZ0ZZZ”,“ZZZ0ZZ”,“ZZZZ0Z”,“ZZZZZ0”,Z表示高阻。由于列信号有电阻进行上拉,所以仍然可以与之前一样正常工作。
这样更改后,当在一个按键按下后,再同时按下非本行内的其他键时,不会对电路造成任何影响,更不会产生矩阵键盘内部短路,即使按下本行的其他键,由于不会使得列信号变为全1,因此FPGA不会认为按键被释放掉,不会产生新的事件,从而也不会造成影响。
驱动电路使用的驱动器必须能够输出高阻态,应该使用open drain的驱动器来进行驱动,例如使用74HC05芯片。74HC05芯片的真值表如表2所示。
2.4矩阵键盘电路的具体实现
经以上分析,一个比较完备的矩阵键盘电路应如图4所示。
将驱动芯片后端加74HC05芯片可将高电平转换成高阻态输出,达到高阻态驱动电路设计要求。
3结论
驱动电路中引入高阻设计可以避免多个按键同时按下时矩阵键盘内部电路发生短路的情况,使整个驱动电路更加可靠。
参考文献
[1] 怯肇乾.嵌入式人机界面中的键盘及其接口设计[J].单片机与嵌入式应用系统,2006,20(4): 24-27.
[2] 张玲.基于FPGA 4*4 键盘扫描电路的设计[J].计算机光盘软件与应用,2012(13):180-181.