一、触摸IC简介
触摸IC:电容式触摸芯片是为实现人体触摸而设计的集成电路,可替代传统机械式轻触按键,且触摸界面防水防尘、自由定制、美观耐用。
触摸IC有AR101、JL223B、JL523B等。
电容触摸按键 + 触摸IC示意图
IC检测到电阻支路电容变化后输出一个信号表示触摸按键被按压。
触摸IC引脚说明
封装SOT23-6 | 管脚编号 | 管脚名称 | 输入/输出 | 功能说明 |
| 1 | OUT | CMOS输出 | 触摸控制输出脚 |
2 | GND | 电源 | 电源负极 | |
3 | SO | 输入 | 触摸输入检测脚 | |
4 | SLH | 输入 | 有效电平选择脚 | |
5 | VDD | 电源 | 电源正极 | |
6 | STG | 输入 | 工作模式选择脚 |
触摸IC模式配置说明
STG | SLH | 模式名称 | 模式说明 |
0 | 0 | 同步输出 | 类似轻触按键,上电后无触摸时输出低电平,触摸时输出高电平,触摸移开后,恢复低电平。 |
0 | 1 | 同步输出 | 类似轻触按键,上电后无触摸时输出高电平,触摸时输出低电平,触摸移开后,恢复高电平。 |
1 | 0 | 电平保持 | 类似自锁开关,上电后无触摸时输出低电平触摸时电平翻转,触摸移开后,保持高电平。 |
1 | 1 | 电平保持 | 类似自锁开关,上电后无触摸时输出高电平触摸时电平翻转,触摸移开后,保持低电平。 |
二、硬件设计
触摸板原理图
三、实验任务
本节的实验任务是使用触摸按键控制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自动连接开发板再选择到指定文件(代码)下载
开发板实现控制效果。
未触摸时:
第一次触摸时:
第二次触摸时: