设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 955|回复: 0
收起左侧

Quartus Verilog HDL/FPGA 自锁按钮 1个按键25毫秒消抖实现控制1个LED的亮灭翻转

[复制链接]
发表于 2021-12-15 14:51:50 | 显示全部楼层 |阅读模式
main.png
晶振频率:50Mhz 按键:低电平按下 LED:低电平点亮
上电初始熄灭LED,按键按下25毫秒后,LED点亮,再按熄灭。
  1. module main(
  2.         input clk,                        //50Mhz时钟输入 Pin17
  3.         input skey,                        //按键 Pin144 按下清0 松开置1 (未消抖)
  4.         output reg sled                //LED Pin3 (低电平点亮)
  5. );

  6. reg [15:0] i = 0;                        //1ms分频寄存器
  7. reg [7:0] KEYms = 0;        //按键按下计数时间(毫秒 最大255) 松开清0
  8. reg key;                                                //按键按下清0 松开置1 (已消抖)
  9. reg led = 1;                                        //上电初始灭灯
  10. always @(posedge clk) begin                //CLK上升沿触发
  11.                 sled = led;
  12.                 i = i + 1;
  13.                 if(i == 50000) begin                        //50000个时钟即为1mS
  14.                         i = 0;
  15.                         if(skey) begin
  16.                         KEYms = 0;
  17.                         end else begin
  18.                                 if(KEYms != 255) begin
  19.                                 KEYms = KEYms + 1;
  20.                                 end
  21.                         end
  22.                         key = (KEYms >= 25) ? 0 : 1;                        //消抖25mS
  23.                 end
  24.         end

  25. always @(negedge key) begin                //KEY下降沿触发(按键按下)
  26.                         led = !led;                                        //LED亮灭翻转
  27. end
  28. endmodule
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-25 08:51 , Processed in 0.605035 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表