1)实验平台:正点原子领航者ZYNQ开发板
2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-301505-1-1.html
4)对正点原子FPGA感兴趣的同学可以加群讨论:994244016
5)关注正点原子公众号,获取最新资料更新

第十一章 触摸按键控制LED灯实验

随着电子技术的不断发展,按键的应用场景越来越广泛。触摸按键在稳定性、使用寿命、抗干扰能力等方面都优于传统的机械按键,被广泛应用于遥控器,便携电子设备,楼道电灯开关,各类家电控制面板等方面。本章将介绍触摸按键的控制方法并使用开发板上的触摸按键控制led的亮灭。
本章分为以下几个章节:
1.1 触摸按键简介
1.2 实验任务
1.3 硬件设计
1.4 程序设计
1.5 下载验证

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

图 7.5.13.1 触摸按键寄生电容示意图
触摸按键按下前后,电容的变化如下图所示。电容式触摸按键IC在检测到按键的感应电容值改变,并超过一定的阈值后,将输出有效信号表示按键被按下。

图 7.5.13.2 触摸过程电容变化示意图
1.2 实验任务
本节的实验任务是使用触摸按键控制LED灯的亮灭,开发板上电后LED为点亮状态,手指触摸后LED熄灭;当再次触摸时,LED点亮。
1.3 硬件设计
领航者开发板上的触摸按键部分的原理图如图 7.5.13.1所示。其中TPAD是芯片的输出引脚,连接到ZYNQ的IO端口。

图 7.5.13.1 触摸按键电路原理图
开发板上所使用的触摸IC型号为AR101(或者JL223B,和AR101完全兼容),它可以通过OP1和OP2两个引脚选择不同的工作模式:OP1拉低时,OUT引脚输出信号高电平有效;OP1拉高时,OUT输出信号低电平有效。
当OP2拉低时,触摸IC工作在同步模式(类似于非自锁的轻触按键),即触摸时输出有效电平,松开后输出无有效电平;OP2拉高时触摸IC工作在保持模式(类似于自锁按键),即检测到触摸操作后输出有效电平,松开后,输出电平保持不变。当再次检测到触摸操作时,输出电平变化并继续保持。
图 7.5.13.1中触摸IC的引脚OP1和OP2均拉低,因此当手指按在触摸按键上时,TOUT管脚输高电平,松开后输出低电平。
本实验中,系统时钟、复位按键、触摸按键和LED灯的管脚分配如下表所示,其中时钟晶振位于核心板上,复位按键、触摸按键和LED位于底板上。
表 11.3.1 触摸按键控制LED管脚分配图
信号名 方向 管脚 端口说明 电平标准
sys_clk input U18 系统时钟,50M LVCMOS33
sys_rst_n input N16 系统复位,低有效 LVCMOS33
touch_key input F16 触摸按键信号 LVCMOS33
led output H15 LED LVCMOS33
对应的XDC约束语句如下所示:
#IO约束

set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
set_property -dict {PACKAGE_PIN F16 IOSTANDARD LVCMOS33} [get_ports touch_key]
set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS33} [get_ports led]

1.4 程序设计
本次设计的模块端口及信号连接如下图所示。通过捕获触摸按键端口的上升沿,得到一个时钟周期的脉冲信号,来控制LED灯的亮灭。

图 7.5.13.1 模块端口及信号连接图
触摸按键控制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

程序中第22至35行是一个经典的边沿检测电路,通过检测touch_key的上升沿来捕获按键按下的信号,一旦检测到按键按下,输出一个时钟周期的脉冲touch_en。每当检测到touch_en的脉冲信号,led取反一次。
为了验证我们的程序,我们在Vivado内对代码进行仿真。
Testbench模块代码如下:

1  `timescale 1ns / 1ps
2
3  module tb_touch_led();
4
5  //reg define
6  reg     sys_clk;
7  reg     sys_rst_n;
8  reg     touch_key;
9
10 //wire define
11 wire          led ;
12
13 always #10 sys_clk = ~sys_clk;
14
15 initial begin
16     sys_clk = 1'b0;
17     sys_rst_n = 1'b0;
18     touch_key = 0;
19     #200
20     sys_rst_n = 1'b1;
21     //touch_key信号变化
22     #40  touch_key = 1'b1 ;  //40ns后触摸按键按下
23     #200 touch_key = 1'b0 ;  //200ns触摸按键抬起
24     #40  touch_key = 1'b1 ;  //40ns后触摸按键按下
25     #200 touch_key = 1'b0 ;  //200ns触摸按键抬起
26     #40  touch_key = 1'b1 ;  //40ns后触摸按键按下
27     #200 touch_key = 1'b0 ;  //200ns触摸按键抬起
28     #40  touch_key = 1'b1 ;  //40ns后触摸按键按下
29     #200 touch_key = 1'b0 ;  //200ns触摸按键抬起
30 end
31
32 touch_led  u_touch_led(
33     .sys_clk   (sys_clk),
34     .sys_rst_n (sys_rst_n),
35     .touch_key (touch_key),
36     .led       (led)
37 );
38
39 endmodule

仿真得到的波形图如图 7.5.13.2所示。从图中可以看出,当touch_key信号由电平变为高电平时,touch_key_d0和touch_key_d1信号分别延迟touch_key一个时钟周期和两个时钟周期,将touch_key_d0信号的和取反后的touch_key_d1信号相与,就得到一个时钟周期的脉冲信号(touch_en)。当检测到touch_en信号为高电平时,对led信号进行取反,从而实现触摸按键控制led灯的功能。

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

图 7.5.13.1 按键控制LED灯实验现象

【正点原子FPGA连载】第十一章 触摸按键控制LED灯实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0相关推荐

  1. led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验

    1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...

  2. FPGA之触摸按键控制LED灯实验

    一.背景介绍 简介:触摸按键在稳定性.使用寿命.抗干扰能力等方面都优于传统的机械按键,被广泛应用于遥控器,便携式电子设备,楼道开关和各种智能控制等方面. 分类 电阻式触摸按键:是由多块导电薄膜按照按键 ...

  3. verilog学习笔记- 12)触摸按键控制LED灯实验

    目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证: 简介: 触摸按键主要可分为四大类:电阻式.电容式.红外感应式以及表面声波式.根据其属性的不同,每种触摸按键都有其合适的使用领域. 电阻式触 ...

  4. 【正点原子FPGA连载】第四十一章OV5640摄像头RGB-LCD显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  5. 触摸按键控制 LED 灯实验

    1 触摸按键简介 触摸按键主要可分为四大类:电阻式.电容式.红外感应式以及表面声波式.根据其属性的不同,每 种触摸按键都有其合适的使用领域. 电阻式触摸按键由多块导电薄膜按照按键的位置印制而成,但由于 ...

  6. input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  7. hls fifo_【正点原子FPGA连载】第一章HLS简介--领航者ZYNQ之HLS 开发指南

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  8. cups源码下载 linux_【正点原子FPGA连载】第九章Linux显示设备的使用-领航者ZYNQ之linux开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  9. 【正点原子FPGA连载】 第十七章 RS485串口通信实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

最新文章

  1. oracle安装清单过不去,oracle 11g(二)安装过程
  2. mysql可视化工具-navicat的下载和使用
  3. linux安装字体时找不到mkfontscale、mkfontdir
  4. 一口气放出三篇SIGIR论文!详解阿里妈妈搜索广告CTR模型演进
  5. 剑指Offer - 面试题24. 反转链表(遍历/递归)
  6. 无法远程xp服务器,五步快速处理在WinXP下IIS无法远程访问的问题
  7. oracle bookauthor,Oracle 聚簇(征集)
  8. 原理图端口符号_电气百科:电气原理图和接线图区别详解
  9. 搭建samba映射网络驱动器
  10. windows下无npcap驱动导致golang获取网卡失败问题
  11. JavaScript 单例模式
  12. excel表格打印每页都有表头_打印的表格只有第一页有标题?一键让每页都带表头标题...
  13. 苹果手机批量移动图标的小技巧
  14. 外部无法连接部署在linux上的MongoDB
  15. pcb成型板aoi检测_7种方法检测PCB板
  16. Springboot进行qq邮箱验证
  17. 计算机专业研究生应该怎么读
  18. python爬虫成长之路(一):抓取证券之星的股票数据
  19. 2018年杭州马拉松感受
  20. 学习记录1——PMSM数学建模——PMSM的基础知识

热门文章

  1. syncfusion wpf控件踩坑
  2. 易地推拓客团队一次错误的招生外包浪费的不仅仅是金钱
  3. UI设计师常用的软件都有哪些
  4. IE11浏览器滚动条CSS样式
  5. 我如何看待软件测试的前景?
  6. java 自动行高,20191012——POI设置单元格自动行高(思路)
  7. uniApp实现短信验证码登录功能
  8. 读懂用好Timing Report
  9. JAVA中常用英文单词简写释义)
  10. thusc2018酱油记