基于BC7281的功能键盘设计
摘要:键盘是最常见的计算机输入设备,广泛应用于微型计算机和各种终端设备上,计算机操作者通过键盘向计算机输入各种指令、数据,指挥计算机的工作。因此键盘设计的好坏,将会直接关系到系统的可靠性与稳定性。本文采用键盘控制芯片BC728l和单片机AT89S52的输入/输出接口设计一个具有功能键的键盘。
按键接口一般可分为独立式按键接口设计、矩阵式按键接口设计和专用芯片式按键接口设计。独立式按键的接口设计是各按键相互独立的接通一条输入数据线,每个键的工作不会影响其它的I/O口,这种键盘的优点是电路简单;缺点是当键数较多时,要占用较多的I/O线,造成资源浪费。因此,独立式按键接口设计主要用于按键较少且对操作速度要求高的场合。矩阵式键盘较独立式键盘节省I/O口。矩阵式
键盘由行线和列线组成,按键位于行、列线的交叉点上。
专用按键处理芯片一般功能比较完善,芯片本身能完成对按键的编码、扫描、消抖和重健等问题的处理,使得它的优点很明显,其可靠性高、接口简单、使用方便,也适合处理按键较多的情况。基于计算机键盘中按键较多、可靠性要求较高等综合情况考虑,选用专用芯片式按键接口设计。
BC7281具有64键键盘接口,内建去抖功能;具有两种键盘工作模式,适应不同的应用需求;具有寄存器保护(抗干扰模式),可靠性高;键盘部分具有键值锁存功能;具有两线高速串行接口。
1 硬件设计
1. 1 键盘接口设计
BC7281最多可以连接64个按键,在此处需要用到40个按键,按8x5矩阵排列,矩阵的“行”连接到BC7281的位驱动DIG0-DIG7,矩阵的“列”连接到74HC164驱动移位寄存器的输出,当使用BC7281的键盘功能时,DIG0-DIG7应加上100k的下拉电阻,且8根引脚必须都接入下拉电阻。键盘接口设计如图1所示。其中功能键C1、G2、G3、G4的“列”连接Q4,“行”分别连接DIG4、DIG5、DIG6、DIG7,键值分别为24H、25H、26H、27H;其余键值均小于24H,其中0-9键的键值为00H-09H,a-z键的键值为0AH-23H。
![](../img/eep/emb/emb-53273bye2gfsblfx.jpg)
1. 2 BC7281接口电路设计
BC7281的14脚为电源引脚,为了获得更好的抗干扰能力,在电源引脚与地之间串入了一个RC滤波电路,以滤除电源中的尖峰和毛刺;BC7281采用外接的RC振荡电路为键盘扫描提供时钟驱动,外接元件的典型参数为R=1.5k~3.3k,C=20 pP,当采用比较小的电阻值时,振荡频率较高,可以获得更快的通讯速率和扫描频率,使得占用CPU时间更少,故选用1.5k电阻;因为BC7281的内部有上电复位电路,因此在一般情况下不需要特殊的复位电路,只需将RST引脚直接连接到VCC端就可以了;BC7281与AT89S52单片机的接口共需要三根线,数据线DAT、时钟线CLK和按键指示KEY,其中CLK和KEY引脚分别为输入和输出引脚,而DAT则为双向口,其内部为漏极开路输出结构,需要外接上拉电阻,以使其能可靠地输出高电平。BC7281在KMS=0模式时具有按键保存功能,在按键被读走之前,KEY将一直维持低电平,因此对按键使用查询方式即可,但在本设计中需要用到功能键,故把KEY接到了单片机AT89S52的INT1引脚上,以便用到中断处理方式。如图2所示。
![](../img/eep/emb/emb-53274lkqw41sx1ha.jpg)
2 软件设计
2.1 主程序流程图
首先将BC7281初始化,为防止按键输入产生误动作,可在主程序中将BC7281芯片定义为二键互锁状态(当KMS=0时,为带锁有的互锁模式,即有效按键发生后,KEY即为低电子,直至MCU读取按键后KEY恢复高电平,这期间不响应任何新的按键),保证功能键和数据键的正确输入,当有键按下就取出键值,并判断是功能键还是数据键,且转到相应的子程序中去处理。其中功能键的键值大于23H。
![](../img/eep/emb/emb-53275ssfgtvgd4pm.jpg)
2.2 中断服务程序
当有键按下时,BC7281芯片申请中断,AT89S52响应中断,进入中断服务程序。将键值代码送入FIFO堆栈中,中断服务程序流程图如4所示。
![](../img/eep/emb/emb-53276hmhnwih4jxd.jpg)
功能键处理:当检测到输入为功能键时,在AT89S52中置一个标志位,并把标志位传给PC,然后再检测下面的键,如果还是功能键又置一个标志位传给PC,PC通过对功能键组合的识别,来做出相应的处理。
3 结论
本设计采用的键盘控制芯片,能完成对按键的编码、扫描、消抖和重健等问题的处理,可代替微处理器完成对键盘的控制,减轻主机负担,而且硬件电路可靠。还可以通过中断的方式来实现功能键的处理。
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 基于嵌入式 Linux的键盘驱动设计(12-01)
- 基于ADSP-BF561的嵌入式键盘设计(05-08)
- 基于Linux和QT/E的软键盘设计(05-18)
- 使用MAX II CPLD 作为模拟键盘编码器(06-06)
- CPLD在无功补偿控制仪键盘中的设计应用(06-05)