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