单片机串行接口 [串行接口键盘控制器SK5278及其在单片机系统中的应用]

串行接口键盘控制器SK5278及其在单片机系统中的应用

串行接口键盘控制器SK5278及其在单片机系统中的应用 关键词:键盘控制 串行接口 单片机 SK5278 对于以单片机为核心构成的智能仪器、仪表、工控设备及家用电器而言, 构成人机交互的键盘接口电路是必不可少的,而相应的键盘管理软硬件设计却比 较麻烦。简单的矩阵键盘存在着占用CPU软硬件资源多、响应速度慢、监控软件 编制复杂等问题,专用的键盘接口器件如INTE8279、HD7219又往往具有LED数 码管显示电路,如果仅使用其键盘管理功能,则存在硬件资源浪费,接口电路复 杂,造价较高等问题,SK5278即是为解决上述键盘管理问题而推出的一款键盘 控制芯片。

1 特点及引脚功能 SK5278是福州贝能科技有限公司推出的采用PIC内核的键盘控制器。该芯 片采用4线串行接口,可与任何种类的单片机接口;
它具有按键有效指示输出, 可用中断方式管理键盘;
其行线X0~X3与列线Y0~Y3可构成4×4键盘矩阵;

SK5278的16键键盘控制器内含去抖动处理电路,因而可直接输出键值;
此外, 该器件的工作电源电压范围宽达4~6V;
SK5278采用18脚双列直插DIP封装形式。

其管脚排列如图1所示,管脚说明如表1所列。

表1 SK5278管脚说明 功 能 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键盘控制器可使单片机系统的人机交互键盘接口电路及监控 程序变得简单容易,同时减少了对单片机软硬件资源的占用,因而该器件是构成 少数单片机键盘接口电路的一种较好的选择方案。