PIC单片机电容触摸按键,最方便的地方就是外围电路简单,不需要任何外围元器件。只要从引脚连接出一条线到焊盘上即可。
电容按键触摸的原理
PIC单片机通过松弛振荡器是一个自激 RC 振荡器,它使用 2 个带 SR 锁存的比较器来改变感应电容器电压的充电方向,进行充电或者放电。通俗点说就是在管脚上产生了一个三角波。当手指按上去后就引入了一个额外的电容 使得 充放电的周期沿长。也就是说人的手靠近的时候充电时间沿长了,然后放电时间也加长了。这样我们就可以同过判断 RC震荡频率的快慢来判断 是否有手指按下。
如何判断RC震荡频率的快慢呢?
这就和我们平时判断一个人做事情快慢是一样的。比如我们给个10S的时间,让两个人吃薯条如果吃的越多的,就说明他的吃东西的频率越快反之越慢。
官方的资料给了个比较简单的实现方式。 由TIMER1来完成计数也就是充放电的次数,由TIMER0来计时。TIMER0每隔段时间触发一次中断,来读取TIMER1充放电的次数。
如果采集的的次数明显小于之前的次数。那就说明充放电频率降低了。有人的手按下了。这就是判断的大致原理。
官方提供的简单按钮检测方式(大概就这意思)
首先要有三个变量 unsigned int average;//平均值
unsigned int raw;//当前值
unsigned int trip;//按下时频率与平均值得差
中断程序
ISR{
...
if(raw < (average - trip))
// 按钮按下
else
//按钮没有按下
//对当前读数进行平均
average = average*15/16+raw/16;
}
关键字:PIC单片机 电容触摸 按键
引用地址:
PIC单片机之电容触摸按键
推荐阅读最新更新时间:2024-03-16 16:10
手机界的清流:无按键式HTC Ocean渲染图曝
近日,HTC设计师Danelle Vermeulen曝光了“Ocean”智能手机概念图,该机采用有无按键设计,但很快,Vermeulen就撤销了该概念图。对此,爆料人LlabTooFeR表示,HTC将推出三款该系列手机: Ocean Master, Ocean Note以及Ocean Smart。现在,我们又迎来了该机的高质渲染图。 手机界的清流:无按键式HTC Ocean渲染图曝光
当然,完全无按键设计的设计还是相当有趣的。在近十年间,触控界面可能是人类最伟大的发明。不过,大多智能手机还是保留有音量按键、电源键以及一枚Home键。然而HTC Ocean系列配置的却是触控边框,用户可通过触控该边框不同的部位来进行启动
[手机便携]
单片机学习——独立按键之二
题目:数码管前三位显示一个跑表,从000到999之间以0.01秒的速度运行,当按下一个独立按键时,跑表停止,按下第二个时计时开始,按下第三个是计数值清零从头开始。(采用定时器中断方式) 解决方案:(C语言编程) #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar bai,shi,ge,num; uint shu; sbit s=P1^0; sbit s2=P1^1; sbit s3=P1^2; sbit le=P3^6; void delay(uint a); void dis(); voi
[单片机]
AVR 数码管显示设计 按键加减数
//******************************FileName: Counter.C**************************// //******************************ICCAVR 编译*****************************// #include io8535v.h #define uchar unsigned char #define uint unsigned int //数码管字型表,对应0,1,2,3,4,5,6,7,8,9// uchar Table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0
[单片机]
单片机实验板2011_V1.1-74HC244 按键测试程序
/************单片机教学实验板 ******************/ /*74HC244 按键测试程序*/ #include reg52.h ac #include STC_Delay.h #include stdio.h #include stdlib.h #include intrins.h #include math.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit speaker=P1^3; //蜂鸣器 sbit A13=P2^5; // sb
[单片机]
基于STM32的电容触摸按键的原理解析
原理: R:外接电容充放电电阻。 Cs:TPAD和PCB间的杂散电容。 Cx:手指按下时,手指和TPAD之间的电容。 开关:电容放电开关,由STM32IO口代替。 没有按下的时候,充电时间为T1(default)。按下TPAD,电容变大,所以充电时间为T2。我们可以通过检测充放电时间,来判断是否按下。如果T2-T1大于某个值,就可以判断有按键按下。 检测电容触摸按键过程: ①TPAD引脚设置为推挽输出,输出0,实现电容放电到0。 ②TPAD引脚设置为浮空输入(IO复位后的状态),电容开始充电。 ③同时开启TPAD引脚的输入捕获开始捕获。 ④等待充电完成(充电到底Vx,检测到上升沿)。
[单片机]
基于arm开发板四个按键控制四个灯亮
基于s5pv2410,cortex a8的四个按键每一个按键点了对应的灯 对于用汇编来编程的话不难,重点在于数据手册,电路图,管脚的看懂 直接上代码 .globl _start _start: ldr r0,=0xe0200c40 @按键控制寄存器的地址 ldr r1, bic r1,r1,#0xff @bic一次只能清8为每四位控制一个按键 bic r1,r1,#0xff 8 @把16位清为零控制四个按键为输入方式 str r1, @配置按键为输入方式 ldr r0,=0xe0200280 @led灯控制寄存器的地址 ldr r1,=0x1111 str r1, @配置led灯为输出方式 loop: @循环读取按键的值 ldr
[单片机]
PIC单片机之中断程序
什么是中断程序呢? 形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当CPU在执行一个程序的时候,突然产生了中断事件CPU就去执行中断程序了,当执行完成后CPU又回来执行原先的程序。 中断事件 什么是中断事件,就是引起中断的事件。对于单片机来说这些事件是多种多样的。比如 说一个按键按下,一定的时间到了,一串数据发送完毕,或接收完一个数据。 讲到中断不得不讲讲和中断相对的 查询。其实不管是按键按下 还是 时间到,还是数据发送完毕,这些事实上都可以用查询的方式办到。比如
[单片机]
单片机系统与标准PC键盘的接口模块设计
概述 在单片机系统中,当输入按键较多时,在硬件设计和软件编程之间总存在着矛盾。对于不同的单片机系统需要进行专用的键盘硬件设计和编程调试,通用性差,使项目开发复杂化。标准PC键盘在工艺与技术上都已相当成熟,而且工作稳定,价格低廉。本设计实现了一个接口模块,它将标准PC键盘发出的位置扫描码,变换为标准的ASCII码和OEM扫描码或Windows虚拟键代码,再以并行或串行方式传送给上位单片机。 接口模块的特点 该模块在PC键盘与上位单片机之间起转换作用,它屏蔽了与PC键盘进行数据和命令交互的复杂过程,大大简化了上位单片机系统的输入设计;它实现了类似DOS操作系统中键盘中断服务程序的功能,使设计人员只需关心接收按键的结果,并可使
[应用]