采用ispLSI1016芯片实现4×5键盘控制器设计

1、 键盘控制器的外部接口信号
无论在任何计算机系统中,键盘都是最重要的输入设备,但是普通键盘不能满足机载要求。在新一代电子航空图导航系统中,用lattice公司的isplsi1016设计了一个4×5键盘控制器(以下简称kbc),经实际应用,该键盘控制器通用性较强。图1是其键盘和显示器外观示意图。
一航情况下,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多字节的缓冲等。上述功能完全可以根据设计者系统和应用程序的要求进行改进。


电子管收音机的优点_电子管收音机改装胆机
行业资讯|百度造的第一辆智能“汽车机器人”!明年能否顺利量产?
织物感应式静电测试仪的适用范围以及技术参数
如何利用ANSYS Material Designer,对复合材料进行均质化分析?
京东方重庆第6代AMOLED生产线项目预计年底投产
采用ispLSI1016芯片实现4×5键盘控制器设计
关于特种电缆与普通电缆,它们的区别是什么
高速性能+周密防护双加持,朗科PSSD移动固态硬盘Z11神了
德关于州仪器OMAP3630应用处理器与 USB解决方案
晶体硅光电池的种类有哪些?
有源滤波电路是什么样的
苹果向三星订购7000万块oled屏,用于今年生产iphone8
vscode提示无法在大型工作区监视文件更改的解决方法
VMware虚拟机进行联网的方法和原理说明
西部数据推出SanDisk ProfessionalTM闪迪大师品牌
作业台主动循环操控电路
格力公开磁悬浮床垫相关专利
Allegro汽车级单片霍尔效应电流传感器主要优势
用于光刻胶去除的单晶片清洗技术
微软SurfaceBook发布全新升级版 26日已开启预购通道