基于可编程器件的矩阵键盘扫描装置
技术领域
本实用新型涉及一种矩阵键盘扫描设备,具体来说,涉及一种矩阵键盘扫描处理速度快、稳定性高,同时提供总线型读写接口,方便对矩阵键盘数量进行扩展的基于可编程器件的矩阵键盘扫描装置。
背景技术
操作界面是各种电子设备必不可少的一种用户接口,而键盘是应用最为广泛的一种操作界面。随着电子设备功能的不断增多、操作界面也不断变得复杂,采用普通的小规模键盘扫描电路已满足不了应用的需求。
在一些小规模键盘应用场合,很多都是采用单片机I/O口实现键盘扫描,由于这种方案相对简单,所以应用比较广泛,但由于单片机资源的局限性,键盘的规模扩展受到限制,只局限于小规模键盘的应用场合,而且成本也相对较高。同时由于单片机是通过软件实现键盘扫描,所以在速度、稳定性方面存在不足。
专用键盘芯片也是很多应用场合采用的一种方案,这种芯片成本较低,支持的键盘规模也较大,但在应用中存在功能较单一、缺少灵活性,不便于键盘的扩展。
目前在很多应用领域,键盘的数量一般是几十个,基至几百个,而且随着设备功能的复杂化呈现出键盘规模不断扩大的趋势,这就要求具备支持大规模键盘且便于扩展的键盘芯片,以满足应用的需求。
实用新型内容
针对以上的不足,本实用新型提供了一种基于可编程器件的矩阵键盘扫描装置,它通过硬件电路实现按键去抖动、键值存储和键值清除等功能,矩阵键盘扫描处理速度快、稳定性高,同时提供总线型读写接口,方便对矩阵键盘数量进行扩展。
本实用新型的基于可编程器件的矩阵键盘扫描装置包括数个分别用于采样键盘按键动作的键盘操作检测单元,以及分别对各个键盘进行采样得到的键盘扫描结果进行编码,然后以总线形式输出的总线编译码单元。
每一所述键盘操作检测单元包括对外部矩阵键盘的每一行进行扫描的行扫描单元,以及当行扫描单元扫描到某一行时,同时对该行的每一列进行扫描的列扫描单元。
所述行扫描单元从第一行至最后一行逐次对矩阵键盘进行扫描,当行扫描单元扫描到某一行时,所述列扫描单元从第一列至最后一列逐次对矩阵键盘进行扫描。
所述行扫描单元包括用于产生矩阵键盘行扫描信号的行扫描发生器和存储行扫描信号和行扫描结果的行扫描存储单元,以及当行扫描单元扫描至某一行时,保持行扫描单元一直扫描该行,直至列扫描单元扫描完该行每一列的行扫描锁存单元。
所述行扫描单元还包括防止同一列中不同行的多个按键同时按下造成直接断路的行扫描信号处理单元。
所述列扫描单元包括用于检测矩阵键盘的每一列是否有按键按下的列信号检测单元,以及对列信号检测单元检测的列信号进行存储的列扫描存储单元。
所述列扫描单元还包括避开按键操作所产生的抖动脉冲的消抖释放处理单元。
本实用新型的有益效果:本实用新型的基于可编程器件的矩阵键盘扫描装置通过消抖释放处理单元避开了按键操作所产生的抖动脉冲,使得稳定性更高,扫描速度更快,另外,通过行扫描存储单元和列扫描存储单元实现键值存储功能,不但避免漏键,还方便与各种高低速设备连接,再有,通过总线编译码单元总线形式连接多个键盘操作检测单元,可以同时扫描多个矩阵键盘,规模大,扩展灵活。
附图说明
图1为本实用新型的基于可编程器件的矩阵键盘扫描装置的功能框架图;
图2为本实用新型的行扫描发生器的电路原理图;
图3为本实用新型的行扫描锁存单元的电路原理图;
图4为本实用新型的行扫描信号处理单元的电路原理图;
图5为本实用新型的列信号检测单元的电路原理图;
图6为本实用新型的列扫描存储单元的电路原理图;
图7为本实用新型的CLK和CLR选通的电路原理图;
图8为本实用新型的总线编译码单元的电路原理图。
具体实施方式
下面结合附图对本实用新型进行进一步阐述。
如图1所示,本实用新型的基于可编程器件的矩阵键盘扫描装置包括数个分别用于采样键盘按键动作的键盘操作检测单元,以及分别对各个键盘进行采样得到的键盘扫描结果进行编码,然后以总线形式输出的总线编译码单元。所述键盘操作检测单元包括对外部矩阵键盘的每一行进行扫描的行扫描单元,以及当行扫描单元扫描到某一行时,同时对该行的每一列进行扫描的列扫描单元,本实用新型优先考虑所述行扫描单元从第一行至最后一行逐次对矩阵键盘进行扫描,当行扫描单元扫描到某一行时,所述列扫描单元从第一列至最后一列逐次对矩阵键盘进行扫描。所述行扫描单元包括行扫描发生器、行扫描存储单元、行扫描锁存单元和行扫描信号处理单元,行扫描发生器用于产生矩阵键盘行扫描信号,行扫描存储单元用于存储行扫描信号和行扫描结果,行扫描锁存单元用于当行扫描单元扫描至某一行时,保持行扫描单元一直扫描该行,直至列扫描单元扫描完该行每一列,行扫描信号处理单元用于防止同一列中不同行的多个按键同时按下造成直接断路;所述列扫描单元包括列信号检测单元、消抖释放处理单元和列扫描存储单元,列信号检测单元用于检测矩阵键盘的每一列是否有按键按下,消抖释放处理单元用于避开按键操作所产生的抖动脉冲,列扫描存储单元用于对列信号检测单元检测的列信号进行存储。
下面结合附图对每一个单元进行具体说明:
外部矩阵键盘是用户根据应用中的需求接入的键盘矩阵,键盘的规模可以根据需要自定义,但不能超过芯片支持的最大数量(在此是以8*8矩阵键盘为例说明)。
如图2所示,行扫描发生器用于产生矩阵键盘扫描的行扫描信号,它由移位寄存器(inst47~ inst50,以及inst54、 inst56、 inst57和inst58)在外部输入时钟的作用下产生,当扫描矩阵键盘的某一行时,该行输出低电平,而其它输出为高电平。在外部时钟的作用下,每一行轮流输出低电平,以实现轮流对每一行进行扫描,达到判断该行有无按键按下的目的,当上电开始工作时,由CLR信号将8个寄存器的输出初始化为二进制11111110,当正常工作时,由时钟信号CLK对8个寄存器的输出进行循环移位,其中LOCK信号用于当有按键按下时通过与门inst8锁住CLK信号以停止扫描。八输入与门inst1通过对其中七个寄存器(inst47~ inst50,以及inst54、 inst56和inst58)输出的监测,可以实现任何时刻只有一个寄存器的输出为0,当由于某些意外导致有多个寄存器输出为0时这部分电路经过几个时钟周期后可以自动恢复为正常的状态,使扫描信号的产生更加稳定、准确。
在实际应用中,当某一行的某个按键被按下时需使行扫描信号一直扫描该行,以确保后面的键盘处理部分能正确判断出所按下的按键,这部分功能由行扫描锁存单元实现,其产生的电路原理图如图3,它由一个八输入的与门inst6实现,当有按键按下时,列输入信号C_IN0~C_IN7中将有某个被拉为低电平,此时输出的LOCK信号为低电平有效,输出的LOCK信号送往行扫描发生器,以锁住时钟信号实现停止扫描。
行扫描信号处理单元对行扫描发生器产生的扫描信号进行相应的安全性输出处理,电路原理图如图4,当行扫描输出为低电平时,经过非门inst69反相后控制三态门inst62使能,行扫描信号输出也相应为低电平,而当行扫描输出为高电平时,可控制三态门禁止,输出为高阻态,这样可以防止当同一列中不同行的多个按键同时按下时发生的高低电平直接短路,避免由此造成功耗增大基至损坏器件。
列信号检测单元用于检测矩阵键盘当前有无按键按下,在电路中列扫描信号输入被内部上拉为高电平,当有按键被按下时且行扫描到该按键所在的行时,对应的列扫描输入便被下拉为低电平,因此通过判断列扫描输入信号便可知道被触发的按键所处在的列。其电路原理图如图5,在时钟信号CLK的上升缘通过寄存器inst21锁存列输入信号,当按键释放时,寄存器inst21便输出一个上升缘触发寄存器inst22使其输出表示有按键操作的高电平,CLR信号用于清除按键的输出。
由于按键的一些物理缺陷,在按键按下的瞬间会产生抖动脉冲,导致动作的误判,所以消抖释放处理单元是键盘扫描的一个不可缺少的部分,它提高了键盘扫描电路的稳定性。在图5中由寄存器inst21和时钟信号CLK实现消抖功能,它是利用时钟周期间隔避开按键操作的高频脉冲干扰。
行扫描存储元和列扫描存储单元实现了对扫描信号的储存,以适合与各种高低速设备一起使用,避免漏判,当键值被读取后由外部CLR信号清除。图6为行扫描存储单元的电路图,当有按键按下时,来自图5的列扫描信号C_OUT0~C_OUT7经过八输入与非门inst26后输出一个上升缘,触发寄存器inst25锁存行扫描信号,以用于后面的键值编码单元使用。
总线编译码单元的实现如图7、图8所示,它由总线地址译码器U2、键值编码器U1、信号选通输出控制单元等组成。当总线上出现的地址A0~A7与本装置设置的地址一置时,由译码器U2输出选中信号SEL高电平有效,从而控制三态门inst63和inst64将总线上的CLK_IN、CLR_IN输入到内部处理电路,由U1组成的二进制编码器根据行、列扫描信号便可确定出被按下的按键所处的具体位置,并对其进行编码后在总线上选通输出。
以上所述仅为本实用新型的较佳实施方式,本实用新型并不局限于上述实施方式,在实施过程中可能存在局部微小的结构改动,如果对本实用新型的各种改动或变型不脱离本实用新型的精神和范围,且属于本实用新型的权利要求和等同技术范围之内,则本实用新型也意图包含这些改动和变型。