回答

收藏

[评测分享] 【超越者Spartan-6 FPGA开发板】 +3、电容触摸按键测试

#板卡评测 #板卡评测 1664 人阅读 | 0 人回复 | 2021-05-08

本帖最后由 TLLED 于 2021-5-8 08:09 编辑

    这节来学习下电容触摸按键的驱动。        功能:按下电容触摸按键,改变LED0-LED3指示灯的状态。

   
   一、硬件电路
   
    电容触摸硬件电路
   

    二、驱动程序
    2.1、touch.v
   
  1. //touche.v
  2. module touch(
  3.         input                clk,      //时钟信号50Mhz
  4.         input                rst_n,    //复位信号
  5.         input                t_key,    //触摸按键
  6.         output reg            switch,
  7.         output reg     beep_val
  8.     );
  9.          
  10. //reg define
  11. reg    touch_key_d0;
  12. reg    touch_key_d1;

  13. //wire define
  14. wire   touch_en;

  15. //根据按键信号的下降沿判断按下了按键
  16. assign  touch_en = touch_key_d1 & (~touch_key_d0);
  17. always @ (posedge clk or negedge rst_n) begin
  18.     if(rst_n == 1'b0) begin
  19.         touch_key_d0 <= 1'b0;
  20.         touch_key_d1 <= 1'b0;
  21.     end
  22.     else begin
  23.         touch_key_d0 <= t_key;
  24.         touch_key_d1 <= touch_key_d0;
  25.     end
  26. end

  27. //对触摸按键端口接收的数据延迟两个周期
  28. always @ (posedge clk or negedge rst_n) begin
  29.         if (rst_n == 1'b0)
  30.                 begin
  31.                         switch <= 1'b0;
  32.                         beep_val <= 1'b0;
  33.                 end
  34.         else
  35.                 begin
  36.                         if (touch_en)
  37.                                 begin
  38.                                         beep_val <= ~beep_val;
  39.                                         switch <= ~switch;
  40.                                 end
  41.                         else                        
  42.                                 switch <= switch;
  43.                 end
  44. end


  45. endmodule
复制代码

    2.2、led.v
   
  1. //led.v
  2. module led(
  3.     input               clk  ,                                  //系统时钟
  4.     input               rst_n,                                  //系统复位,低电平有效
  5.          input               key_status,                 //输入按键值
  6.          
  7.     output  reg  [3:0]  led_val                 //4个LED灯
  8.     );

  9. //改变LED的显示状态
  10. always @(posedge clk or negedge rst_n) begin
  11.     if (!rst_n)
  12.         led_val <= 4'b0000;   //全亮
  13.     else begin
  14.                 if(key_status)
  15.                         led_val <= 4'b0101;
  16.                 else
  17.                         led_val <= 4'b1010;
  18.     end
  19. end
  20. endmodule
复制代码

    2.3、程序源码

   
fpag_test_20210507.rar (402.42 KB, 下载次数: 4)


    三、运行结果


     


   


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条