按鍵的介紹:
輕觸開(kāi)關(guān)是一種電子開(kāi)關(guān),使用時(shí).輕輕按開(kāi)關(guān)按鈕就可使開(kāi)關(guān)接通,當(dāng)松開(kāi)手時(shí).開(kāi)關(guān)斷開(kāi)。我們使用的開(kāi)關(guān)如下圖:
在一個(gè)理想的狀態(tài)下,我們按下按鍵就會(huì)使得電位狀態(tài)從低電平編程高電平,高電平編程低電平。
事實(shí)上,按鍵在按下和松開(kāi)的過(guò)程中,會(huì)存在一個(gè)處于中間值的過(guò)程,這個(gè)時(shí)候會(huì)存在一個(gè)抖動(dòng)現(xiàn)象。
為了消除按鍵的抖動(dòng)現(xiàn)象,我們需要對(duì)這一電路進(jìn)行一個(gè)修改。
對(duì)于消抖,我們可以通過(guò)兩個(gè)途徑進(jìn)行消抖
1、硬件消抖:
采用一個(gè)RC延時(shí)充放電的電路進(jìn)行消抖。
工作原理:在RC消抖電路中,電阻起到限制電流流動(dòng)的作用,電容則用來(lái)儲(chǔ)存電荷。當(dāng)輸入信號(hào)發(fā)生變化時(shí),電容會(huì)通過(guò)電阻進(jìn)行充放電,從而實(shí)現(xiàn)對(duì)信號(hào)的平滑處理。通過(guò)合理選擇電阻和電容的數(shù)值,可以達(dá)到最佳的消抖效果。
RC消抖電路的工作方式可以分為兩個(gè)階段:充電階段和放電階段。
1,充電階段:當(dāng)輸入信號(hào)由低電平變?yōu)楦唠娖綍r(shí),電容開(kāi)始充電。由于電容的充電時(shí)間常數(shù)( t=RC),充電過(guò)程并不是瞬間完成的,而是需要一定的時(shí)間。在這個(gè)過(guò)程中,電容會(huì)逐漸儲(chǔ)存電荷,輸出信號(hào)也會(huì)逐漸穩(wěn)定。當(dāng)電容充滿電荷后,輸出信號(hào)達(dá)到穩(wěn)定狀態(tài)。
2.放電階段:當(dāng)輸入信號(hào)由高電平變?yōu)榈碗娖綍r(shí),電容開(kāi)始放電。放電過(guò)程同樣需要一定的時(shí)間,電容會(huì)逐漸釋放電荷。在這個(gè)過(guò)程中,輸出信號(hào)會(huì)逐漸下降,直到達(dá)到低電平。放電過(guò)程的時(shí)間也由RC電路的時(shí)間常數(shù)決定。
2、軟件消抖:
當(dāng)按鍵被按下時(shí),通過(guò)延時(shí)時(shí)間來(lái)判斷按鍵是否按下(即二次確認(rèn)按鍵的狀態(tài))來(lái)進(jìn)行消抖
程序編寫:
通過(guò)一個(gè)按鍵來(lái)控制一個(gè)燈的啟停狀態(tài)
#include
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P2^0;
sbit K1=P3^1;
void delay(u16 i) //延時(shí)函數(shù)
{
while(i--);
}
void key()
{
if(K1==0)
{
delay(1000); //消抖
if(K1==0)
{
led=~led;
}
while(!K1); //判斷按鍵是否松開(kāi)
}
}
void main()
{
while(1)
{
key();
}
}
現(xiàn)象展示:
1、當(dāng)我們按下按鍵時(shí),那么LED燈亮
2、當(dāng)我們?cè)俅伟聪掳存I時(shí),LED燈熄滅
-
RC
+關(guān)注
關(guān)注
0文章
224瀏覽量
48726 -
電子開(kāi)關(guān)
+關(guān)注
關(guān)注
5文章
107瀏覽量
32795 -
按鍵
+關(guān)注
關(guān)注
4文章
223瀏覽量
57549 -
消抖電路
+關(guān)注
關(guān)注
0文章
6瀏覽量
8578 -
輕觸開(kāi)關(guān)
+關(guān)注
關(guān)注
0文章
62瀏覽量
1312
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論