单片机 电容触摸按键 报告
单片机控制按键实训报告
一、实训目的1. 掌握单片机的基本工作原理和硬件结构;2. 熟悉单片机编程环境及编程方法;3. 学习按键控制的基本原理和编程技巧;4. 提高动手能力和解决问题的能力。
二、实训内容1. 单片机简介2. 单片机编程环境及编程方法3. 按键控制原理及编程4. 实验设计与实现三、实训步骤1. 单片机简介(1)单片机定义:单片机是一种集成度高、功能强大的微处理器,具有运算、存储、输入输出、定时计数等功能。
(2)单片机硬件结构:主要包括中央处理单元(CPU)、存储器(RAM、ROM)、输入输出接口(I/O)、定时器/计数器、串行通信接口等。
2. 单片机编程环境及编程方法(1)编程环境:Keil uVision、IAR EWARM等。
(2)编程语言:C语言、汇编语言等。
3. 按键控制原理及编程(1)按键控制原理:按键作为一种输入设备,其作用是将物理信号转换为电信号,通过单片机对电信号进行处理,实现相应的功能。
(2)按键编程技巧:① 按键消抖:由于按键存在机械特性,按下和释放时会产生抖动,导致单片机检测到多个按键动作。
为了消除抖动,通常采用软件消抖方法,如延时消抖、计数消抖等。
② 按键扫描:按键扫描是检测按键状态的一种方法,通过单片机的I/O口循环检测每个按键的状态,实现按键的识别。
③ 按键去抖:在按键扫描过程中,若检测到按键动作,则需要进行去抖处理,以消除抖动对按键识别的影响。
4. 实验设计与实现(1)实验目的:通过按键控制LED灯的亮灭。
(2)实验原理:当按下按键时,单片机检测到按键动作,通过编程控制LED灯亮起;当按键释放时,单片机检测到按键释放,控制LED灯熄灭。
(3)实验步骤:① 准备实验器材:单片机、按键、LED灯、电阻、面包板等。
② 连接电路:将按键、LED灯、电阻等元器件连接到单片机的相应引脚上。
③ 编写程序:根据实验原理,编写控制LED灯的亮灭程序。
④ 烧录程序:将编写的程序烧录到单片机中。
⑤ 测试程序:观察LED灯的亮灭状态,验证程序的正确性。
电容触摸按键报告
电容触摸按键报告摘要本报告旨在介绍电容触摸按键的原理、应用领域、优势以及市场前景。
通过对电容触摸按键的研究,我们可以更好地理解这一技术的工作原理和优势,并在相应的应用领域中发挥其最大的潜力。
引言随着科技的不断发展,触摸技术已经成为了电子设备领域的重要组成部分。
电容触摸按键技术作为触摸技术的一种,以其高灵敏度、良好的响应速度和无需机械按键等特点,逐渐受到市场的广泛关注。
本报告将重点介绍电容触摸按键的原理、应用领域、优势以及市场前景。
一、电容触摸按键的工作原理电容触摸按键的工作原理是基于电容传感技术。
在触摸按键上方的感应区域,布置有一组导电材料(例如金属电极)形成一个电容结构。
当人的手指接触到触摸按键时,会产生电容变化。
触摸按键芯片通过检测电容的变化来判断用户是否触摸了按键,从而实现按键的触摸检测功能。
二、电容触摸按键的应用领域电容触摸按键由于其优越的技术特点,在许多领域得到了广泛应用。
以下是几个主要的应用领域:1. 智能手机和平板电脑智能手机和平板电脑作为目前最为普及的电子设备之一,电容触摸按键的应用正越来越广泛。
这些设备通常会使用电容触摸按键来替代机械按键,提供简洁、方便的操作体验。
2. 家电控制面板电容触摸按键具有触摸灵敏、易于清洁的特点,因此在家电控制面板上得到了广泛的应用。
用户可以通过触摸控制面板来轻松地控制家电的开关、模式选择等功能。
3. 汽车内部控制电容触摸按键在汽车内部控制系统中也得到了广泛的应用。
例如,驾驶员可以通过触摸按键来控制空调、音频设备、导航系统等,提供更便捷的操作体验。
4. 工控设备在工业领域中,电容触摸按键的应用也非常常见。
工控设备通常需要耐用性和可靠性,电容触摸按键的无机械运动结构满足了这一需求。
此外,电容触摸按键可以提供更好的密封性能,以避免灰尘和液体进入设备。
三、电容触摸按键的优势相比传统的机械按键,电容触摸按键具有以下几个明显的优势:1.灵敏度高:电容触摸按键可以通过检测微小的电容变化来感知用户的触摸操作,具有非常高的灵敏度。
电容式触摸感应按键技术及常见问题解决办法
电容式触摸感应按键技术及常见问题解决办法浅谈电容式触摸感应按键技术及常见问题解决办法市场上的消费电子产品已经开始逐步采用触摸感应按键,以取代传统的机械式按键。
针对此趋势,Silicon Labs公司推出了内置微控制器(MCU)功能的电容式触摸感应按键(Capa citive Touch Sense)方案。
电容式触摸感应按键开关,内部是一个以电容器为基础的开关。
以传导性物体(例如手指)触摸电容器可改变电容,此改变会被内置于微控制器内的电路所侦测。
图1:电容式触摸感应按键的基本原理一种可侦测因触摸而改变的电容的方法电容式触摸感应按键的基本原理就是一个不断地充电和放电的张弛振荡器。
如果不触摸开关,张弛振荡器有一个固定的充电放电周期,频率是可以测量的。
如果我们用手指或者触摸笔接触开关,就会增加电容器的介电常数,充电放电周期就变长,频率就会相应减少。
所以,我们测量周期的变化,就可以侦测触摸动作。
具体测量的方式有二种:(一)可以测量频率,计算固定时间内张弛振荡器的周期数。
如果在固定时间内测到的周期数较原先校准的为少,则此开关便被视作为被按压。
(二)也可以测量周期,即在固定次数的张弛周期间计算系统时钟周期的总数。
如果开关被按压,则张弛振荡器的频率会减少,则在相同次数周期会测量到更多的系统时钟周期。
Silicon Labs推出的C8051F9xx微控制器(MCU)系列,可通过使用芯片上比较器和定时器实现触摸感应按键功能,连接最多23个感应按键。
而且无须外部器件,通过PCB走线/开关作为电容部分,由内部触摸感应按键电路进行测量以得知电容值的变化。
图2:Silicon Labs推出的C8051F9xx微控制器(MCU)系列以Silicon Labs的MCU实现触摸感应按键利用Silicon Labs其它MCU系列,仅需搭配无源器件,即可实现电容式触摸感应按键方案。
与C8051F93x-F92x方案相比,唯一所需的外部器件是(3+N)电阻器,其中N是开关的数目,以及3个提供反馈的额外端口接点。
单片机 电容触摸按键 报告
任务:MSP-EXP430G2 板上P1.0 上接了一个LED,而在配套的LaunchPad 扩展板上,将MSP430G2553 的P2.0 和P2.5 引出作为电容触摸按键。
要求按下P2.0 后LED 亮,按下P2.5 后LED 灭,程序运行过程中不阻塞CPU,并且实现低功耗运行。
硬件连接:如图所示程序代码:TouchIN.c:#include "MSP430G2553.h"#define KEY_NUM 2 /*触摸按键数目,根据需要修改*/ //=============具体触摸按键IO宏定义,根据需要添加代码===============#define KEY0_INIT P2DIR &= ~BIT0; P2SEL &= ~ BIT0; P2SEL2 |= BIT0 /*按键1开启振荡*/ #define KEY1_INIT P2DIR &= ~BIT5; P2SEL &= ~ BIT5; P2SEL2 |= BIT5 /*按键2开启振荡*/ #define ALL_OSC_OFF P2SEL2 &= ~(BIT0 + BIT5) /*关闭全部触摸振荡*/ /*门限频率的取值取决于定时扫描的时长,3300对应的是1.9ms定时情况,实际定时可取1ms~20ms*/const unsigned int FREQ_THRESHOLD[KEY_NUM]={3300,3300}; /*参考值,需用仿真器查看后调整*///-----静态局部变量----static unsigned int Freq[KEY_NUM]={0}; //当前测频值static unsigned char Key_Buff[KEY_NUM][4]={0}; // 软件FIFOstatic unsigned char Key_Num=0; //按键编号//-----全局变量,复杂程序中可以移植到Global.h统一管理-----unsigned char TouchIN=0; //相当于PxIN寄存器作用,支持8个触摸按键void Key_Measure_Freq(){Freq[Key_Num]=TAR; //当前编号按键的频率被测得ALL_OSC_OFF; //关闭所有振荡IOKey_Num++; //切换下一振荡IOif (Key_Num>=KEY_NUM) Key_Num=0; //各触摸按键循环交替switch (Key_Num){case 0 : KEY0_INIT; break; //振荡IO初始化case 1 : KEY1_INIT; break;default: break;}TA0CTL = TASSEL_3+MC_2+TACLR; //增计数清0,并开始计数}void Key_FIFO() //存储连续4次测量数据{Key_Buff[Key_Num][0]=Key_Buff[Key_Num][1];Key_Buff[Key_Num][1]=Key_Buff[Key_Num][2];Key_Buff[Key_Num][2]=Key_Buff[Key_Num][3];if( Freq[Key_Num]<FREQ_THRESHOLD[Key_Num]) //判断是否识别为按键Key_Buff[Key_Num][3]=1;elseKey_Buff[Key_Num][3]=0;}void Key_Judge() //按键仲裁,只有连续4次测量结果一致,才算数{if( (Key_Buff[Key_Num][0]==0)&&(Key_Buff[Key_Num][1]==0)&&(Key_Buff[Key_Num][2]==0)&&(Key_Buff[Key_Num][3]==0) )// TouchIN=0<<Key_Num; //按键松开(错误代码)TouchIN &=~(1<<Key_Num); //按键松开(正确代码)if( (Key_Buff[Key_Num][0]==1)&&(Key_Buff[Key_Num][1]==1)&&(Key_Buff[Key_Num][2]==1)&&(Key_Buff[Key_Num][3]==1) )// TouchIN =1<<Key_Num; //按键按下(错误代码)TouchIN |=1<<Key_Num; //按键按下}void TouchIN_Dect() //触摸输入检测{Key_Measure_Freq(); //测频Key_FIFO(); //软件FIFO缓存最近4次测量数据Key_Judge(); //仲裁按键是否按下或松开}TouchIN.h:/***** TouchIN.h******/#ifndef TOUCHIN_H_#define TOUCHIN_H_extern void TouchIN_Dect() ; //WDT中断事件extern unsigned char TouchIN; // 相当于PxIN寄存器作用,支持8个触摸按键#endif /* TOUCHIN_H_ */main.c:#include "MSP430G2553.h"#include "TouchIN.h" /*触摸按键检测库函数*/void WDT_Ontime(void);//-----对硬件相关代码进行宏定义处理-----#define LED_ON P1OUT |= BIT0 /*宏定义LED所在IO*/#define LED_OFF P1OUT &= ~BIT0 /*宏定义LED所在IO*/void main(void) {WDTCTL = WDTPW+WDTHOLD; //关狗//-----初始化GPIO-----P1DIR |= BIT0; //LED所连IO口P1.0设为输出P1OUT &= ~BIT0;//-----初始化WDT定时中断为16ms-----WDTCTL = WDT_ADLY_16; // “超级”宏定义IE1 |= WDTIE; //使能WDT中断_EINT(); // 使能总中断__bis_SR_register(LPM3_bits); //等同LPM3}#pragma vector=WDT_VECTOR // Watch dog Timer interrupt service routine__interrupt void WDT_ISR(void){WDT_Ontime();}void WDT_Ontime(void){ //-----首先必须定时扫描触摸按键检测函数-----TouchIN_Dect();if(TouchIN & BIT0) LED_ON;if(TouchIN & BIT1) LED_OFF;}调试情况:第一次调试:TouchIN_Dect函数重复定义第二次调试:正常调试结果:按下P2.0 后LED 亮,按下P2.5 后LED 灭,任务达成。
单片机按键实验实训报告
一、实验目的1. 理解单片机按键的工作原理和电路连接方法;2. 掌握按键消抖原理及其实现方法;3. 学会使用单片机编程控制按键功能,实现简单的输入控制;4. 提高单片机实验操作能力和编程能力。
二、实验仪器及设备1. 单片机开发板(如STC89C52);2. 按键;3. 万用表;4. 电脑;5. Keil C编译器。
三、实验原理1. 按键原理:按键是一种电子开关,按下时导通,松开时断开。
在单片机应用中,按键常用于输入控制信号。
2. 按键消抖原理:由于按键机械弹性,闭合和断开时会有一连串的抖动。
若直接读取按键状态,容易导致误操作。
因此,需要进行消抖处理。
3. 消抖方法:主要有软件消抖和硬件消抖两种方法。
本实验采用软件消抖方法,即在读取按键状态后,延时一段时间再读取,若两次读取结果一致,则认为按键状态稳定。
四、实验步骤1. 硬件连接:将按键一端接地,另一端与单片机的某个I/O口相连。
2. 编写程序:使用Keil C编译器编写程序,实现以下功能:(1)初始化I/O口,将按键连接的I/O口设置为输入模式;(2)读取按键状态,判断按键是否被按下;(3)进行消抖处理,若按键状态稳定,则执行相应的功能。
3. 编译程序:将编写好的程序编译成HEX文件。
4. 烧录程序:将编译好的HEX文件烧录到单片机中。
5. 实验验证:观察实验现象,验证按键功能是否实现。
五、实验结果与分析1. 硬件连接正确,程序编译无误。
2. 实验现象:当按下按键时,单片机执行相应的功能;松开按键后,按键功能停止。
3. 分析:通过软件消抖处理,有效避免了按键抖动导致的误操作。
六、实验总结1. 本实验成功实现了单片机按键控制功能,掌握了按键消抖原理及实现方法。
2. 通过实验,提高了单片机编程和实验操作能力。
3. 在后续的单片机应用中,可以灵活运用按键控制功能,实现各种输入控制需求。
4. 本次实验为单片机应用奠定了基础,为进一步学习单片机技术打下了良好基础。
单片机轻触按键的功能指标
单片机轻触按键的功能指标摘要:一、单片机轻触按键的功能指标概述二、单片机轻触按键的功能实现1.电容触摸按键2.按键长按和短按功能3.组合键功能4.多功能按键三、单片机轻触按键的应用场景四、总结正文:一、单片机轻触按键的功能指标概述单片机轻触按键是指在单片机系统中,通过按键实现对系统的控制和操作。
轻触按键的功能指标主要包括响应速度、灵敏度、抗干扰能力等。
响应速度是指按键被按下后,单片机能够检测到的时间;灵敏度是指按键在受到轻微触碰时,单片机能够检测到的能力;抗干扰能力是指按键在环境干扰下,单片机能够正常检测到的能力。
二、单片机轻触按键的功能实现1.电容触摸按键电容触摸按键是利用人体电容进行触摸感应的按键,具有无需实际接触、响应速度快等特点。
在单片机系统中,可以通过电容触摸按键实现对系统的快速控制和操作。
2.按键长按和短按功能在单片机系统中,可以通过计时器实现按键的长按和短按功能。
当检测到按键被按下时,启动计时器,当计时器达到预设时间时,判断为长按;若计时器未达到预设时间,则判断为短按。
3.组合键功能组合键是指同时按下多个按键实现特定功能的操作。
在单片机系统中,可以通过检测同时按下的按键数量和组合,实现对应功能的控制和操作。
4.多功能按键多功能按键是指一个按键可以实现多种功能。
在单片机系统中,可以通过记录按键按下的次数或时间,实现不同功能的切换。
三、单片机轻触按键的应用场景单片机轻触按键广泛应用于智能家居、工业控制、医疗设备等领域。
例如,智能家居中的照明控制、家电控制等;工业控制中的设备启动、停止等;医疗设备中的仪器操作等。
四、总结单片机轻触按键作为一种便捷的操作方式,具有响应速度快、灵敏度高、抗干扰能力强等优点。
29. 电容触摸按键实验
容充放电公式:Vc=V0*(1-e^(-t/RC))
普中STM32开发板带您进入ARM世界
我们使用TIM5的通道2(PA1)来检测触摸按键是否按下,每次检测前 ,我们需要先将电容Cs(或 Cs+Cx)放电,即配置PA1引脚为推挽输出模 式,输出一个低电平,才能使电容放电。然后配置PA1 为浮空输入模式 ,利用外部上拉电阻给电容 Cs(Cs+Cx)充电,同时开启TIM5_CH2的输入 捕获,配置极性为上升沿,当检测到上升沿的时候,就认为电容充电完 成了,完成一次捕获检测。
普中STM32开发板带您进入ARM世界
电容触摸按键实验
普中STM32开发板带您进入ARM世界
本讲主要内容
1.电容触摸按键介绍 2.硬件电路 3.编写电容触摸按键控制程序
普中STM32开发板带您进入ARM世界
1.电容触摸按键介绍
触摸按键与传统的机械按键相比,不仅美观而且耐用、寿命长,它颠 覆了传统意义上的机械按键控制,只要轻轻触摸,就可以实现按键开关 的控制、量化调节甚至方向控制。触摸按键已广泛应用于手机、DVD、洗 衣机等消费类电子产品中。本章我们就介绍一种简单的触摸按键:电容 式触摸按键。
我们PZ6806D开发板上的电容触摸按键其实就是一小块覆铜区域,也 称之为触摸感应区。
通常我们会将四周的铜片与电路板地信号连通,触摸感应区设计成方 便手指触摸大小,并将其连接在输入捕获通道上。
普中STM32开发板带您进入ARM世界
触摸感应区与四周的铜片区域就形成了一个电容,通过检测电容充放 电时间即可判断是否有触摸。实现原理:
普中STM32开发板带您进入ቤተ መጻሕፍቲ ባይዱRM世界
普中STM32开发板带您进入ARM世界
3.编写电容触摸按键控制程序
29. 电容触摸按键实验
普中STM32开发板带您进入ARM世界
普中STM32开发板带您进入ARM世界
3.编写电容触摸按键控制程序
本章所要实现的功能是:通过TIM5的通道2(PA1)捕获电容触摸按键 输入信号的高电平脉宽,根据捕获到高电平时间大小控制D2指示灯开关 ,同时D1指示灯不断闪烁表示系统正常运行。程序框架如下: (1)初始化PA1管脚为TIM5通道2输入捕获功能,设置上升沿捕获等 (2)读取一次捕获高电平的值 (3)电容触摸按键初始化 (4)检测电容触摸按键是否按下 (5)编写主函数
普中STM32开发板带您进入ARM世界
电容触摸按键实验
普中STM32开发板带您进入ARM世界
本讲主要内容
1.电容触摸按键介绍 2.硬件电路 3.编写电容触摸按键控制程序普Βιβλιοθήκη STM32开发板带您进入ARM世界
1.电容触摸按键介绍
触摸按键与传统的机械按键相比,不仅美观而且耐用、寿命长,它颠 覆了传统意义上的机械按键控制,只要轻轻触摸,就可以实现按键开关 的控制、量化调节甚至方向控制。触摸按键已广泛应用于手机、DVD、洗 衣机等消费类电子产品中。本章我们就介绍一种简单的触摸按键:电容 式触摸按键。
我们PZ6806D开发板上的电容触摸按键其实就是一小块覆铜区域,也 称之为触摸感应区。
通常我们会将四周的铜片与电路板地信号连通,触摸感应区设计成方 便手指触摸大小,并将其连接在输入捕获通道上。
普中STM32开发板带您进入ARM世界
触摸感应区与四周的铜片区域就形成了一个电容,通过检测电容充放 电时间即可判断是否有触摸。实现原理:
容充放电公式:Vc=V0*(1-e^(-t/RC))
普中STM32开发板带您进入ARM世界
我们使用TIM5的通道2(PA1)来检测触摸按键是否按下,每次检测前 ,我们需要先将电容Cs(或 Cs+Cx)放电,即配置PA1引脚为推挽输出模 式,输出一个低电平,才能使电容放电。然后配置PA1 为浮空输入模式 ,利用外部上拉电阻给电容 Cs(Cs+Cx)充电,同时开启TIM5_CH2的输入 捕获,配置极性为上升沿,当检测到上升沿的时候,就认为电容充电完 成了,完成一次捕获检测。
触控按键测试报告-V0.4
2
2014-09-15
觸控按鍵測試報告
測試項目 工作電壓範圍 工作電流(無負載) 電源測試(阻容式) 電源測試(變壓器) 測試結果 1.95V~5.55V 1.95V -- 1.63mA 5.55V -- 2.3mA PASS PASS 工作電壓 5V,按鍵正常工作。 工作電壓 5V,按鍵正常工作。 工作電壓 5V,按鍵正常工作。 工作電壓 5V,按鍵正常工作。 工作電壓 4.5V,按鍵正常工作。 結果分析/說明 1.95V 為最低可以工作的電壓,但是低 電壓將造成抗干擾性能降低。 測試方法 使用電源供應器,調節輸出電壓,視 DEMO 板 工作狀況。 電源供應器設定電壓,用電流表測量 DEMO 板 靜態電流。 用 5V 阻容式電源連接 DEMO 板,視 DEMO 板 工作狀況。 用 5V 變壓器電源連接 DEMO 板,視 DEMO 板 工作狀況。 用 5V 開關式,有安規電源連接 DEMO 板,視 DEMO 板工作狀況。 用 5V 開關式,無安規電源連接 DEMO 板,視 DEMO 板工作狀況。 電源測試(電池) 溫度適用範圍 濕度適用範圍 ESD 測試 EFT 測試 PASS -40℃~+85℃,PASS 1%~99%,PASS PASS ±4.4KV L2,L1+L2 無誤動作 +4.4KV L1 無誤動作 <-3.5KV L1 無誤動作 無誤動,無零件損壞 用三節乾電池串聯成 4.5V 電源連接 DEMO 板,視 DEMO 板工作狀況。 利用恆溫恆濕實驗機,設定快速與慢速溫度變 化,視 DEMO 板有無異常動作。 配合前項實驗 , 設定相對濕度的變化 , 視 DEMO 板有無異常動作。 依照 ESD 測試規範測試,±1KV~8KV,AIR 及 CONTECT。
電源測試(開關式,有安規) PASS 電源測試(開關式,無安規) PASS
关于单片机触摸按键
基于充放电原理的电容式触摸按键设计发布: 2011-9-1 | 作者: —— | 来源:lidongsheng| 查看: 291次| 用户关注:与传统的机械式按键相比,电容式触摸感应按键美观、耐用、寿命长。
电容式触摸感应按键实际只是PCB上的一小块“覆铜焊盘”,与四周“地信号”构成一个感应电容,触摸该按键会影响该电容值。
现在检测电容值的方法有很多种,如电流与电压相位差检测、由电容构成的振荡器频率检测、电容桥电荷转换检测。
而这里则是利用感应电容与电阻构成的RC回路,检测充放电时间的变化量,不需要专用检测电路,成本低廉。
1检测原与传统的机械式按键相比,电容式触摸感应按键美观、耐用、寿命长。
电容式触摸感应按键实际只是PCB上的一小块“覆铜焊盘”,与四周“地信号”构成一个感应电容,触摸该按键会影响该电容值。
现在检测电容值的方法有很多种,如电流与电压相位差检测、由电容构成的振荡器频率检测、电容桥电荷转换检测。
而这里则是利用感应电容与电阻构成的RC回路,检测充放电时间的变化量,不需要专用检测电路,成本低廉。
1 检测原理电容式触摸按键电路的原理构成如图1所示,按键即是一个焊盘,与地构成一个感应电容,在周围环境不变的情况下电容值固定为微小值,具有固定的充放电时间,而当有一个导体向电极靠近时,会形成耦合电容,这样就会改变固有的充放电时间,而手指就是这样的导体。
通过测量充放电时间的改变即可检测是否有按键被按下。
充放电时间的计算公式如下:式中,t,R,C分别为充放电时间,电阻值,电容值;V1为充放电终止电压值;V2为充放电起始电压值;Vt为充放电t时刻电容上的电压值。
首先,开关在断开的状态下该按键被下拉电阻拉低,电势为0 V,这时开关闭合开始对按键充电,等充满电稳定后再断开开关,这时按键开始放电,并用定时器记录这段放电时间为t1,反复该过程。
当有手指触碰按键时,放电时间会改变为t2,如图2所示,由此即可判断出手指是否触摸到该按键。
触摸按键方案报告
触摸按键方案报告触摸按键方案报告一、方案简介电容触摸传感大约在50多年前就已经出现,现在已经变得越来越易于实现且应用更为广泛。
触摸灯是电容触摸开关的一个经典示例。
触摸灯的出现已有很长一段时间,它由一个简单的电容式开关来开启、关闭灯泡及调节灯的亮度。
新技术使得可以对触摸按钮实现更为复杂的控制。
其关键是要有具有混合信号外设的单片机。
单片机提供了完成电容触摸传感、决策、响应以及其他系统相关任务的能力。
目前业内已有好几种电容触摸传感技术存在,多数技术是基于测量由于人手指触摸产生额外电容而改变的频率或占空比。
有些其他的方法则使用电荷平衡或是充电上升及下降时间的测量。
在便携式媒体播放器和移动手持终端等大容量、高可视性产品的应用中,触摸按键已被广泛采用。
由于其具有方便易用,时尚和低成本的优势,越来越多的电子产品开始从传统机械按键转向触摸式按键。
触摸按键方案优点:1、没有任何机械部件,不会磨损,无限寿命,减少后期维护成本。
2、其感测部分可以放置到任何绝缘层(通常为玻璃或塑料材料)的后面,很容易制成与周围环境相密封的键盘。
以起到防潮防水的作用。
3、面板图案随心所欲,按键大小、形状任意设计,字符、商标、透视窗等任意搭配,外型美观、时尚,不褪色、不变形、经久耐用。
从根本上解决了各种金属面板以及各种机械面板无法达到的效果。
其可靠性和美观设计随意性,可以直接取代现有普通面板(金属键盘、薄膜键盘、导电胶键盘)。
4、触摸按键板可提供UART、IIC、SPI等多种接口,满足各种产品接口需求。
二、原理概述如图1所示在PCB上构建的电容器,电容式触摸感应按键实际上只是PCB 上的一小块“覆铜焊盘”,触摸按键与周围的“地信号”构成一个感应电容,当手指靠近电容上方区域时,它会干扰电场,从而引起电容相应变化。
根据这个电容量的变化,可以检测是否有人体接近或接触该触摸按键。
接地板通常放置在按键板的下方,用于屏蔽其它电子产品产生的干扰。
此类设计受PCB上的寄生电容和温度以及湿度等环境因素的影响,检测系统需持续监控和跟踪此变化并作出基准值调整。
单片机按键实验报告
单片机按键实验报告篇一:单片机按键扫描实验报告键盘扫描一.实验目的(1)掌握矩阵键盘接口电路和键盘扫描编程方法。
(2)掌握按键值处理与显示电路设计。
二.实验任务(1)设计4*4键盘,编写各个键的特征码和对应的键值(0~F);(2)编程扫描按键,将按键对应的数字值使用数码管显示出来。
三.实验电路及连线方法1.采用动态显示连线方法:电路由2 片74LS573,1 个六字一体的共阴数码管组成。
由U15 输出段选码,U16 做位选码,与单片机的采用I/O 口连接方式,短路片J22 连接P2.0,J23 连接P2.3,做输出信号锁存。
(实际电路连接是d7-d6-d5-d4-d3-d2-d1-d0?h-c-d-e-g-b-a-f)。
PW12 是电源端。
2.键盘电路连线方法:电路由16 个按键组成,用P1 口扩展4×4 行列式键盘。
J20 是键盘连接端,连接到P1 口。
J21 是行列键盘、独立键盘选择端,当J21 的短路片连接2-3脚时,构成4×4 行列式键盘;当J21 的短路片连接2-1 脚时,可形成3×4 行列式键盘,4 个独立式按键S4、S8、S12、S16,这4 个独立按键分别连接P1.4~P1.7;其他12 个键3×4 行列式键盘。
PW15 是电源端。
四.编程思路1.采用反转法识别按键的闭合。
2.采用动态显示将键值显示出来。
五.算法流程图六.资源分配1.用P1口进行查找按键2.用R3做键值指针3.用R1做动态显示为选码指针。
4.R5为延时指针。
七.程序设计KPIN:ORG MOV MOV ANL MOV 0000H P1,#0F0H A,P1 A,#0F0H B,AMOVP1,#0FHMOVA,P1ANLA,#0FHORLA,BCJNE A,#0FFH,KPIN1AJMP EXITKPIN1: MOVB,AMOVDPTR,#TABKPMOVR3,#0KPIN2: MOVA,R3MOVC A,@A+DPTRCJNE A,B,KPIN3MOVA,R3LOOP: MOVR1,#0FEH;键盘动态显示 LOOP1: MOVA,R3ANLA,#0FHMOV DPTR,#TABMOVC A,@A+DPTRCLRP2.0CLRP2.1MOVP0,ASETB P2.0NOPCLRP2.0LOOP2: MOVA,R1;位选码MOVP0,ASETB P2.1MOVR5,#250LOOP3: DJNZ R5,LOOP3CLRP2.1SJMP LOOPKPIN3: INCR3CJNE A,#0FFH,KPIN2EXIT: RETTABKP: DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBHDB 0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFHTAB: DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FHDB 79H,33H,7CH,3BH,1BHEND八.调试出现的问题及解决问题1:程序正常运行,但按键显示出现乱码解决:动态显示笔形码错误,并改正。
单片机电容触摸按键实践
触摸按键实践(二)前一段时间,做了一个使用 HT45R35 芯片的触摸按键项目,属于是芯片自带专门应用于触摸键功能的"专用芯片".近日,再次对触摸按键进行实践----使用 AD 转换方式.这样,就不要专门功能的芯片了.同时,调试更加简单方便,也没有了许多限制.下图是一个该实践的原理图,每一个按键包含了 10P,104 电容器,一只贴片封装的双二极管, 3 个电阻.项目里使用的按键数量没有限制.完全可以根据需要来决定.但是,需要单片机具有相同数量的 AD 输入接口.(----或者使用多路模拟开关反而成本上升,电路复杂,尽量不要这么干.)不管是哪一种测量方式,都需要有一个参考量.电容量→定时/计数方式的参考值是通过检测没有触摸按键时的计数值来实时得到,而 AD 方式的参考值就是基准电压,它无需任何手段就是天然存在的.无需追求 AD 的位数,可以使用仅仅 8 位的 AD 转换就足够了.电路工作原理是: 一个由单片机输出的 PWM 信号(没有 PWM 输出的芯片可以使用一个普通 I/O ,只要能够输出满足要求的频率就可以了.)这个信号频率与 10P 电容器有关系.频率低了,10P 电容器的容抗就会增大,造成后级二极管整流的电流下降,影响速度.加大电容量是受到人手触摸电容量的限制,这个 10P 电容量必须与人手触摸电容器有一个合适的配置.尽量让人手的触摸电容量与这个 10P 电容器的容量相同是最理想的.(可以更换 10P 电容器的大小来达到.)例如:如果使用 1K 对 1K 的电阻去分压一个 1V 的电压,这是最理想的.而如果使用一个 1Ω的电阻与一个 10MΩ的电阻去分压,那么,这个分压效果就很差很差了.由此可以知道:首先是从人手的触摸电容量出发,去决定 10P 电容器的电容量,而后,是根据这些电容量去决定信号频率的高低.这就是为什么不能直接使用 50HZ 交流电频率的原因.通常,AD 转换有一个基准电压,可以使用与系统供电相同的 +5V 作为基准电压.有些芯片的 AD 还可以改变基准电压的,则可以使用 2.5V 作为基准电压,灵敏度更高一些.不管是电容量→计数器方式还是电容量→电压方式,都要有一个参考标准,前者是实时测量得到参考值,后者就有一个天然的标准参考--基准电压.这就是使用 AD 方式的好处之一!对较高频率的信号来说,10P 电容器的容抗约为 30KΩ~50KΩ左右(取决于信号频率与电容量大小),它经过双二极管 A7 构成的倍压整流之后,可以得到约 2.2~3.5V 的直流电压.这就是没有触摸按键时的输出电压.由于有 AD 基准的约束,每只按键的读数是大致固定的.以基准=5V为例,读数就是 7FH 左右.这个电压可以比较随便的在印刷板上布线,不像电容量→计数器方式的一样麻烦,这是使用 AD 方式的第二大好处!倍压整流后由一只 104 的电容器进行滤波,得到较为平滑的直流电压.这个直流电压显然可以非常方便的传送.几乎没有什么顾忌.(电容量→定时/计数方式的则不允许乱布线).这里,需要提及与 104 电容器并联的 3M 电阻,这个电阻是给电容器放电使用的,可以根据对按键的反应速度调整其大小.(具体还得看看实际使用芯片的 AD 输入端口的阻抗大小).当不用这个电阻时(=无穷大),反应速度最慢.而且,如果取值较少,电压就会上不去.----中间如果插入一个运放跟随器就好了!还要提及的是 AD 转换的速率,尽量使用较快的速率,较高的系统时钟,因为相对于机械式按键来说,处理触摸式按键是比较麻烦的,耗费的指令也多得多.现在,关键的问题就是进行触摸调试了.试着用手触摸一个按键,使用直流电压表看看它的直流输出电压是否有变化?变化多少?时间快慢?根据实际测试,在触摸着按键时,输出电压会下降到没有触摸时的 50% 以下,但是时间会达到 2~3S .此时,可以细心调整 3M 电阻或者 104 电容器的大小.一般的,如果能够在 0.25S 之内,电压下降到原来数值的 80%~90% 就差不多了.判断哪一个按键被触摸了是很容易的事情了,就看看 AD 读数吧.它是有方向的,不用理会≥参考值,仅仅看看<参考值多少就是了.根据这个"多少"界线,还可以调整触摸灵敏度呢.灵敏度太高,测量值的波动会引起按键还没有触摸就有效了,灵敏度太小,就是摸了半天也没有反应.带 AD 的单片机现在已经很多了,例如 SN8P27XXX 系列, HT46XXXX,HT45XXX 系列,都有许多带 AD 的单片机,其中, HT45R54 自带 24 路 AD ,HT46R343 自带 16 路 AD .还有 Flash 的 HT46F25* ,自带 12 路 AD 而且可以反反复复烧写/擦除,做试验是最好的了!现在市场上有许多专门供货触摸按键芯片的,也有许多技术文章,总之,各师各法,实际处理触摸按键就像电压比较器一样,不需要知道其值的具体大小,仅仅判断有"高"电平还是"低"电平就足够了.----应该属于临界判断.根据上面所说,接下来,我会使用普通单片机来实践做触摸按键.既不使用专用芯片(电容量→定时/计数),也不使用自带 AD 芯片(电容量→电压→AD 转换),就直接使用普通单片机的端口+电压比较器来做.这样是否会让电路多放置一只比较器芯片?不!就使用自带运算放大器或者自带比较器的芯片.同样简单容易.-----也可能失败啊!欢迎各位指导!正是有了许许多多的自带 AD 的单片机,因此,那种使用外挂多路模拟开关的方法就不好用了.(多路 AD 实际芯片内部就有了多路模拟开关).在盛扬半导体(上海)的中文网站上,就有使用 HT46R47 做触摸按键的示例.需要了解更多此触摸按键的其它应用信息,欢迎浏览: .下图是我的 AD 方式试验板,只有 4 个触摸键, 3 只发光管以二进制编码指示按键号码,哪一个按键被触摸了,哪一个对应发光管就点亮 0.5S 时间.使用上,似乎比专用芯片的毫不狲色!----还有待实际应用来检验.我想:既然可以处理测量 0.1℃的温度,0.1mV 的电压,那么,不可能不能处理这种"界限"式的触摸关系.使用 AD 测量的电容触摸按键电路触摸按键实践(3)电容式感应按键以其无机械磨损、寿命长、防水防污、易清洁和时尚的特点, 近几年应用领域和数量迅速增加. 因此, 结合电容感应按键的特点, 设计了一种用A/D 口搭配简单的电路实现电容感应按键的方法. 经测试, 电路的稳定性较高, 在低成本的电路中适用性较强.触摸控制技术又可分为触摸屏(Touch Screen) 技术和触摸按键(Touch Key)技术. 在触摸按键技术方面, 目前主要可分为电阻式触摸按键与电容式感应按键. 由于电阻式的触摸按键需要在设备表面贴一张触摸电阻薄膜, 其耐用性较低, 而电容感应按键技术具有在非金属操作面板上无须开孔处理、防水防污、易清洁、无机械开关磨损而寿命长等优点. 近几年随着苹果公司将电容触摸感应技术从笔记本电脑引用到iPod 后, 电容触摸感应热浪正席卷几乎所有电子产品, 从笔记本电脑、智能电话、PDA、游戏机等手持设备, 到LCD TV、 DVD 等消费电子产品, 再到洗衣机、空调、冰箱、热水器、电磁炉以及咖啡壶等大小家电, 无不以加入电容触摸感应为新的卖点.目前, 世界知名电子元件供应商均加大了对电容触摸按键的应用研究, 并推出众多的专业芯片, 有专用电容感应按键类的全ASIC, 也有众多基于MCU集成类的IC. 但这些芯片价格较高, 在一些按键数量少、成本要求低的电路中很难得到运用. 另外, 使用这些集成类 IC, 很难做到所选资源恰好等于使用的情况, 存在资源的浪费情况. 而且对于升级成熟产品的机械式按键, 还存在变更原MCU 代码的风险. 同时, 目前, 对于电容式触摸按键的介绍大多也停留在基于电容量测量的原理上. 结合电容感应按键的原理, 设计了一种用MCU 的A/D 口实现电容触摸按键的低成本电路.1 电容式感应按键原理平行板电容器具有 2 个极板, 其间隔着1 层介质, 电容器中的大部分能量直接聚集在2 个极板之间, 1 个极板电荷数量的变化将引起另外极板电荷的增减, 从而在电容内部形成电流. 电容式感应按键的原理如图1 所示, 感应按键的金属电极, 放置于非金属面板内, 并连接交变的电信号. 如果在非金属面板另一侧与金属电极对应处放置另外1 块金属板(图2), 那么, 2 个极板就组成了平行板电容器, 非金属面板成为此平行板电容器的介质. 由于电场被封闭在2 个金属极板之间, 所以大部分能量均集中在非金属面板内. 如果在非金属面板外隔着金属, 手指触摸对其能量损失的影响就很小.图1 电容感应按键示意图图2 封闭电场示意图去除外侧的金属板, 电场的能量就会穿过非金属的密集区, 向外传播(图3).图3 电容感应电极的电力线当导体靠近操作面(即非金属面板表面)后, 电磁场即在导电介质中传播. 由于导体中存在自由电子, 这些自由电子在电场作用下就会形成传导电流, 进而产生焦耳热从而引起电磁波能量损耗. 由于人体组织中充满了传导电解质(一种有损电介质), 当手指靠近时同样会引起电磁能量损耗. 因此只要检测流经感应电极的电能变化, 就可以判断是否有手指靠近非金属操作面板.2 电容感应按键取样电路分析图 4 为电容感应按键取样电路图, 电路由5 个分离元件组成. 其脉冲信号频率为300 kHz, 幅度 12 V, 占空比为50%. 通过读取电容 C1上的电压值判别是否有手指靠近操作区域. 其原理分析如下: 二极管1N4148 正向导通电压为d V , 在脉冲信号跳变为高电平(12 V)时, 假定电容 C1上电压为 U0, 电容的充电回路根据 C1电压大小出现如下2 种情况:(1) 若, 则充电回路为图5(a), 充电时间常数电容C1的充电电压:(2) 若则充电回路为图5(b), 充电时间常数电容 C1的充电电压为:在振荡脉冲跳变为低电平时, 根据电容 C1电压大小, 出现以下2 种放电回路:(1) 当0 2 d U > V 时, 放电回路为图5(c), 放电电路的其放电时的电容电压为:图4 电容感应按键取样电路(2) 当U0≤2Vd 时, 放电回路为图5(d), 放电电路的其电容电压为:.由于电路中脉冲占空比为50%, 充放电时间在该电路中, 充放电电阻大, 流过的充放电电流小, 二极管1N4148 的导通电压也较小, 若以充电电路为图5(a)、放电电路为图5(c)来计算, 充电时间常数τ = 放电时间常数= 0.1 s, 而充放电时间为假定二极管电压在微弱电流下按0.2 V 计算根据(1)式和(2)式, 运用迭代可计算出电容电压最后稳定在5.9 V, 而以上计算不考虑由手指触摸等任何情况引起的能量损耗.电容 C1充放电如图6 所示. 在实际的充放电电路中, 电路对金属极板的充放电始终在进行. 当手指靠近金属极板时, 感应电极处存在的微弱电磁场被传导至人手指内电解质中, 同时消耗了部分能量, 电容 C1补充的电荷将减少, 因此电容 C 的电压将下降(图7). 当ΔV 变化量达到最小检测精度要求时, 系统即可通过计算识别出是否有手指或其他导电物体靠近操作区.图6 电容充电时间与电压的关系图7 手指触摸时的电平变化A/D 法电容感应按键、读键流程:将电容电压引入 MCU 通用A/D 口, 即可将电容 C1上的电压值转换为数字量并通过MCU计算出电容 C1两端电压的变化大小, 从而判断出是否有手指或其他导电物体靠近或离开触摸按键, 实现电容感应按键的识别. 软件流程如图8 所示.电路参数对感应灵敏度的影响输入脉冲影响输入脉冲的幅值决定了 C1上稳态电压, 如果脉冲幅值不稳定, 就会导致 C1上的电压波动. 如果该幅值变化引起的电容电压变化量ΔV 超过了检测的最小检测精度, 即使没有手指靠近, 也会造成读键的误判, 所以脉冲电压幅度要稳定. 此外, 输入脉冲的频率同样也会影响到 C1电容的工作状态, 如果输入脉冲的频率过低, 则 C1电压纹波会加大, 感应灵敏度下降; 反之, 输入脉冲的频率过高, 则线路损耗加大, 而且触摸容易受到干扰.充放电电阻值的影响如果同时改变 R1,R2 的阻值, 例如将阻值改为 100KΩ, 充放电时间常数减少10 倍, 因虽然 C1上电压变化不大, 但此时 C1上的充放电电流却显著增强, 使得手指触摸的灵敏度下降. 所以, 电路中 R1,R2 的阻值一定要选取恰当. 二极管的影响由于上述电容式感应按键电路工作频率高, 且流经电流小, 所以应当选择结电容小、开关速度快、正向导通电压低的二极管. 另外, 二极管的工作可靠性一定要好, D1,D2任一短路、断路都会破坏充放电回路, 从而使触摸电路失效.电容感应电极的形式电容式感应按键的感应电极有很多种, 常用的感应电极有PCB 板上的电极及弹簧金属片式电极. 电极形式可以根据外观进行任意设计, 如圆形、方形、三角形等. 但无论电极以哪种形式出现其周围都应尽量远离地: PCB 双面板电极对应的另一面铜箔应当刻蚀去除, 弹簧电极周围的PCB 铜箔也要刻蚀去除. 否则, 感应电极与金属之间将形成感应电流, 削弱了手指或外界导电物靠近电极时电路的灵敏度.同时, 电极应当与非金属面板紧贴, 如果中间有空隙, 相当于增加了感应距离, 使感应灵敏度降低. 感应电极的面积和非金属面板的厚度影响了感应的灵敏度. 实际应用中, 目前厚8mm 以下的钢化玻璃, 其圆形金属感应电极直径不小于12 mm.这种用分离元件组成触摸感应按键用的低成本电路, 在按键数量不多的情况下应用, 可根据按键数量多少进行自由组合感应电极数量和最简电路数量, 充分利用资源. 同时, 对于升级原成熟产品, 仅需选择原MCU 系列中带A/D 端口的产品, 编写读取触摸按键的程序, 可以很顺利地完成程序替换. 该电路目前成功运用于油烟机、消毒柜、微波炉、蒸箱、烤箱等一系列产品上, 顺利通过 EMC 标准的测试要求, 市场质量表现稳定可靠.。
按键功能实验报告总结(3篇)
第1篇一、实验背景按键作为电子设备中常见的输入装置,其功能丰富,应用广泛。
本实验旨在通过设计和实现一系列按键功能,加深对按键工作原理的理解,并提高电子设计实践能力。
二、实验目的1. 掌握按键的基本原理和电路设计方法。
2. 熟悉按键在不同应用场景下的功能实现。
3. 培养电子设计实践能力,提高问题解决能力。
三、实验内容1. 实验器材:51单片机最小核心电路、按键、LED灯、电阻、电容、面包板等。
2. 实验内容:(1)单按键控制LED灯闪烁(2)按键控制LED灯点亮与熄灭(3)按键控制LED灯亮度调节(4)按键实现数字时钟调整(5)按键实现多功能计数器(6)按键实现密码输入与验证四、实验步骤1. 根据实验要求,设计电路图,并选择合适的元器件。
2. 使用面包板搭建实验电路,包括单片机、按键、LED灯、电阻、电容等。
3. 编写程序,实现按键功能。
4. 对程序进行调试,确保按键功能正常。
5. 实验完成后,撰写实验报告。
五、实验结果与分析1. 单按键控制LED灯闪烁实验结果:按下按键,LED灯闪烁;松开按键,LED灯停止闪烁。
分析:本实验通过单片机定时器实现LED灯的闪烁。
当按键按下时,定时器开始计时;当定时器达到设定时间后,LED灯点亮;定时器继续计时,当达到设定时间后,LED灯熄灭。
如此循环,实现LED灯的闪烁。
2. 按键控制LED灯点亮与熄灭实验结果:按下按键,LED灯点亮;再次按下按键,LED灯熄灭。
分析:本实验通过单片机的I/O口控制LED灯的点亮与熄灭。
当按键按下时,单片机将I/O口置为高电平,LED灯点亮;当按键再次按下时,单片机将I/O口置为低电平,LED灯熄灭。
3. 按键控制LED灯亮度调节实验结果:按下按键,LED灯亮度逐渐增加;松开按键,LED灯亮度保持不变。
分析:本实验通过单片机的PWM(脉宽调制)功能实现LED灯亮度的调节。
当按键按下时,单片机调整PWM占空比,使LED灯亮度逐渐增加;松开按键后,PWM占空比保持不变,LED灯亮度保持不变。
单片机模拟电容触摸按键
单片机模拟电容触摸按键这里我们使用的是检测电容充放电时间的方法来判断是否有触摸,图中R是外接的电容充电电阻,Cs是没有触摸按下时TPAD与PCB之间的杂散电容。
而Cx则是有手指按下的时候,手指与TPAD之间形成的电容。
图中的开关是电容放电开关(由实际使用时,由STM32的IO代替)。
先用开关将Cs(或Cs+Cx)上的电放尽,然后断开开关,让R给Cs(或Cs+Cx)充电,当没有手指触摸的时候,Cs的充电曲线如图中的A曲线。
而当有手指触摸的时候,手指和TPAD之间引入了新的电容Cx,此时Cs+Cx 的充电曲线如图中的B曲线。
从上图可以看出,A、B两种情况下,Vc达到Vth的时间分别为Tcs和Tcs+Tcx。
其中,除了Cs和Cx我们需要计算,其他都是已知的,根据电容充放电公式:Vc=V0*(1-e^(-t/RC))其中Vc为电容电压,V0为充电电压,R为充电电阻,C为电容容值,e为自然底数,t为充电时间。
根据这个公式,我们就可以计算出Cs和Cx。
利用这个公式,我们还可以把战舰开发板作为一个简单的电容计,直接可以测电容容量了,有兴趣的朋友可以捣鼓下。
在本章中,其实我们只要能够区分Tcs和Tcs+Tcx,就已经可以实现触摸检测了,当充电时间在Tcs附近,就可以认为没有触摸,而当充电时间大于Tcs+Tx时,就认为有触摸按下(Tx为检测阀值)。
本章,我们使用PA1(TIM5_CH2)来检测TPAD是否有触摸,在每次检测之前,我们先配置PA1为推挽输出,将电容Cs(或Cs+Cx)放电,然后配置PA1为浮空输入,利用外部上拉电阻给电容Cs(Cs+Cx)充电,同时开启TIM5_CH2的输入捕获,检测上升沿,当检测到上升沿的时候,就认为电容充电完成了,完成一次捕获检测。
在MCU每次复位重启的时候,我们执行一次捕获检测(可以认为没触摸),记录此时的值,记为tpad_default_val,作为判断的依据。
在后续的捕获检测,我们就通过与tpad_default_val的对比,来判断是不是有触摸发生。
电容触摸按键 (2)
电容触摸按键
电容触摸按键是一种无需物理按下的按键,通过接近或触摸电容板上的电容触摸区域来实现按键触发。
它利用了人体的电容,当手指接近电容触摸区域时,会引起电容板上的电容值发生变化,从而识别出手指的触摸动作。
常见的应用场景包括电子设备的触摸屏、智能家居控制面板和汽车中的触摸控制面板等。
与传统的机械按键相比,电容触摸按键有以下优点:
1. 无需物理按下,触摸即可触发,因此使用寿命更长。
2. 可以实现多点触控,提供更多的操作选项和交互方式。
3. 无需物理结构,可以实现更薄更灵活的设计。
4. 可以防水防尘,提高产品的可靠性和耐用性。
然而,电容触摸按键也存在一些缺点:
1. 对于手套等绝缘物体的触摸感应效果会减弱。
2. 对于湿手或多汗的情况,触摸感应效果也会受到影响。
3. 当环境中存在大幅变化的温度或湿度时,电容触摸按键的灵敏度可能会受到一定程度的影响。
总体来说,电容触摸按键在现代电子产品中得到了广泛应用,其便捷和灵活的操作方式为用户带来了更好的使用体验。
电容触摸按键实验心得体会
电容触摸按键实验心得体会电容触摸按键是一种基于电容触摸技术的按键设备,其原理是基于物体与电容板之间的电容变化来实现按键的检测。
在进行实验过程中,我对电容触摸按键的工作原理、实验步骤和目标有了更深入的了解,同时也获得了实际操作的经验和实验过程中的心得体会。
首先,我对电容触摸按键的工作原理进行了了解。
电容触摸按键的原理是根据电容的变化来判断按键的触摸与否。
当手指接触到电容板时,会改变电容板的电容值,通过检测电容值的变化来识别按键是否被触摸。
与传统的机械按键相比,电容触摸按键具有更高的灵敏度和可靠性。
在实验过程中,我首先准备了所需的材料,包括电容触摸按键模块、Arduino开发板和连接线等。
然后,我按照实验指导书上的步骤进行了实验。
首先,我将电容触摸按键模块连接到Arduino开发板上,然后通过编程来实现按键的检测和响应。
在编程的过程中,我学会了使用Arduino语言和相关函数,了解了电容触摸按键的工作原理。
通过实验,我进一步认识到了电容触摸按键的优点。
首先,电容触摸按键具有高灵敏度和高响应速度,可以实现更快捷、更精准的按键操作。
其次,电容触摸按键没有机械结构,不会出现按键损坏和按键失灵的问题,具有更长的使用寿命和更可靠的性能。
此外,电容触摸按键还具有较小的尺寸和较简洁的外观,更适合于一些小型化和美观性要求较高的应用场景。
在实验过程中,我还遇到了一些问题和困难。
首先,连接线的插拔不稳定导致电容触摸按键模块无法正常工作,我通过重新插拔连接线来解决这个问题。
其次,在编程的过程中,我遇到了一些语法错误和逻辑错误,导致按键无法正常检测和响应,我通过查找资料和调试程序来解决这些问题。
通过解决这些问题,我提高了自己的动手操作能力和问题解决能力。
总的来说,这次电容触摸按键实验让我对电容触摸技术有了更深入的了解,提高了我对按键设备工作原理和使用方法的认知。
同时,通过实际操作和问题解决,我提高了自己的动手能力和实验技巧。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务:MSP-EXP430G2 板上P1.0 上接了一个LED,而在配套的LaunchPad 扩
展板上,将MSP430G2553 的P2.0 和P2.5 引出作为电容触摸按键。
要求按下P2.0 后LED 亮,按下P2.5 后LED 灭,程序运行过程中不阻塞CPU,并且实现低功耗运行。
硬件连接:如图所示
程序代码:
TouchIN.c:
#include "MSP430G2553.h"
#define KEY_NUM 2 /*触摸按键数目,根据需要修改*/ //=============具体触摸按键IO宏定义,根据需要添加代码===============
#define KEY0_INIT P2DIR &= ~BIT0; P2SEL &= ~ BIT0; P2SEL2 |= BIT0 /*按键1开启振荡*/ #define KEY1_INIT P2DIR &= ~BIT5; P2SEL &= ~ BIT5; P2SEL2 |= BIT5 /*按键2开启振荡*/ #define ALL_OSC_OFF P2SEL2 &= ~(BIT0 + BIT5) /*关闭全部触摸振荡*/ /*门限频率的取值取决于定时扫描的时长,3300对应的是1.9ms定时情况,实际定时可取1ms~20ms*/
const unsigned int FREQ_THRESHOLD[KEY_NUM]={3300,3300}; /*参考值,需用仿真器查看后调整*/
//-----静态局部变量----
static unsigned int Freq[KEY_NUM]={0}; //当前测频值
static unsigned char Key_Buff[KEY_NUM][4]={0}; // 软件FIFO
static unsigned char Key_Num=0; //按键编号
//-----全局变量,复杂程序中可以移植到Global.h统一管理-----
unsigned char TouchIN=0; //相当于PxIN寄存器作用,支持8个触摸按键
void Key_Measure_Freq()
{
Freq[Key_Num]=TAR; //当前编号按键的频率被测得
ALL_OSC_OFF; //关闭所有振荡IO
Key_Num++; //切换下一振荡IO
if (Key_Num>=KEY_NUM) Key_Num=0; //各触摸按键循环交替
switch (Key_Num)
{
case 0 : KEY0_INIT; break; //振荡IO初始化
case 1 : KEY1_INIT; break;
default: break;
}
TA0CTL = TASSEL_3+MC_2+TACLR; //增计数清0,并开始计数
}
void Key_FIFO() //存储连续4次测量数据
{
Key_Buff[Key_Num][0]=Key_Buff[Key_Num][1];
Key_Buff[Key_Num][1]=Key_Buff[Key_Num][2];
Key_Buff[Key_Num][2]=Key_Buff[Key_Num][3];
if( Freq[Key_Num]<FREQ_THRESHOLD[Key_Num]) //判断是否识别为按键
Key_Buff[Key_Num][3]=1;
else
Key_Buff[Key_Num][3]=0;
}
void Key_Judge() //按键仲裁,只有连续4次测量结果一致,才算数
{
if( (Key_Buff[Key_Num][0]==0)&&(Key_Buff[Key_Num][1]==0)
&&(Key_Buff[Key_Num][2]==0)&&(Key_Buff[Key_Num][3]==0) )
// TouchIN=0<<Key_Num; //按键松开(错误代码)
TouchIN &=~(1<<Key_Num); //按键松开(正确代码)
if( (Key_Buff[Key_Num][0]==1)&&(Key_Buff[Key_Num][1]==1)
&&(Key_Buff[Key_Num][2]==1)&&(Key_Buff[Key_Num][3]==1) )
// TouchIN =1<<Key_Num; //按键按下(错误代码)
TouchIN |=1<<Key_Num; //按键按下
}
void TouchIN_Dect() //触摸输入检测
{
Key_Measure_Freq(); //测频
Key_FIFO(); //软件FIFO缓存最近4次测量数据
Key_Judge(); //仲裁按键是否按下或松开
}
TouchIN.h:
/***** TouchIN.h******/
#ifndef TOUCHIN_H_
#define TOUCHIN_H_
extern void TouchIN_Dect() ; //WDT中断事件
extern unsigned char TouchIN; // 相当于PxIN寄存器作用,支持8个触摸按键#endif /* TOUCHIN_H_ */
main.c:
#include "MSP430G2553.h"
#include "TouchIN.h" /*触摸按键检测库函数*/
void WDT_Ontime(void);
//-----对硬件相关代码进行宏定义处理-----
#define LED_ON P1OUT |= BIT0 /*宏定义LED所在IO*/
#define LED_OFF P1OUT &= ~BIT0 /*宏定义LED所在IO*/
void main(void) {
WDTCTL = WDTPW+WDTHOLD; //关狗
//-----初始化GPIO-----
P1DIR |= BIT0; //LED所连IO口P1.0设为输出
P1OUT &= ~BIT0;
//-----初始化WDT定时中断为16ms-----
WDTCTL = WDT_ADLY_16; // “超级”宏定义
IE1 |= WDTIE; //使能WDT中断
_EINT(); // 使能总中断
__bis_SR_register(LPM3_bits); //等同LPM3
}
#pragma vector=WDT_VECTOR // Watch dog Timer interrupt service routine
__interrupt void WDT_ISR(void)
{
WDT_Ontime();
}
void WDT_Ontime(void)
{ //-----首先必须定时扫描触摸按键检测函数-----
TouchIN_Dect();
if(TouchIN & BIT0) LED_ON;
if(TouchIN & BIT1) LED_OFF;
}
调试情况:
第一次调试:TouchIN_Dect函数重复定义
第二次调试:正常
调试结果:按下P2.0 后LED 亮,按下P2.5 后LED 灭,任务达成。
涉及知识点:
1、库函数头文件
2、电容触摸、用Timer_A 定时器测量电容振荡频率
3、WDT定时器
4、位操作、寄存器、中断。