【【萌新的FPGA学习之触摸屏控制LED实验】】

news2024/11/25 19:54:17

萌新的FPGA学习之触摸屏控制LED实验

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

我们先使用电容信号进行分析
在这里插入图片描述
在这里插入图片描述

开发板上所使用的触摸 IC 型号为 AR101(或者 JL223B,和 AR101 完全兼容),它可以通过 OP1 和OP2 两个引脚选择不同的工作模式:OP1 拉低时,OUT 引脚输出信号高电平有效;OP1 拉高时,OUT 输出信号低电平有效。当 OP2 拉低时,触摸 IC 工作在同步模式(类似于非自锁的轻触按键),即触摸时输出有效电平,松开后输出无有效电平;OP2 拉高时触摸 IC 工作在保持模式(类似于自锁按键),即检测到触摸操作后输出有效电平,松开后,输出电平保持不变。当再次检测到触摸操作时,输出电平变化并继续保持。
OP1主要控制OUT的输出模式 当OP拉低 OUT输出高 OP拉高 OUT输出低
OP2主要控制 触摸IC的工作模式 OP2拉低 同步模式 松手电平还原 OP2拉高 非同步 松手不还原

实验任务 :
本节的实验任务是使用触摸按键控制 LED 灯的亮灭,开发板上电后 LED 为点亮状态,手指触摸后LED 熄灭;当再次触摸时,LED 点亮。
我们看到其实想要的使用模式是OP2

本实验中我们取触摸按键信号的上升沿来控制 LED 灯亮灭。
接下来我们详细研究下 verilog 中怎么判断上升沿和下降沿。取一个信号的上升沿或下降沿信号,可以
通过将信号 delay 后,然后将原信号和 delay 信号,通过不同的与非操作,获取上升沿信号或下降沿信号。

always @ (posedge sys_clk or negedge sys_rst_n) begin
 if(!sys_rst_n) begin
 raw_data_d0 <= 1'b0;
 end
 else begin
 raw_data_d0 <= raw_data;
 end 
end

我们将两次延迟的时间进行对比

//捕获 raw_data 端口的上升沿,得到一个时钟周期的脉冲信号assign posedge = (~raw_data_d0) & raw_data;

raw_data 是现在的时间
raw_data_d0 这是延迟之后的时间 (其实是上一个时间)
我们看取上升沿的变化 raw_data=1 前一个时刻=0 这样就完成了上升

//捕获 raw_data 端口的下降沿,得到一个时钟周期的脉冲信号
assign negedge = (~raw_data) & raw_data_d0;

以上就是 verilog 中的端口信号取沿的实现过程,但在实际采样中,上述操作会存在亚稳态问题,为了正确取沿并且解决端口信号亚稳态的现象,我们可以将初始信号 raw_data 延迟两次(打两拍),然后将第一延迟的信号与第二次延迟的信号按上述方法获取上升沿或者下降沿信号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链表(单链表、双链表)

前言&#xff1a;链表是算法中比较难理解的部分&#xff0c;本博客记录单链表、双链表学习&#xff0c;理解节点和指针的使用&#xff0c;主要内容包括&#xff1a;使用python创建链表、实现链表常见的操作。 目录 单链表 双链表 单链表 引入链表的背景&#xff1a; 先来看…

Goby 漏洞发布|泛微 E-office flow_xml.php 文件 SORT_ID 参数 SQL 注入漏洞

漏洞名称&#xff1a;泛微 E-office flow_xml.php 文件 SORT_ID 参数 SQL 注入漏洞 English Name&#xff1a; Weaver E-office flow_xml.php file SORT_ID parameter SQL injection vulnerability CVSS core:7.8 影响资产数&#xff1a; 21632 漏洞描述&#xff1a; 泛微…

idea创建同级项目-纠结是SB

idea创建同级项目-纠结是SB 创建方法&#xff1a;

线性约束最小方差准则(LCMV)波束形成算法仿真

常规波束形成仅能使得主波束对准目标方向&#xff0c;从而在噪声环境下检测到目标&#xff0c;但无法对复杂多变的干扰做出响应&#xff0c;所以不能称之为真正意义上的自适应滤波。自适应阵列处理指的是采用自适应算法对空间阵列接收的混合信号进行处理&#xff0c;又可称为自…

【Element-UI】实现动态树、数据表格及分页效果

一、导言 1、引言 在现代软件开发中&#xff0c;动态树、数据表格以及分页效果成为了许多应用的核心需求。随着业务规模和复杂性的增加&#xff0c;我们往往需要展示大量的层级结构数据&#xff0c;并且实现交互性强且高效的操作。 动态树提供了一种组织结构清晰、可伸缩的展示…

提取PDF数据:Documents for PDF ( GcPdf )

在当今数据驱动的世界中&#xff0c;从 PDF 文档中无缝提取结构化表格数据已成为开发人员的一项关键任务。借助GrapeCity Documents for PDF ( GcPdf )&#xff0c;您可以使用 C# 以编程方式轻松解锁这些 PDF 中隐藏的信息宝藏。 考虑一下 PDF&#xff08;最常用的文档格式之一…

4代码工程结构

产品代码都给你看了&#xff0c;可别再说不会DDD&#xff08;四&#xff09;&#xff1a;代码工程结构 # 这是一个讲解DDD落地的文章系列&#xff0c;作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云&#xff08;https://www.…

接口自动化测试框架【reudom】

reudom Automated testing framework based on requests and unittest interface. 基于 Unittest 和 Requests 的 接口自动化测试框架 介绍 基于Unittest/Requests的接口自动化测试库 提供脚手架&#xff0c;快速生成接口自动化测试项目。自动生成HTML测试报告。支持用例参数…

「网页开发|前端开发|Vue」09 Vue状态管理Vuex:让页面根据用户登录状态渲染不同内容

本文主要介绍如何通过Vue的状态管理框架Vuex来管理一些被不同组件或不同页面共同使用的数据&#xff0c;然后展示如何通过状态管理用户信息&#xff0c;并且在具体页面获取用户信息&#xff0c;并且根据用户信息的不同展示不同的页面内容。 文章目录 本系列前文传送门一、场景…

手把手教你,细说向开源项目递交代码的流程

系列文章目录 手把手教你安装Git&#xff0c;萌新迈向专业的必备一步 GIT命令只会抄却不理解&#xff1f;看完原理才能事半功倍&#xff01; 常用GIT命令详解&#xff0c;手把手让你登堂入室 GIT实战篇&#xff0c;教你如何使用GIT可视化工具 GIT使用需知&#xff0c;哪些操作…

面试必杀技:Jmeter性能测试攻略大全(第三弹)(脚本开发)

今天是最后一章哦&#xff0c;主要是讲jmeter性能测试脚本相关的。原创不易&#xff0c;点个赞意思一下呗&#xff01; 一. 脚本开发方式大纲 1、badboy进行录制和导出 badboy下载地址: 链接&#xff1a;https://pan.baidu.com/s/18Po3RssrBRSnn_-xsHop1g 提取码&#xff1…

协程切换的三种底层实现方式

1.setjmp/longjmp setjmp 和 longjmp 是C语言中用于实现基本的协程的底层函数。它们允许在一个函数的执行过程中保存当前的执行状态&#xff08;包括寄存器和栈信息&#xff09;&#xff0c;然后在之后的某个时间点恢复到这个状态&#xff0c;从而实现函数的非局部跳转。 这两…

OpenGl材质

在现实世界里&#xff0c;每个物体会对光产生不同的反应。比如&#xff0c;钢制物体看起来通常会比陶土花瓶更闪闪发光&#xff0c;一个木头箱子也不会与一个钢制箱子反射同样程度的光。有些物体反射光的时候不会有太多的散射(Scatter)&#xff0c;因而产生较小的高光点&#x…

【数据结构-树】哈夫曼树

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

transformer系列3---transformer结构参数量统计

Transformer参数量统计 1 Embedding2 Positional Encoding3 Transformer Encoder3.1 单层EncoderLayer3.1.1 MHA3.1.2 layer normalization3.1.3 MLP3.1.4 layer normalization 3.2 N层Encoderlayer总参数量 4 Transformer Decoder4.1 单层Decoderlayer4.1.1 mask MHA4.1.2 lay…

AUTOSAR中的Crypto Stack(二)--CSM数据类型解析

在上一节,简单梳理了加密栈的基本要求。其中最关键最核心的还是用户如何使用HSM这个黑盒子,这就必须要对Crypto Service Manager要有很清晰的认识。 那么首先我们还是围绕概述里提到的job类型进行分析。 1. Crypto_JobType 上图, 在AUTOSAR的架构里,所有的密码操作…

笔记本电脑查询连接wifi密码

笔记本电脑查询连接wifi密码 1、背景2、环境3、实操3.1、已连接wifi查看密码3.2、之前连接过的wifi密码查看 1、背景 在日常使用过程中遇到两个使用场景。网络管理员跳过一下步骤&#xff0c;针对wifi使用人员。 1、刚到一个新环境中需要连接wifi的场景 2、在一个场所连接过一…

【LeetCode热题100】--160.相交链表

160.相交链表 使用双指针&#xff1a; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode getInter…

基于Vue+ELement搭建动态树与数据表格实现分页

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《ELement》。&#x1f3af;&#x1f3af; &#x1…

高等数学应试考点速览(下)

函数项级数 【收敛域】上&#xff0c;收敛于&#xff1a;【和函数】&#xff1b; 幂级数&#xff1a;绝对收敛区间 ( − R , R ) (-R,R) (−R,R)&#xff0c;&#xff08;端点是否属于收敛域&#xff0c;需要再探讨&#xff09; R lim ⁡ n → ∞ ∣ a n a n 1 ∣ R\lim_{n…