1 特点及引脚功能
SK5278是福州贝能科技有限公司推出的采用PIC内核的键盘控制器。该芯片采用4线串行接口,可与任何种类的单片机接口;它具有按键有效指示输出,可用中断方式管理键盘;其行线X0~X3与列线Y0~Y3可构成4×4键盘矩阵;SK5278的16键键盘控制器内含去抖动处理电路,因而可直接输出键值;此外,该器件的工作电源电压范围宽达4~6V;SK5278采用18脚双列直插DIP封装形式。其管脚排列如图1所示,管脚说明如表1所列。
表1 SK5278管脚说明
管脚号
管脚名称
管脚类型
功 能
1
DIO
O
数据输出端,读取键盘数据时,此脚在CLK上升沿输出数据
2
KEY
O
按键有效输出端,平时为低电平,当检测到有效按键时,此引脚变为高电平。读取键盘后,此引脚重新变为低电平
3,14
VDD
正电源
4
RST
复位端
5
VSS
电源地
6~9
X0~X3
I
矩阵键盘行线输入端
10~13
Y0~Y3
O
矩阵键盘列线输出端
15
OSCO
O
振荡输出脚,输出频率为RC振荡频率四分之一
16
RC
外接振荡器连接端,R=3.3kΩ,C=20pF时,振荡频率为4MHz
17
CS
I
片选端,该脚为低时,可芯片读取键盘数据
18
CLK
I
时钟输入端,读取键盘数据时,此脚电平的上升沿表示数据有效
2 工作原理
SK5278可用行线X0~X3和列线Y0~Y3构成4×4矩阵键盘。同时在芯片内部可自动完成扫描、译码、去抖动处理等任务。当SK5278检测到有效的按键时,按键有效指示“KEY”引脚将从低电平变为高电平,并一直保持到按键代码被读取为止。在“KEY”为高电平期间,如果SK5278接收到“读键盘数据”命令,(即“CS”管脚变低),则输出当前按键的键盘代码,SK5278键盘代码的范围为00H-0FH。如果在接收到“读键盘数据”时没有按键按下,SK5278将输出FFH。在一次读键盘过程完成后,按键有效指示“KEY”将变为低电平。利用按键有效指示“KEY”与单片机的外部中断端相连,可完成具有中断的键盘监控功能,从而提高CPU的工作效率,减少按键响应时间。
SK5278工作时需要外接RC振荡电路以供系统工作,RC元件的典型值为R=3.3kΩ,C=20pF,此时的振荡频率约为4MHz,由于此振荡频率较高,故在印制电路板布线时,所有元件尤其是振荡电路的元件应尽量靠近芯片,并尽量使电路连线最短。
SK5278的RESET复位端在一般应用情况下,可以直接与正电源连接,在需要较高可靠性的情况下,可以连接外部RC复位电路,在上电或接收到RESET端的复位信号后,SK5278大约需要经过25ms的复位时间才会进入到正常工作状态。程序中应尽可能地减少CPU对SK5278的访问次数,以提高程序的效率。
值得注意的是,如果有2个键同时被按下,则SK5278只能给出其中一个按键的代码,因此SK5278不适合应用于需要2个或2个以上按键同时被按下的应用场合。如确实需要双键组合使用或组合增加键盘数量,可在单片机的某I/O脚接入一键与SK5278共同组双键键盘监控电路。
3 串行接口及时序
SK5278采用串行方式与单片机或微处理器接口,串行数据从“DIO”引脚输出,并由“CLK”端发出同步时钟脉冲。当SK5278检测到有键按下时,按键有效指示“KEY”变高,单片机检测到“KEY”信号变高后,便将片选端“CS”拉低,从而使得SK5278将取得的键盘数据在“CLK”引脚的上升沿从“DIO”脚依次送出。在单片机发出8个时钟脉冲后,即可从“DIO”端读取8位键值编码,该编码值的D7为最高位,D0为最低位,然后单片机再使片选“CS”变高,并使“KEY”端重新输出低电平,至此,读键值过程结束。SK5278的串行接口时序如图2所示。图中,T1表示从“CS”下降沿至第一个CLK上升沿的延时,典型值为15μs;T2为CLK脉冲宽度,典型值为10μs;T3为CLK脉冲时间间隔,典型值为10μs。
4 应用电路
利用SK5278串行接口占用单片机口线少及无键按下时无须CPU干预的特点,可以很容易地构成单片机的键盘接口电路,图3所示是AT89C2051单片机与SK5278构成的键盘及接口电路。图中,AT89C2051的P1.2、P1.3、P1.4口线分别与SK5278的“CS”、“CLK”、“DIO”端相连。为了提高按键的响应速度并减少单片机的干预。本方案将SK5278的按键有效指示端“KEY”与AT89C2051的外中断端INT0相连,由于INT0为低电平中断,故而加入了一级非门以使“KEY”反相后与其相连。与图3电路对应的键盘处理程序如下:
;位定义
COUNT DATA 70H
RXBUF DATA 20H
;I/O定义
DIO BIT P1.4
CS BIT P1.2
CLK BIT P1.3
;主程序
MAIN:MOV SP,#50H
MOV P1,#0FFH ;将P1口置为输入
SETB IT0 ;INT0为边沿触发
SETB PX0 ;INT0为高优先级中断
SETB EX0 ;开INT0中断
SETB EA ;CPU开中断
LCALL DL25ms ;延时25ms等待SK5278复位
;INT0键盘中断程序
INT0:LCALL RECEIVE ;读键值
MOV A,RXBUF ;键值送A
CJNE A,#00H,KEY-1 ;K0键未按下转下键
LJMP KEY0 ;K0键按下,转入相应键值处理子程序
KEY1:CJNE A,#01H,KEY-2;
LJMP KEY1 ;K1键按下,转入相应键值处理子程序
KEY2:…
……
KEY15:CJNE A,#0FH,KEYFH ;K15键未按下,中断返回
LJMP KEY15 ;KEY15键按下,转入相应键值处理程序
KEYFH:RET; 无键按下时中断返回读键盘值程序
RECEIVE:CLR CS ;读键盘数据有效
SETB DIO ;将DIO置为高电平输入状态
ACALL DL 15μs ;T1延时
MOV COUNT,#08H ;共八位数据
LOOP:SETB CLK
ACALL DL 15μs ;T2延时
MOV A,RXBUF
RL A ;数据左移一位
MOV RXBUF,A
MOV C,DIO ;读取一位数据
MOV RXBUF.0,C
CLR CLK
ACALL DL 15μs ;T3延时
DJNZ COUNT,LOOP
SETB DIO ;将DIO重置为高电平输入
ACALL DL 15μs
SETB CS ;读键盘数据无效
RET
5 结束语
应用SK5278键盘控制器可使单片机系统的人机交互键盘接口电路及监控程序变得简单容易,同时减少了对单片机软硬件资源的占用,因而该器件是构成少数单片机键盘接口电路的一种较好的选择方案。