目录
前言
本篇博客将带大家从零开始,学习触摸按键的基本原理,并且学会利用触摸按键来实现LED控制,我将在本篇博客中提供RTL代码,和Testbench代码
一、触摸按键简介
1.触摸按键
通过轻触式,实现传统意义机械式键盘的功能;
2.分类
电阻式,电容式,红外感应式和表面声波式
3.优点
- 无机械装置,使用寿命长
- 面板不需要打孔
- 产品美观简洁
- 防水效果好
- 不需要按键消抖
- 灵活性高,多种输出模式
4.缺点
- 需要触摸IC
- 没有传统机械按键的反馈感
- 按键较多时,占用空间成本高
5.原理
- 触摸按键由一个导电材料构成,通常是一层薄膜或玻璃面板。
- 在触摸按键的下方,放置了一个感应电极层,通常是一层透明导电膜。
- 当手指接触触摸按键时,手指的电荷会使感应电极层的电场发生变化。
- 感应电极层上的电场传感器会检测到电场的变化,并将这个信号传递给控制电路。
- 控制电路会分析电场变化的模式,判断出触摸按键的位置和动作。
- 最后,控制电路将这个信息传递给设备的处理器,执行相应的操作。
即通过检测电荷的变化,就能实现触摸操作的识别和控制
二、触摸IC简介
1.触摸IC
触摸IC(Integrated Circuit)是一种集成电路,用于检测和处理触摸信号。它通常用于触摸屏、触摸按键等触摸感应设备中,触摸IC包含了一系列的电路和传感器,能够感知触摸位置、压力等信息,并将其转化为数字信号供电脑或其他设备使用
2.分类
AR101,JL223B,JL523B等
3.原理
触摸IC的工作原理主要是基于电容感应或阻抗感应原理。当用户手指触摸到接触面时,传感电极会感应到用户手指与接触面之间的电容变化或阻抗变化,然后通过驱动电路和控制逻辑进行处理和解析,最终得到触摸位置的坐标信息。
4.引脚说明
1: OUT : CMOS输出 触摸控制输出脚
2: GND : 电源 电源负极
3: SO : 输入 触摸输入检测脚
4: SLH : 输入 有效电平选择脚
5: VDD : 电源 电源正极
6: STG : 输入 工作模式选择脚
开发板选择的是同步输出的模式,
即类似于轻触按键,上电后无触摸为低电平,触摸为高电平,松开后默认为低电平
5.触摸按键原理图
6.实验任务
本次实验任务是,开发板上电后,LED为点亮状态,手指触摸后,LED熄灭,再次触摸,LED点亮
三、程序设计
1、思路(重点为上升沿的检测)
2、模块
3、波形绘制
4、编写代码
1、RTL代码
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'd0;
touch_key_d1 <= 1'd0;
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) led <= 1'b1;
else if(pos_touch_key)
led <= ~led;
else led <= led;
end
endmodule
2、仿真代码
`timescale 1ns/1ns //仿真的单位/仿真的精度s
module tb_touch_led();
reg sys_clk; //周期20ns
reg sys_rst_n; //并非所有的输入都是reg,根据代码编写情况\
reg touch_key;
wire led;
//parameter define
parameter CLK_PERIOD = 20; //时钟周期 20ns
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; //按键被按下
#2000
touch_key <= 1'b0;//按键被释放
#1000
touch_key <= 1'b1; //按键被按下
#2000
touch_key <= 1'b0;//按键被释放
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
3、仿真波形
和设想一样,故验证正确
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。