基于CPLD的矩阵键盘扫描模块设计

时间:2010-12-20来源:网络


键盘编码输出模块的时序仿真图如图5所示。


2.4 接口模块(PCPORT)的功能与时序仿真
该模块用于实现CPU读入键盘码以及矩阵键盘控制信号的输出。开始时,CPU首先应通过该模块送出OSCEn=‘1’信号,使振荡器模块(OSC)和时钟产生模块(CreatClock)开始工作,产生驱动扫描模块工作的时钟信号F3kHz:接下来送出键盘禁止信号enKeyOut=0;禁止矩阵键
盘在稳定工作前随机输出按键值;其次送出清除键盘缓存状态指示位的ClrKey信号;最后再送出键盘使能信号enKeyOut=‘1’,开始模块扫描键盘工作。接口模块的时序仿真图如图6所示。


2.5 其他模块的功能
振荡器模块(OSC)为利用Altera公司的IP核产生的MAXII系列CPLD内带的振荡器,用于在使能信号的控制下产生3.3 MHz的时钟输出。
时钟产生模块(CreatClock),用于将3.3 MHz的时钟分频产生3 KHz的键盘扫描时钟,驱动整个键盘扫描模块工作。

3 控制软件的设计
本文软件设计的基本思想是:CPU利用定时中断查询矩阵键盘状态并读入矩阵键盘的按键码,如果按键码为需要立即响应的特殊功能键(如热启动键),即在中断服务程序中作出处理,否则直接送入与标准键盘共用的键盘缓冲区,在键盘缓冲区与标准键盘送来的按键码一起排队等待CPU响应处理,从而实现双键盘同时工作。在向键盘缓冲区写入按键值时,必须使用DOS软中断,否则会由于中断优先级的原因而使新写入的按键码得不到响应。
矩阵键盘的控制软件采用C语言编制,利用PC104的定时器中断定时查询矩阵键盘,如果有键值,将其存入PC104的键盘缓冲区,等待PC104使用。控制程序的源码如下:


4 测试结果
本文所述的键盘扫描模块已经在多功能电法接收机中使用,在使用过程中对矩阵键盘的响应时间、准确度、CPU处理时间占用、以及双键盘同时工作性能等指标进行了测试分析,结果如下:
1)矩阵键盘响应时间和准确度测试,理论上计算矩阵键盘的最短响应时间为T=t1+t2+t3+t4=55.9 ms(其中,t1为防抖动延时时间30ms;t2键盘扫描最短用时,共扫描2次用22个F3 kHz时钟周期6.6 ms;t3为键盘值暂存时间,3个F3kHz时钟周期1 ms;t4为查询键盘中断间隔18.3 ms),考虑到操作键盘的速度,测试方法为全部16个键以3次/s的速度连续按6次,间隔5 s换一个键,将键值输出到显示器观察输入情况,测试结果为:总按键数:96;显示按键数:96;漏判按键数:0;错判按键数:0;准确率:100%。
2)矩阵键盘占用CPU时间分析,通过对矩阵键盘按键值的读入程序分析可知,当允许矩阵键盘输出且有键按下时,每次中断服务程序需要额外执行8条语句,大约用时4μs;当允许矩阵键盘输出且没有键按下时,每次中断服务程序需要额外执行3条语句,大约用时1.5μs;与CPU完成矩阵键盘扫描工作(假设从键按下到释放一般用时300 ms)相比,一次按键读入CPU占用时间节省99.998%。
3)双键盘同时工作测试,测试方法将矩阵键盘和标准键盘同时接入系统,按1次/s的速度交替按两键盘的按键100个,在显示器上观察按键输出情况,得出双键盘工作可靠性数据如下:总按键数:200;显示按键数200;漏判按键数:0;错判按键数:0;准确率:100%。因此,该模块可以实现双键盘同时工作。

5 结论
该模块经过测试和使用,得出如下结论:1)基于CPLD的矩阵键盘扫描模块占用CPU时间很少;2)可以实现双键盘同时工作;3)误判、漏判率低;4)反应速度快,能够处理组合键。测试结果表明,该方案满足设计要求。该模块以按键的放开控制按键编码输出,因此在键按下一段时间后到释放按键之前不能按一定的间隔连续输出按下键的键值,矩阵键盘没有连续按键输出功能。键盘码的读入采用PC104定时器中断(18.3 ms一次)定时查询的方式实现,在大多数情况下都不会查询到按键事件发生,也就是说矩阵键盘占用的比较少的CPU处理时间中绝大部分被白白浪费。如果能够修改接口模块实现更灵活的按键外中断触发方式读入键值,还可以节省更多的时间。

1 2 3

关键词: CPLD 矩阵 键盘扫描 模块设计

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版