PIC單片機電容觸摸按鍵,方便的地方就是外圍電路簡(jiǎn)單,不需要任何外圍元器件。只要從引腳連接出一條線(xiàn)到焊盤(pán)上即可。
電容按鍵觸摸的原理
PIC單片機通過(guò)松弛振蕩器是一個(gè)自激 RC 振蕩器,它使用 2 個(gè)帶 SR 鎖存的比較器來(lái)改變感應電容器電壓的充電方向,進(jìn)行充電或者放電。通俗點(diǎn)說(shuō)就是在管腳上產(chǎn)生了一個(gè)三角波。當手指按上去后就引入了一個(gè)額外的電容 使得 充放電的周期沿長(cháng)。也就是說(shuō)人的手靠近的時(shí)候充電時(shí)間沿長(cháng)了,然后放電時(shí)間也加長(cháng)了。這樣我們就可以同過(guò)判斷 RC震蕩頻率的快慢來(lái)判斷 是否有手指按下。
如何判斷RC震蕩頻率的快慢呢?
這就和我們平時(shí)判斷一個(gè)人做事情快慢是一樣的。比如我們給個(gè)10S的時(shí)間,讓兩個(gè)人吃薯條如果吃的越多的,就說(shuō)明他的吃東西的頻率越快反之越慢。
官方的資料給了個(gè)比較簡(jiǎn)單的實(shí)現方式。 由TIMER1來(lái)完成計數也就是充放電的次數,由TIMER0來(lái)計時(shí)。TIMER0每隔段時(shí)間觸發(fā)一次中斷,來(lái)讀取TIMER1充放電的次數。
如果采集的的次數明顯小于之前的次數。那就說(shuō)明充放電頻率降低了。有人的手按下了。這就是判斷的大致原理。
官方提供的簡(jiǎn)單按鈕檢測方式(大概就這意思)
首先要有三個(gè)變量 unsigned int average;//平均值
unsigned int raw;//當前值
unsigned int trip;//按下時(shí)頻率與平均值得差
中斷程序
ISR{
...
if(raw < (average - trip))
// 按鈕按下
else
//按鈕沒(méi)有按下
//對當前讀數進(jìn)行平均
average = average*15/16+raw/16;
}