基于FPGA的按键独立寻址的方法与流程

文档序号:14359232

本发明涉及基于FPGA的按键独立寻址的方法。



背景技术:

按键导光板是加固显示器的主要组成部分,对显示器的性能控制有重要 作用。在加固显示器上使用的按键导光板大多采用一体化设计方式,有若干 个独立按钮组成,分别对应亮度加减、对比度加减、以及其他功能按键。通 过按键导光板将亮度、对比度等按键的变化信息送到温控电路板、再由温控 板将按键的变化信息送给显示器接口视频板处理,以达到规定的控制结果。 为了适应机载使用环境按键导光板上的按键、字符还要具有夜间照明功能。 按键导光板的电路示意图如图1所示。按键阵列主要有按键和扫描线组成。

从图1可知,按键是公用行线和列线的,并非完全独立的,所以为了正 确定位对应的按键被按下,就要采用行列扫描的方式进行定位。通常的扫描 架构如图2所示。

扫描电路的主控制器多为单片机或者FPGA,同时为了满足默认状态初 始值的要求,对所有的扫描线都采用了上拉电阻上拉的方式。在扫描的过程 中固定的某一组连线为控制器输入,如X总线,另一组为输出,如Y总线。 控制器周期性的扫描Y总线,周期性的对Y总线的各线赋“0”,Y总线输 出状态为“11110”、“11101”、“11011”、“10111”、“01111”这5个状态不断 的循环。在每一Y状态检测X的输入,如果有按键被按下,X输入的数据 对应位被置“0”,松开后又变为“1”。通过这种方式就定位到被按下的按键。



技术实现要素:

本发明的目的是提供一种基于FPGA的按键独立寻址的方法,该基于 FPGA的按键独立寻址的方法在不改变原有电路的前提下,采用FPGA对按 键阵列进行控制,实现了按键独立寻址,互不干扰,在两个按键同时被按下 的情况下,能够分别识别,互不影响。

为了实现上述目的,本发明提供了一种基于FPGA的按键独立寻址的方 法,该方法包括:

步骤1,定义Y扫描控制线和X状态控制线;

步骤2,在按键监控状态下,预先将Y扫描控制线的全部输出设为0, 实时监控X状态控制线的输入状态;

步骤3,在X状态控制线不全为1的情况下,开始执行扫描,在Y扫描 控制线循环状态下,执行X状态控制线的逐行扫描;其中,在Y扫描控制 线循环状态下,对非当前扫描行的输出为高阻态。

优选地,在步骤3中,该方法还包括:

在X状态控制线不全为1的情况下,开始执行扫描,在Y扫描控制线 循环状态下,执行X状态控制线的逐行扫描,在单按键扫描的情况下,一旦 在X状态控制线不全为1的情况下,跳到按键监控状态。

优选地,在步骤2中,对每个按键的状态进行监控的方法还包括:

对每个按键进行独立采样,当任意一个按键被按下后,对该按键进行计 数,在任意一个按键被按下超过第一预设时间的情况下,判定该按键为长按 状态;在任意一个按键被按下低于第一预设时间的情况下,判定该按键为短 按状态;在多个键被按下的情况下,判定该按键为多按状态。

优选地,在步骤3中,FPGA对非当前扫描行的输出为高阻态。

优选地,通过计数器对该按键进行计数。

优选地,所述第一预设时间为3-5s。

优选地,所述第二预设时间为0.01-2s。

根据上述技术方案,本发明提出基于FPGA的按键独立寻址的方法,在 不改变原有硬件的基础上,通过控制扫描线的输出状态,和优化FPGA扫描 控制程序,实现对按键阵列中的每个按键独立控制,并能够识别按键的长按、 短按、双按等情况,并且能够根据不同的情况,做出不同的控制响应。

本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与 下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在 附图中:

图1是说明本发明的一种按键导光板的电路连接示意图;

图2是说明本发明的一种按键扫描电路架构图。

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是, 此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发 明。

本发明提供一种基于FPGA的按键独立寻址的方法,该方法包括:

步骤1,定义Y扫描控制线和X状态控制线;

步骤2,在按键监控状态下,预先将Y扫描控制线的全部输出设为0, 实时监控X状态控制线的输入状态;

步骤3,在X状态控制线不全为1的情况下,开始执行扫描,在Y扫描 控制线循环状态下,执行X状态控制线的逐行扫描;其中,在Y扫描控制 线循环状态下,对非当前扫描行的输出为高阻态。

基于FPGA的按键导光板独立寻址的方法。在不改变原有电路的前提 下,采用FPGA对按键阵列进行控制,实现了按键独立寻址,互不干扰,在 两个按键同时被按下的情况下,能够分别识别,互不影响。

根据图2的架构,这种扫描方法简单易用,算法简单,但有一个缺点— —不能独立寻址,当处于同一列的两个按键同时被按下后,控制器就不能正 确的识别和定位按键了。如图1的按键S1和S2被按下后,扫描线X1,Y1, Y2被连接在一起。由于扫描过程中Y1,Y2其中的一个被赋“0”,而另一 个为“1”。这样就会存在冲突,因为X1同时被置“1”和置“0”。如果长时 间处于这种状态下,还会损伤控制器。但在加固显示器的使用过程中会有按 键锁死的情况发生,也即按键导光板上有个按键始终被按下,而不能弹起。 如果不采取措施的话,按键导光板上的部分按键就会存在失灵或者识别错误 的情况发生,导致主机执行错误的命令,严重的时候会造成重大的飞行事故。 所以需要采用按键独立寻址的方式来避免这种情况的出现。

为了解决以上问题,有两种方式能够实现,这取决于采用的主控制器, 如果主控制器采用的是单片机,则只有采用在Y总线上串联电阻的方式来避 免“0”、“1”状态的冲突,这就会造成硬件的改版,带来研发周期和费用的 增加。如果采用的是FPGA作为主控制器,可以在不改变原有的硬件电路的 基础上,通过调整扫描方式和算法来实现按键独立寻址的目的。

本发明是基于FPGA的实现按键独立寻址的方法。通过设置处于非扫描 状态的扫描线的输出状态,将其输出状态置为高阻态,来避免同一列按键同 时按下后接收线状态冲突的问题。同时,采用对每个按键进行独立采样的方 式,能够做到对每个按键独立控制,能够识别长按、短按、双按等情况,并 且能够根据不同的情况,做出不同的控制。这种方式既极大的提高了加固显 示器的性能安全,同时也大大的减少了硬件的复杂度和成本,提高了系统的 可靠性。

扫描控制主要是针对FPGA外围扫描线的控制以及扫描状态的读取,是 直接面向于底层硬件的。定义Y1,Y2…,Y5为扫描控制线,X1,X2…, X5为扫描状态输入线。在按键控制模式下,扫描线Y全部输出为“0”,同 时实时的监控X线的输入状态,一旦有按键按下,X线的状态就不全为“1”。 说明有按键按下,程序开始逐行扫描,以定位具体的按键位置。扫描的方式 是逐行的给扫描线置“0”,如果被按下的按键刚好在此行的话,输入的扫描 状态的对应位置就会出现“0”状态。例如,Y2状态为“0”,同时X3状态 也为“0”,则说明第Y2行X3列的按键被按下。这是常规的扫描方式,为 了识别多个按键同时按下的情况,需要做如下的改进,也是本发明的创新之 一。

1)为了避免同一列的多个按键被同时按下,造成X输入端状态冲突的 问题,在不改变硬件电路的情况下,对扫描线的输出做出控制。FPGA对非 当前扫描行的输出为高阻态,当前扫描行的输出仍为“0”。整个扫描过程的 Y输出状态变化顺序为:“ZZZZ0”,“ZZZ0Z”,“ZZ0ZZ”,“Z0ZZZ”,“0ZZZZ”。 通过输出高阻态的隔离,避免了X输入端的状态冲突。

2)减小扫描周期,做到对所有行都扫描,避免多按键按下时,出现遗 漏。改进了单按键扫描时一旦寻找到X线的“0”状态就跳到按键监控状态, 不再对剩下的按键继续扫描的问题。

在本发明的一种具体实施方式中,在步骤3中,该方法还可以包括:

在X状态控制线不全为1的情况下,开始执行扫描,在Y扫描控制线 循环状态下,执行X状态控制线的逐行扫描,在单按键扫描的情况下,一旦 在X状态控制线不全为1的情况下,跳到按键监控状态。

通过上述的扫描控制逻辑,能够定位到具体的按键位置,为了对每个按 键的状态实时监控,需要对每个按键进行独立采样。每个按键对应一个标志 位,和一个计时器,用行号和列号分别标记。当每个按键被按下后,扫描部 分会持续的输出低电平的标志位,在标志位为低电平的情况下,计数器开始 计数,高电平对计数器进行清零。计数的值,直接决定了按键状态的判断。 各个计数器独立计数,互不干扰。

在本发明的一种具体实施方式中,在步骤2中,对每个按键的状态进行 监控的方法还可以包括:

对每个按键进行独立采样,当任意一个按键被按下后,对该按键进行计 数,在任意一个按键被按下超过第一预设时间的情况下,判定该按键为长按 状态;在任意一个按键被按下低于第一预设时间的情况下,判定该按键为短 按状态;在多个键被按下的情况下,判定该按键为多按状态。

在本发明的一种具体实施方式中,在步骤3中,FPGA对非当前扫描行 的输出为高阻态。

通过对各个计数器的计数值来判定按键的状态,并将状态以特定的方式 反馈回上层逻辑。通过设定计数值和所有计数器的计数状态来判断按键是短 按、长按、多按,对不同的状态判断进行反馈,以方便上层逻辑的操作。

此种基于FPGA的按键独立寻址的方式,不会增加硬件的复杂度,在原 有硬件基础上,通过改进FPGA算法逻辑,实现多按键识别的功能。不会增 加物料成本,仅仅增加了一些FPGA的逻辑资源,不会对FPGA造成太大的 资源负担。通用性强,可以在多个FPGA平台之间移植。能极大的提高加固 显示器的可靠性和安全性。

在该种实施方式中,通过计数器对该按键进行计数。

优选地,所述第一预设时间为3-5s。优选地,所述第二预设时间为 0.01-2s。

本发明使用原有的硬件平台,不需要增加元器件和PCB改版,降低了 硬件复杂度和物料成本,节省了PCB面积;使用FPGA的内部资源少,操 作简单,减少了开发周期;算法能显著提高按键的识别效率,能够独立寻址, 支持多按键识别,提高了按键导光板的性能;算法不依赖于具体的PFGA平 台,移植方便,在常见FPGA平台上都能实现,如Xilinx,Altera,Lattice 等。

以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限 于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明 的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特 征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必 要的重复,本发明对各种可能的组合方式不再另行说明。

此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其 不违背本发明的思想,其同样应当视为本发明所公开的内容。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1