FPGA知识基础之--触碰按键控制LED灯


前言

本篇博客将带大家从零开始,学习触摸按键的基本原理,并且学会利用触摸按键来实现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提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值