
一、移位消抖:process(clk,key_in)
variable filter:std_logic_vector(2 downto 0)
begin
if clk'event and clk = '0'亏拍 then
filter(2 downto 1) := filter(1 downto 0)
filter(0) := key_in
if filter = "000" then key_out <='0'
else key_out <= '1'
end if
end if
end process
二、延时消抖:把按键信号跟一个200HZ左右的时钟信号通过一个二输入与门输出
不拿明懂的可以跟我交流
是应该还有col的输出,这才是整个扫描程序的重点。亏悔如果扫描的原理懂了的话,程序好像也没这么难理解啊,简单讲一下,在NO_KEY_PRESSED,col输出0000,如果有按键按下,当前行的row连接到col,则按下的那一行电平为0,转到SCAN_COL0。行值由row可知,开始逐列销芦正扫描以确定列值;在SCAN_COL0状态,col输出1000,若是第一列的按键,则row应该变哗源为1111,即可确定是第一列,否则转到第二列扫描,col输出0100···类推欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)