PIC单片机之电容触摸按键

本文深入解析了利用PIC单片机电容触摸按键的硬件设计,阐述了其原理——通过自激RC振荡器产生三角波,并解释了手指触碰时引起充放电周期变化的机制。同时,介绍了通过比较器和定时器实现按钮按下状态检测的方法,以及一种简单的按钮检测算法,包括平均值计算和中断处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 电容触摸的硬件设计

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;             

         }


 



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值