查看: 574|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 1052 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2021-5-8 08:09:33 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 TLLED 于 2021-5-8 08:09 编辑

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

       
       一、硬件电路
       
        电容触摸硬件电路
        001.png
        二、驱动程序
        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)
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-17 06:24 , Processed in 0.120761 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.