您的位置 首页 电子

选用ispLSI1016芯片完成4×5键盘控制器规划

采用ispLSI1016芯片实现4×5键盘控制器设计-无论在任何计算机系统中,键盘都是最重要的输入设备,但是普通键盘不能满足机载要求。在新一代电子航空图导航系统中,用Lattice公司的ispLSI1016设计了一个4×5键盘控制器(以下简称KBC),经实际应用,该键盘控制器通用性较强。图1是其键盘和显示器外观示意图。

1、 键盘操控器的外部接口信号

不管在任何计算机体系中,键盘都是最重要的输入设备,可是一般键盘不能满意机载要求。在新一代电子航空图导航体系中,用Lattice公司的ispLSI1016规划了一个4×5键盘操控器(以下简称KBC),经实践运用,该键盘操控器通用性较强。图1是其键盘和显示器外观示意图。

选用ispLSI1016芯片完成4×5键盘操控器规划

一航情况下,KBC应该是CPU的一个外部I/O设备,它一方面监测各按钮状况,另一方面承受CPU的查询并主意向CPU恳求中止。因而,外部接口信号分CPU接口信号和键盘按钮矩阵状况信号。图2为通用KBC外部接口信号示意图,其界说如下:

*Reset:复位,低有用。该信号有用时将异步复位内部一切寄存器,以对KBC进行初始化;

*CLK:作业时钟,频率为100kHz;

*CS:片选,低有用;

*RD:读信号,低有用;

*A0:片内地址,用于区分片内寄存器;

*INT:中止恳求,高有用。当键盘操控器检测到有用按键时,该脚为高,当CPU读走按键编码时,KBC主动吊销中止恳求;

*D4~D0:三态数据线;

*SL3~SL0:扫描输出,按键盘矩阵的列线;

*RL4~RL0:回复线,接键盘矩阵的行线。

实践上,大部分矩阵键盘的队伍是可对换的。

2、 KBC接口寄存器界说及驱动程序

KBC针对CPU接口规划有2个只读寄存器,即数据寄存器(Dreg)和状况寄存器(Sreg)。数据寄存器用于坚持有用按键的编码值,该编码值便是按键地点的队伍;而状况寄存器则用于坚持按键的状况信息,以供CPU查询。当CPU拜访KBC时(即CS和RD一起有用),adk A0=0,则拜访数据寄存器,不然拜访状况寄存器。表1、表2分别是数据寄存器和状况寄存器的界说。

明显,KBC的编程可以有2种形式,一种是软件查询,另一种是中止驱动。因为本体系选用WindowNT为运转环境,KBC对运用程序通明,所以,将INT恳求直接和CPU的某一闲暇中止(IRQ9)相连接,以便使驱动程序能将KBC作为一个设备翻开。在初始化加载时,应将对应中止触发设置为电平灵敏。其VC中心代码如下:

#define SReg 0x401 //键盘状况寄存器地址

#define DReg 0x400 //键盘数据寄存器地址

BYTE SR,Key,Row,Col;

SR=inp(SReg)&0x1f;

//读数据寄存器,低6位有用

Col=Key》》3;

//右移3位,提取按键列值

Row=Key & 0x07;//提取按键行值

}

至此,就可依据Row和Col的值将它翻译为某一规范键,并存入NT键盘缓冲区。

3 、KBC内部逻辑规划

内部操控逻辑规划的关键是把握按键辨认原理。图3所示是其键盘辨认原理图。设计时,可将按键设置内行线、列线的交点上。行线通过上拉电阻接到VCC(+5V),无按键时处于高电平。有按键时行线电平状况由列线决议。一切列线均为高则行线高,任一列线为低则行线低。KBC处理的中心就在于承认某一行线为低时,能定位出对应的列线。

3.1 输出扫描线(SL3..SL0)

在规划输出扫描线时,可以运用一个2-Bit状况机Q5[L1..0]来顺次轮番使扫描线输出为低电平。驱动时钟的周期为640ms,亦即每即扫描线继续640ms的低电平。将状况机的状况编码值和其时周期为低电平的扫描线序号对应起来,即可简化后续处理。图4是扫描线输出波形。留意,不管何种按键组合,在任一状况,有且仅有一个扫描线为低电平,不然后续处理将无法正确辨认。

3.2 键盘编码

处理回复线(RL4..RL0)时,应该对其间为低电平的行线进行编码。5个行线需求3-Bit寄存器,记为[RQ5..RQ0],其真值表如下:

[RL4..RL0] -》[RQ2..0]

—————-

[H,H,H,H,L] -》[0,0,0];0

[H,H,H,L,H] -》[0,0,1];1

[H,H,L,H,H] -》[0,1,0];2

[H,L,H,H,H] -》[0,1,1];3

[L,H,H,H,H] -》[1,0,0];4

当KBC承认是有用按键后,应把队伍编码值放入缓冲,以供CPU读取,其逻辑表达如下:

式中,[KSL1,KSL0]是记载有用按键的扫描线编码,即其时的[QSL1..0]状况。

3.3 CPU的读操作

CPU读状况寄存器时,体系把中止恳求寄存器INT的值送出,而读数据寄存器时,它将把FIFO缓冲的按键值送出,处理CPU读操作的表达式如下:

[D4..D0].oe=!CS & !RD; //寄存器由三态操控

[D4..D0]=(!A0 & [FIFO4..FIFO0])# //A0=0:送按键数据

(A0 & [L,L,L,L,INT]); //A0=1;送状况

INT.ar=!Reset #(!CS&!RD & !A0);//读数据寄存器时应吊销中止

3.4 键盘处理状况机

该状况处理机是KBC处理的中心。图5是其状况搬运图,其驱动时钟应该比扫描周期快并且应该是它的整数倍。此处选用的80ms时钟周期是扫描周期的8倍。下面评论其状况搬运条件。

S0:复位状况

1.记载其时扫描周期

2.if若有低电平的回复线then S1 else S0;

S1:

1. 发动延时(去抖)计数器,延时10.24ms

2. 无条件进入下一状况S2

S2:去抖状况

if去抖正确then S3

else S0

S3:承认状况

1. 将有用键值打入FIFO缓冲

2. 设置

4 、改善主张

上述KBC完全可以满意一般体系对键盘的要求,但仍然可以改善以使之愈加智能化。例如使CPU可以对KBC的读操作和写入操控字进行恰当操控、使KBC可处理组合按键和按键连击、添加KBC多字节的缓冲等。上述功用完全可以依据规划者体系和运用程序的要求进行改善。

责任编辑:gt

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/87289.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部