微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 键盘控制状态机问题

键盘控制状态机问题

时间:10-02 整理:3721RD 点击:
键盘控制状态机问题我用键盘控制状态机转移,键盘的频率要比状态机低得多。我想按一下键状态机转移一次,再按这个键再转移一次,但是因为频率差距大,我按一下键,状态机转移了无数次。我设置了一个标志位来标志没有键按下,这样只有抬起按键后再按下才转移,一直按下按键也值转移一次,可是问题来了,只要加了这个标志位信号,状态机就不转移了,没有反应了,请大家帮助,给个比较好的解决办法。谢谢

你可以检测键按下与键释放两个事件来驱动状态机

不应该是按下键状态机转移一次,因为按键有长按,短按的区别。
应该设计一个状态机,当检测到有键按下,开始定时扫描键值。当检测到所有键释放了,停止扫描键值。
将键值变化报告给软件,由软件决定如何处理。

学到了不少!

值得研究一下

你可以这么做:
利用一个移位寄存器
假如你要排除抖动,需要按键按下4个周期以上才认为有效信号到来
那么利用一个5bits的移位寄存器
假设按下为1,没有按下为逻辑0
每周期采样按键打入移位寄存器
然后判断移位寄存器的状态为:01111那么可以判断有效按键到来
(常按的话移位寄存器的值为11111)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top