触摸按键的实现主要是通过检测板级系统上构建的RC振荡电路在固定时间内的振荡次数,如果振荡次数发生明显变化,则判断为触摸状态。那么振荡次数主要是由RC的值决定,在系统中R值是固定的,而电容C即系统的中的传感器,是由PCB layout的一个尺寸与手指大小的覆铜片。其与周围的地层构建一个电容值微小的电容(大约为10pF)。当手指接近会改变其介电常数,导致电容值发生改变,因而导致振荡次数发生改变。如1图所示
图1
那么从实现角度来说,要实现触摸功能需要有RC振荡比较网络,比较器以及计数器。而MSP430具有这类资源,且其管脚漏电流非常小,非常适合用于触摸按键的功能。目前主要有检测RC充放电时间的方法(RC)与检测RC振荡次数即弛张振荡的方法(RO)。从目前的应用的角度,RO方法具有更好的稳定性与抗干扰能力。其原理如图2所示。
图2
MSP430的内置比较器和外部的冲放电电阻Rc以及感应电容Csensor一起构成了一个张驰振荡器结构。而感应电容Csensor就是这个振荡器的调协元件,Csensor的任何变化都相应的改变张驰振荡器的谐振频率。我们利用MSP430内置的定时器A来采样振荡频率,从而可以检测到Csensor的变化。
基于MSP430的触摸按键2
触摸按键的原理性东西在第一篇里已经大概讲过,本篇主要具体介绍一下怎么样使用MSP430来构建触摸按键。
图1
这张图1在上一章已经讲过。对于图中Px.y为高,比较器正端为高,Csensor进行充电,直到比较器负端为高时,比较器输出反向为低,则Csensor开始放电,如此持续振荡。比较器内部输出的是方波信号,通过TImerA对其进行计数。通过对比在固定时间窗里振荡数目的变化来判断是否有触摸的动作。下图为时间窗与震荡次数的关系。
图2
关键字:MSP430 构建触摸按键 介电常数
引用地址:
怎样使用MSP430来构建触摸按键
推荐阅读最新更新时间:2024-11-10 03:07
MSP430单片机IO面面观
一、MSP430单片机的端口概述 P1~P6每组有8个I/O 口,P3、P4、P5、P6具有I/O及其它片内外设功能,每组具有4个寄存器。P1、P2除具有上述功能外还具有中断能力,每组具有7个寄存器。 二、Px端口 1. P1、P2端口 (1)PxDIR 输入/输出方向寄存器(x代表1,2) 相互独立的八位分别定义了Px7~Px0,8个引脚的输入输出方向。 0 输入模式,只能读。 1 输出模式,可读可写。 8位在PUC后都被复位及置为0。 Eg:P1DIR = 0x0F; 这里,0x0F为16进制表示,对应的二进制为0000 1111,即将P1DIR的高4位置
[单片机]
MSP430单片机外部中断
要想让一个IO口作为外部中断的中断源必须有三个设置。第一,必须将该IO口的方向设置为输入;第二,选择外部中断的触发方式,即选择是上升沿触发还是下降沿触发;第三,使能该IO口的中断。 比如,如果我们想设置P1.0口作为外部中断源就可以这样设置: P1DIR&= ~BIT0;//方向设置为输入 P1IES |= BIT0;//触发方式设置 P1IE |=BIT0;//使能中断 其中触发方式设置中0为上升沿触发、1为下降沿触发。设置完成之后就可以使用P1.0端口的下降沿或者上升沿触发的外部中断了。 需要特别说明的是如果在一个设计程序中如果用到了中断,那么在使用中断之前必须使能总中断。IARfor430环境下的使能
[单片机]
MSP430x09x 系列 MCU 在电动剃须刀中的应用
摘要 MSP430x09x是TI推出的业界首款名符其实的0.9V微控制器 (MCU),它的出现让便携式设备中真正使用单电池供电成为可能,将推动单节电池供电的、更小巧、更低成本的便携式产品的发展。与现有号称0.9V 技术的MCU不同,MSP430x09x能够以0.9V的低电压运行所有模拟和数字逻辑,因此该系列MCU无需板载升压转换器,从而可为整体系统降低功耗,减少了对外部电路的需求。同时,在降低工作电压的情况下,仍继承了MSP430 系列单片机原有的优秀特性和丰富外设,并开创性的设计了功能丰富的模拟功能模块—模拟功能池(A-Pool)。本文将介绍MSP430x09x系列MCU在电动剃须刀系统中的应用,并着重阐述该系统的软硬件设计
[单片机]
MSP430单片机原理及应用 实验
单片机原理及应用 课程实验(二) 实验项目:MSP430简单程序设计 实验目的:学会用C语言进行简单程序设计 实验要求:掌握编写排序程序 实验内容: (1)设计一个对8个数据(0-255,任意设置)的由小到大排序程序。 (2)将结果显示在LCD显示器上。 程序代码如下: #include msp430x14x.h #include Config.h #include string.h #include stdlib.h #include stdio.h int ans; // 全局变量控制输出 // 初始化IO口子程序 void Port_init() { P4SEL = 0x00;
[单片机]
MSP430低功耗模式-while循环失效
如下代码实现MSP430G2553单片机两个led交替闪烁 #include msp430.h /** * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer P1DIR|=BIT0+BIT6; P1OUT|=BIT0; while(1) { unsigned int i; i=50000; while(i--); P1OUT^=BIT0+BIT6; } } 发现灯光显示异常两灯常亮。 为什么呢?在老师帮助下了解了是因为Msp430这款板子默认的低功耗模式导致了cpu不干预而
[单片机]
MSP430 5438时钟系统介绍
3.1时钟系统介绍 UCS模块支持低功耗。它内部含有三个时钟信号,用户可以自行选择,找到性能和功耗的平衡点。UCS软件 配置后,只需要一两个晶振或者电阻,而不需要使用外部振荡器。 UCS模块最多含有5个时钟源: l XT1CLK:低频/高频振荡器,可以使用低频 32768HZ 晶振和外部振荡器或者通过外部输入源输入 4MHZ~32MHZ时钟。 l VLOCLK:内部低消耗,低频振荡器。典型值为 12KHZ。 l REFOCLK:内部低频振荡器,典型值为 32768HZ,作为 FLL基准源。 l DCOCLK:内部数字控制振荡器(DCO)可以通过 FLL来稳定。 l XT2CLK:可选择的高频振荡器,可以使用标准晶振,振荡器
[单片机]
MSP430 ADC12模块应用源程序
1-简介 简介MSP430单片机ADC12模块 序列单次采集的 应用范例。 2-例程 //****************************************************************************** //MSP430F149 ADC12模块+串行通讯的实验程序 //使用ADC12采集实验,将采集到数据送向PC.(序列单次采集) //P3.4为发送,P3.5为接收 晶体使32768HZ/8MHZ. 串行波特率B/S //使用SMCLK作为波特率发器时,不能使用LPM2,LPM3! //以下程序已验证通过,初学者可直接使用.由时间仓促和水平有限,请读者批评指正. //编写:www.Mic
[单片机]
对MSP430单片机__delay_cycles精确延时的说明及改正
在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的函数)以提供用户精确延时使用, 该函数原型是: __intrinsic void __delay_cycles(unsigned long __cycles); 该内部函数实现__cycles个CPU周期的延时,但对于该参数的设置,我要陈述一下: __cycles需要我们传递的是CPU运行的周期个数 网上普遍的用法是: #define CPU_CLOCK 8000000 #define delay_us(us) __delay_cycle
[单片机]