按鍵的介紹:
輕觸開關是一種電子開關,使用時.輕輕按開關按鈕就可使開關接通,當松開手時.開關斷開。我們使用的開關如下圖:
在一個理想的狀態下,我們按下按鍵就會使得電位狀態從低電平編程高電平,高電平編程低電平。
事實上,按鍵在按下和松開的過程中,會存在一個處于中間值的過程,這個時候會存在一個抖動現象。
為了消除按鍵的抖動現象,我們需要對這一電路進行一個修改。
對于消抖,我們可以通過兩個途徑進行消抖
1、硬件消抖:
采用一個RC延時充放電的電路進行消抖。
工作原理:在RC消抖電路中,電阻起到限制電流流動的作用,電容則用來儲存電荷。當輸入信號發生變化時,電容會通過電阻進行充放電,從而實現對信號的平滑處理。通過合理選擇電阻和電容的數值,可以達到最佳的消抖效果。
RC消抖電路的工作方式可以分為兩個階段:充電階段和放電階段。
1,充電階段:當輸入信號由低電平變為高電平時,電容開始充電。由于電容的充電時間常數( t=RC),充電過程并不是瞬間完成的,而是需要一定的時間。在這個過程中,電容會逐漸儲存電荷,輸出信號也會逐漸穩定。當電容充滿電荷后,輸出信號達到穩定狀態。
2.放電階段:當輸入信號由高電平變為低電平時,電容開始放電。放電過程同樣需要一定的時間,電容會逐漸釋放電荷。在這個過程中,輸出信號會逐漸下降,直到達到低電平。放電過程的時間也由RC電路的時間常數決定。
2、軟件消抖:
當按鍵被按下時,通過延時時間來判斷按鍵是否按下(即二次確認按鍵的狀態)來進行消抖
程序編寫:
通過一個按鍵來控制一個燈的啟停狀態
#include
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P2^0;
sbit K1=P3^1;
void delay(u16 i) //延時函數
{
while(i--);
}
void key()
{
if(K1==0)
{
delay(1000); //消抖
if(K1==0)
{
led=~led;
}
while(!K1); //判斷按鍵是否松開
}
}
void main()
{
while(1)
{
key();
}
}
現象展示:
1、當我們按下按鍵時,那么LED燈亮
2、當我們再次按下按鍵時,LED燈熄滅
-
RC
+關注
關注
0文章
227瀏覽量
48865 -
電子開關
+關注
關注
5文章
124瀏覽量
32853 -
按鍵
+關注
關注
4文章
223瀏覽量
57619 -
消抖電路
+關注
關注
0文章
6瀏覽量
8612 -
輕觸開關
+關注
關注
0文章
66瀏覽量
1354
發布評論請先 登錄
相關推薦
評論