当前位置: 首页 > article >正文

FPGA实战篇(触摸按键控制LED灯)

1.触摸按键简介

        触摸按键主要可分为四大类:电阻式、电容式、红外感应式以及表面声波式。根据其属性的不同,每种触摸按键都有其合适的使用领域。
        电阻式触摸按键由多块导电薄膜按照按键的位置印制而成,但由于耐用性较差且维护复杂,目前使用率较低;红外感应式触摸按键通过红外扫描来识别按键位置,一般在较恶劣的环境下使用;表面声波式触摸按键利用声波扫描来识别是否按下,使用寿命长,较适合公共场所的 POS 机,无人售货机等处使用。
        电容式触摸按键:这种按键的诞生主要是为了克服电阻式按键耐用性差的不足所提出的。电容式触摸按键采用电容量为评判标准,其感应区域可穿透绝缘外壳(玻璃、塑料等)20mm 以上。其灵敏度和可靠性不会因环境条件的改变或长期使用而发生变化,具有防水、强抗干扰能力强、适应温度范围广以及使用寿 命长等优点,是现代使用最广泛,发展最迅速的一种触摸按键。
        接下来,我们具体的了解一下电容触摸按键的构造和工作原理。
        电容触摸按键主要由按键 IC 部分和电容部分构成。按键 IC 部分主要由元器件供应商提供,用于将电容的变化转换为电信号。电容部分指的是由电容极板,地,隔离区等组成触摸按键的电容环境。任何两个导电的物体之间都存在着感应电容,在周围环境不变的情况下,该感应电容值是固定不变的。
        如下图所示,手指接触到触摸按键时,按键和手指之间产生寄生电容,使按键的总容值增加。

        触摸按键按下前后,电容的变化如下图所示。电容式触摸按键 IC 在检测到按键的感应电容值改变,并超过一定的阈值后,将输出有效信号表示按键被按下。
2.实验任务
        本节的实验任务是使用触摸按键控制 LED 灯的亮灭,开发板上电后 LED 为点亮状态,手指触摸后 LED熄灭;当再次触摸时,LED 点亮。
3. 硬件设计
        启明星开发板上的触摸按键部分的原理图如图 所示。其中 TPAD 是芯片的输出引脚,连接到ZYNQ 的 IO 端口。
        开发板上所使用的触摸 IC 型号为 AR101 (或者 JL223B ,和 AR101 完全兼容),它可以通过 OP1 和 OP2 两个引脚选择不同的工作模式: OP1 拉低时, OUT 引脚输出信号高电平有效; OP1 拉高时, OUT 输出 信号低电平有效。
        当 OP2 拉低时,触摸 IC 工作在同步模式(类似于非自锁的轻触按键),即触摸时输出有效电平,松开后输出无有效电平;OP2 拉高时触摸 IC 工作在保持模式(类似于自锁按键),即检测到触摸操作后输出有效电平,松开后,输出电平保持不变。当再次检测到触摸操作时,输出电平变化并继续保持。
        图中触摸 IC 的引脚 OP1 OP2 均拉低,因此当手指按在触摸按键上时, TOUT 管脚输高电平,松开后输出低电平。
        本实验中,系统时钟、复位按键、触摸按键和 LED 灯的管脚分配如下表所示,其中时钟晶振位于核心 板上,复位按键、触摸按键和 LED 位于底板上。
4.程序设计
        本次设计的模块端口及信号连接如下图所示。通过捕获触摸按键端口的上升沿,得到一个时钟周期的脉冲信号,来控制 LED 灯的亮灭。
        触摸按键控制 led 代码如下:
1 module touch_led(
2 //input
3 input sys_clk, //时钟信号 50Mhz
4 input sys_rst_n, //复位信号
5 input touch_key, //触摸按键
6 
7 //output
8 output reg led //LED 灯
9 );
10
11 //reg define
12 reg touch_key_d0;
13 reg touch_key_d1;
14
15 //wire define
16 wire touch_en;
17
18 //*****************************************************
19 //** main code
20 //*****************************************************
21
22 //捕获触摸按键端口的上升沿,得到一个时钟周期的脉冲信号
23 assign touch_en = (~touch_key_d1) & touch_key_d0;
24
25 //对触摸按键端口的数据延迟两个时钟周期
26 always @ (posedge sys_clk or negedge sys_rst_n) begin
27 if(!sys_rst_n) begin
28 touch_key_d0 <= 1'b0;
29 touch_key_d1 <= 1'b0;
30 end
31 else begin
32 touch_key_d0 <= touch_key;
33 touch_key_d1 <= touch_key_d0;
34 end
35 end
36
37 //根据触摸按键上升沿的脉冲信号切换 led 状态
38 always @ (posedge sys_clk or negedge sys_rst_n) begin
39 if (!sys_rst_n)
40 led <= 1'b1; //默认状态下,点亮 LED
41 else begin
42 if (touch_en)
43 led <= ~led;
44 end
45 end
46
47 endmodule

5.下载验证

        编译工程并生成比特流.bit 文件。将下载器一端连接电脑,另一端与开发板上的 JTAG 下载口连接,连接电源线,并打开开发板的电源开关。
        点击 Vivado 左侧“ Flow Navigator ”窗口最下面的“ Open Hardware Manager ”,此时 Vivado 软件识别到下载器,点击“Hardware” 窗口中“ Progam Device ”下载程序,在弹出的界面中选择“ Program ”下载程序。
        程序下载完成后,可以看到底板上的 PL_LED0 处于点亮状态,触碰一次触摸按键,就可以看到 LED灯熄灭,再次触摸点亮 LED 灯。如下图所示:


http://www.kler.cn/a/422191.html

相关文章:

  • 利用红黑树封装map,和set,实现主要功能
  • 【AI日记】24.12.03 kaggle 比赛 Titanic-6
  • 有趣的Docker
  • java调用ai模型:使用国产通义千问完成基于知识库的问答
  • LearnOpenGL学习(光照 -- 颜色,基础光照,材质,光照贴图)
  • linux模拟试题
  • Mock.js的学习使用
  • 5G学习笔记之随机接入
  • 基于Java Springboot校园导航微信小程序
  • 658.找到K个最接近的元素(双指针)
  • 【深度学习】—CNN卷积神经网络 从原理到实现
  • 社区团购中 2+1 链动模式商城小程序的创新融合与发展策略研究
  • Linux 网卡收包流程如下
  • 手机ip地址取决于什么?可以随便改吗
  • 20240921解决使用PotPlayer在WIN10电脑播放4K分辨率10bit的视频出现偏色的问题
  • stable diffusion实践操作-大模型介绍:SD的发展历史,SD1.5和SDXL之间的差别
  • DVWA靶场——XSS(Stored)
  • 数据库python连接测试
  • 学习笔记050——SpringBoot学习1
  • docker使用(镜像、容器)
  • sheng的学习笔记-【中】【吴恩达课后测验】Course 5 - 序列模型 - 第三周测验 - 序列模型与注意力机制
  • 用于LiDAR测量的1.58um单芯片MOPA(一)
  • Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档
  • [Redis#9] stream | geospatial | HyperLogLog | bitmaps | bitfields
  • Create Stunning Word Clouds with Ease!
  • 【短视频矩阵系统==saas技术开发】