EDA技术在微机接口技术实验教学中的应用

时间:2012-03-16来源:网络

2.4 按键长按、去抖及相关问题的解决

本设计中,如果长时间(超过2个扫描周期)按同一按键视为单次按键,处理方法如下:每次扫描到的键码与暂存在data_key的键码相比,如果相等则说明按键未释放,不作处理;如果不等说明有新的按键按下,则触发中断。这样设计解决了长按键的问题,但产生了新的问题:如果下次(间隔了若干个扫描周期)还是同一键按下,那么会扫描到同一键码,按照上述处理机制,这个键码是不送数据线的,这是不正确的。

我们注意到,同一按键按下间隔的时钟周期理论上为4个周期(按本设计4行扫描线计算),在本设计中,采用16.384 MHz时钟,采用计数的方法进行分频,得到125 Hz的参考时钟,故需要32 ms。在实际应用中,任何操作人员也达不到这个速度。所以,这里可以采用一个小技巧:

设计一个计数器,每扫描到一次为0键码(无键按下),计数器加1。如果有键按下,即扫描到的键码不为0,则计数器清零;如果计数到某一数值(即时间大于一个扫描周期),则保持当前计数不变。这样通过综合分析,得出触发中断、要求得到响应的条件为:

(1) 扫描到的键码不为0;

(2) 本次扫描到的键码和寄存器data key中的暂存码不同;

(3) 计数器当前计数值大于3;

这样就解决了不同按键的响应问题,或者:

(1) 扫描到的键码不为0;

(2) 计数器当前计数值大于等于5。

这样就解决了在以上功能实现前提下同一按键连续按下的响应问题。

大量实践经验证明,按键抖动时间一般为10 ms(保守估计),本设计中扫描时钟为8 ms,在满足快速响应按键的同时,在较大程度上也实现了键盘去抖的功能。

2.5 VHDL程序设计

限于篇幅,这里只给出一组扫描线情况(ROW=“1110”)下按键识别的设计实现方法:

1 2 3 4

关键词: EDA 微机 接口技术 实验教学

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

或用微信扫描左侧二维码

相关文章

查看电脑版