孟 星,夏海飞 ,徐晓秋
(1.四川大学 制造科学与工程学院,四川 成都 610065;2.昭通供电局 云南 昭通 657000)
按键接口一般可分为独立式按键接口设计、矩阵式按键接口设计和专用芯片式按键接口设计[1-2]。独立式按键的接口设计是各按键相互独立的接通一条输入数据线,每个键的工作不会影响其它的I/0口,这种键盘的优点是电路简单;缺点是当键数较多时,要占用较多的I/O线,造成资源浪费。因此,独立式按键接口设计主要用于按键较少且对操作速度要求高的场合。矩阵式键盘较独立式键盘节省I/O口。矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。
专用按键处理芯片一般功能比较完善,芯片本身能完成对按键的编码、扫描、消抖和重健等问题的处理,使得它的优点很明显,其可靠性高、接口简单、使用方便,也适合处理按键较多的情况。基于计算机键盘中按键较多、可靠性要求较高等综合情况考虑,选用专用芯片式按键接口设计。
BC7281具有64键键盘接口,内建去抖功能;具有两种键盘工作模式,适应不同的应用需求;具有寄存器保护(抗干扰模式),可靠性高;键盘部分具有键值锁存功能;具有两线高速串行接口[3]。
BC7281最多可以连接64个按键,在此处需要用到40个按键,按8×5矩阵排列,矩阵的“行”连接到BC7281的位驱动DIG0—DIG7,矩阵的“列”连接到74HC164驱动移位寄存器的输出,当使用BC7281的键盘功能时,DIG0—DIG7应加上100k的下拉电阻,且8根引脚必须都接入下拉电阻[4]。键盘接口设计如图1所示。其中功能键G1、G2、G3、G4的“列”连接 Q4,“行”分别连接 DIG4、DIG5、DIG6、DIG7,键值分别为24H、25H、26H、27H;其余键值均小于 24H,其中 0—9键的键值为00H—09H,a—z键的键值为0AH—23H。
BC7281的14脚为电源引脚,为了获得更好的抗干扰能力,在电源引脚与地之间串入了一个RC滤波电路,以滤除电源中的尖峰和毛刺;BC7281采用外接的RC振荡电路为键盘扫描提供时钟驱动,外接元件的典型参数为R=1.5k~3.3k,C=20 pF,当采用比较小的电阻值时,振荡频率较高,可以获得更快的通讯速率和扫描频率,使得占用CPU时间更少,故选用1.5k电阻;因为BC7281的内部有上电复位电路,因此在一般情况下不需要特殊的复位电路,只需将RST引脚直接连接到VCC端就可以了;BC7281与AT89S52单片机的接口共需要三根线,数据线DAT、时钟线CLK和按键指示KEY,其中CLK和KEY引脚分别为输入和输出引脚,而DAT则为双向口,其内部为漏极开路输出结构,需要外接上拉电阻,以使其能可靠地输出高电平[4]。BC7281在KMS=0模式时具有按键保存功能,在按键被读走之前,KEY将一直维持低电平,因此对按键使用查询方式即可,但在本设计中需要用到功能键,故把KEY接到了单片机AT89S52的INT1引脚上,以便用到中断处理方式[5]。如图2所示。
图1 键盘接口设计Fig.1 The design of keyboard interface
图2 BC7281接口电路设计Fig.2 The design of BC7281 interface circui
首先将BC7281初始化,为防止按键输入产生误动作,可在主程序中将BC7281芯片定义为二键互锁状态 (当KMS=0时,为带锁存的互锁模式,即有效按键发生后,KEY即为低电平,直至MCU读取按键后KEY恢复高电平,这期间不响应任何新的按键),保证功能键和数据键的正确输入,当有键按下就取出键值,并判断是功能键还是数据键,且转到相应的子程序中去处理。其中功能键的键值大于23H。
图3 主程序流程图Fig.3 Flow chart the main program
当有键按下时,BC7281芯片申请中断,AT89S52响应中断,进入中断服务程序[6]。将键值代码送入FIFO堆栈中,中断服务程序流程图如4所示。
图4 中断程序流程图Fig.4 Flow chart the interrupt program
功能键处理:当检测到输入为功能键时,在AT89S52中置一个标志位,并把标志位传给PC,然后再检测下面的键,如果还是功能键又置一个标志位传给PC,PC通过对功能键组合的识别,来做出相应的处理。
本设计采用的键盘控制芯片,能完成对按键的编码、扫描、消抖和重健等问题的处理,可代替微处理器完成对键盘的控制,减轻主机负担,而且硬件电路可靠。还可以通过中断的方式来实现功能键的处理。
[1]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2010.
[2]韩俊峰,海涛,陈文辉,等.单片机原理及应用[M].北京:机械工业出版社,2010.
[3]方勇军,王云景,鲁毅钧,等.BC7281和它的应用[J].仪表技术,2002(4):43-44.FANG Yong-jun,WANG Yun-jing,LU Yi-jun,et al.BC7281 and Its Application[J].Instrumentation Technology,2002(4):43-44.
[4]BC7281B Data Book[EB/OL].http://www.bitcoode.com.cn.
[5]郭文川.MCS-51单片机原理、接口及应用[M].北京:电子工业出版社,2013.
[6]安晓莉.AT89S51单片机开发板的设计[J].电子设计工程,2009(9):121-123.AN Xiao-li.Design of AT89S51single-chip development board[J].Electronic Design Engineering,2009(17):121-123.