按鍵即微動開關,本身不能自鎖。今天我們通過三個程式舉例如何在程式中編寫按鍵控制語句。
一、三個製作中用到的電路圖以及元器件清單相同。
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...
基於狀態機的新型按鍵消抖掃瞄程式
一般的按鍵輸入軟體介面程式非常簡單,在程式中一旦檢測到按鍵輸入口為低電平 有時可能為高 便採用軟體延時的方法來進行消抖,然後再次檢測按鍵輸入,如果再次確認為低電平則表示有按鍵按下,轉入執行按鍵處理程式。如果延時後檢測的電平為高電平則放棄本次按鍵檢測,重新開始一次按鍵檢測過程。在簡單的系統中這種方法比...