·上一文章:基于CPLD的全帧型CCD图像传感器驱动系统设计
·下一文章:借助创新电子设计平台实现FPGA嵌入式系统设计
(2)该设计中采用4×4的键盘,有16个按键状态,再加上一个没有键按下的状态共有17个状态,而4位二进制数只能表示16个状态。为了解决这个问题,将R4和L4或非后再与计数器产生的中断信号相或,产生一个单片机中断。当按下最后一个键时,键盘控制器便产生1个中断,让单片机来读取这个按键值0000(在没有键按下时也是这个状态),从而区分了无按键状态和最后一个按键按下的状态。这样在编码的时候只需考虑前15个键的状态信息。最终可用4位二进制数表示所有按键状态。图4给出实现编码器的具体原理图。
(3)键盘去抖动电路主要由2个DQ触发器和1个基本RS触发器组成。当有键按下时,理想情况下相应的列线应该是一直保持低电平。
但是实际应用中不可避免地产生抖动,此时列回复线将发生长短不等的高电平跳跃现象。键盘去抖电路就是去除这样抖动的高电平对按键键值检测带来的干扰。为了消除这样的干扰,去抖电路采用两级延时策略。
只要抖动的高电平持续时间在去抖电路的2个时钟周期之内,这种抖动是不会被引进编码电路的。键盘去抖电路的具体原理图实现如图5所示。
3 仿真实验及分析
3.1 扫描电路的输出仿真波形
键盘控制器扫描电路的输出仿真波形如图6所示。在图6中扫描电路的输出端依次循环输出低电平来扫描键盘的每一行,图中L1~L4是没有加三态门的扫描器输出,其作为编码电路的输入,R1~R4是加三态门的输出波形,从图3中可以看出当L1~L4的输出是高电平时,R1~R4的输出状态是高阻。