触摸按键控制LED

一、触摸IC简介

触摸IC:电容式触摸芯片是为实现人体触摸而设计的集成电路,可替代传统机械式轻触按键,且触摸界面防水防尘、自由定制、美观耐用。

触摸IC有AR101、JL223B、JL523B等。

电容触摸按键 + 触摸IC示意图

IC检测到电阻支路电容变化后输出一个信号表示触摸按键被按压。

触摸IC引脚说明

封装SOT23-6管脚编号管脚名称输入/输出功能说明

1OUTCMOS输出触摸控制输出脚
2GND电源电源负极
3SO输入触摸输入检测脚
4SLH输入有效电平选择脚
5VDD电源电源正极
6STG输入工作模式选择脚

触摸IC模式配置说明

STGSLH模式名称模式说明
00同步输出类似轻触按键,上电后无触摸时输出低电平,触摸时输出高电平,触摸移开后,恢复低电平。
01同步输出类似轻触按键,上电后无触摸时输出高电平,触摸时输出低电平,触摸移开后,恢复高电平。
10电平保持类似自锁开关,上电后无触摸时输出低电平触摸时电平翻转,触摸移开后,保持高电平。
11电平保持类似自锁开关,上电后无触摸时输出高电平触摸时电平翻转,触摸移开后,保持低电平。

二、硬件设计

触摸板原理图

三、实验任务

本节的实验任务是使用触摸按键控制LED灯的亮灭,开发板上电后LED为点亮状态,手指触摸后LED熄灭;再次触摸时,LED点亮。

四、程序设计

1.思维导图

2.波形图

对于上升沿的检测通过打节拍的方式,第一拍从按键按下下个时钟上升沿开始,第二拍从第一拍滞后一个时钟开始,对于上升沿检测是通过将第二拍取反后与第一拍相与(&)得到,LED通过上升沿的变化取反(初始为点亮)。

3.代码编写

module touch_led(
    input          sys_clk,
    input          sys_rst_n,
    input          touch_key,
    output    reg  led
    );

reg      touch_key_d0;
reg      touch_key_d1;

wire     pos_touch_key;

assign   pos_touch_key = ~touch_key_d1 & touch_key_d0;


//打两拍,采上升沿
always @(posedge sys_clk or negedge sys_rst_n)begin
    if(!sys_rst_n) begin
        touch_key_d0 <= 1'b0;
        touch_key_d1 <= 1'b0;
    end 
    else begin
        touch_key_d0 <= touch_key;
        touch_key_d1 <= touch_key_d0;
    end
end


//LED信号翻转
always @(posedge sys_clk or negedge sys_rst_n)begin
    if(!sys_rst_n) begin
        led <= 1'b1;
    else if(pos_touch_key)
        led <= ~led;
    else
        led <= led;
end
 
    
endmodule

4.实验仿真

编写tb_touch_led文件

'timescale  1ns/1ns  //仿真单位/仿真精度

module tb_touch_led();

parameter CLK_PERIOD = 20;

reg        sys_clk;   //周期20ns
reg        sys_rst_n;
reg        touch_key ;

wire       led;

initial begin
    sys_clk <= 1'b0;
    sys_rst_n <= 1'b0;
    touch_key <= 1'b0;    //按键没被按下
    #200
    sys_rst_n <= 1'b1;
    #1000
    touch_key <= 1'b1;   //按下touch_key
    #2000
    touch_key <= 1'b0;   //释放touch_key
    #2000
    touch_key <= 1'b1;   //按下touch_key
    #2000
    touch_key <= 1'b0;   //释放touch_key
end

always #(CLK_PERIOD/2) sys_clk = ~sys_clk;

touch_led  u_touch_led(
    .sys_clk        (sys_clk)  ,
    .sys_rst_n      (sys_rst_n),
    .touch_key      (touch_key),
    .led            (led      )

    );

endmodule

在modulesim仿真,以500ns为周期(减少仿真时间),下图为部分放大后仿真结果。

实验验证为预期输出。

五、下载验证

通过vivado创建工程,配置IO口和约束文件。

编译之后下载到开发板。

显示编译成功。

通过open target自动连接开发板再选择到指定文件(代码)下载

开发板实现控制效果。

未触摸时:

第一次触摸时:

第二次触摸时:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值