按鍵防抖 如何在程式中編寫按鍵的控制語句呢?

2021-10-14 16:23:32 字數 1791 閱讀 9021

按鍵即微動開關,本身不能自鎖。今天我們通過三個程式舉例如何在程式中編寫按鍵控制語句。

一、三個製作中用到的電路圖以及元器件清單相同。

1.電路

「按鍵與led」電路圖

2.元器件清單

二、一鍵無鎖控制led

即按下led點亮,放手led熄滅。

1.程式設計(3.12.1)

#include //標頭檔案

sbit led=p1^0;//定義led引腳

sbit key=p3^2;//定義按鍵引腳

void main()

while(1)

if(key==0)//判斷按鍵是否按下

led=0;//led點亮

else

led=1;//led熄滅

2.程式解釋

「if(key==0)」注意判斷按鍵是否按下,要用「==」而不是「=」;如果按鍵按下,led點亮,否則熄滅。

「= =」與「=」有什麼區別,如何正確使用。

用「= =」用於判斷語句,而「=」是賦值的含義,比如「led=0;」將「0」賦值

三、一鍵自鎖控制led

按一下led點亮,再按一下led熄滅。

1.程式設計

#include //51標頭檔案

sbit led=p1^0;

sbit key=p3 ^ 2;

void main(void)

while(1)

if(key == 0)//判斷按鍵狀態

led =~led;//變化燈的狀態

2.程式解釋

「~」,取反的符號,如果原來是高電平,取反後就為低電平,原來是低電平取反後就是高電平。通過判斷按鍵狀態,不斷取反操作而實現led狀態變化。

3.c語言基礎知識

按鍵防抖

當按下按鍵時,由於金屬彈片的作用,不能很快閉合穩定,放開時也不能立刻斷開,閉合穩定前後稱為按鍵抖動,消除抖動可以通過程式或者硬體電路實現,通常通過程式完成。

按鍵抖動

如何用程式來實現呢?從上圖中可以看出,當檢測到按鍵狀態變化,先延時一段時間(一般為10~20ms),繞開不穩定狀態(前沿抖動),然後再檢測一次按鍵狀態,如果與前面檢測的狀態相同,說明已經進入「閉合穩定」。

4.改進程式

#include //標頭檔案

sbit led=p1^0;

sbit key=p3 ^ 2;

void delay(unsigned int a)

unsigned int i,j;

for(i=a;i>0;i--)

for(j=110;j>0;j--);

void main()

while(1)

if(key == 0)//判斷按鍵狀態

delay(20);//延時20ms

if(key == 0)//再次判斷按鍵狀態

led =~led;//變化燈的狀態

while(key == 0);//等待按鍵鬆開

解釋:兩次檢測按鍵狀態,確保按鍵真正按下。按鍵消除抖動程式非常重要,在設計按鍵控制的電路中,一定要加上消除抖動程式。「while(key==0);」該條語句是等待按鍵釋放,檢測到按鍵釋放後,跳出迴圈體。

c語言延時程式 如何在程式中編寫按鍵的控制語句呢?

按鍵即微動開關,本身不能自鎖。今天我們通過三個程式舉例如何在程式中編寫按鍵控制語句。一 三個製作中用到的電路圖以及元器件清單相同。1.電路 按鍵與led 電路圖 2.元器件清單 二 一鍵無鎖控制led 即按下led點亮,放手led熄滅。1.程式設計 3.12.1 include 標頭檔案 sbit ...

利用hook遮蔽程式中的按鍵

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...

基於狀態機的新型按鍵消抖掃瞄程式

一般的按鍵輸入軟體介面程式非常簡單,在程式中一旦檢測到按鍵輸入口為低電平 有時可能為高 便採用軟體延時的方法來進行消抖,然後再次檢測按鍵輸入,如果再次確認為低電平則表示有按鍵按下,轉入執行按鍵處理程式。如果延時後檢測的電平為高電平則放棄本次按鍵檢測,重新開始一次按鍵檢測過程。在簡單的系統中這種方法比...