由于在單片機(jī)在應(yīng)用系統(tǒng)中,更多的會用到獨(dú)立鍵盤,加之兩者的檢測原理基本相似,所以這一節(jié)里我主要講解獨(dú)立鍵盤的檢測原理及程序?qū)崿F(xiàn)的方法。
1、 按鍵的檢測原理
按鍵與單片機(jī)的連接如圖5所示,按鍵的一端與地相連,另一端直接與單片機(jī)的I/O口相連。此時(shí)我們在程序中先給I/O口賦值高電平,然后不斷的檢測I/O口電平的變化。當(dāng)按鍵沒有被按下時(shí),此I/O口的電平一直為高;當(dāng)按鍵被按下時(shí),由于按鍵的另一端直接與地相連,相當(dāng)于低電平,此時(shí)我們從I/O口讀出的即為高電平,程序一旦檢測到I/O口由高電平變?yōu)榈碗娖綍r(shí),說明按鍵被按下,此時(shí)馬上執(zhí)行相應(yīng)的動(dòng)作,這就是按鍵檢測的原理。
圖5 按鍵與單片機(jī)連接圖
2、 按鍵的抖動(dòng)與消除
由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會馬上穩(wěn)定地接通,在斷開時(shí)也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng),與單片機(jī)I/O口相接的一端的電壓會出現(xiàn)相應(yīng)的變化,如圖6所示。
圖6 按鍵按下時(shí)電壓的變化情況
從圖6中我們可以看出,實(shí)際的電壓波形在按下松手的時(shí)候都會出現(xiàn)一定的抖動(dòng),經(jīng)過實(shí)驗(yàn)知道,這個(gè)一時(shí)間大概在5-10ms。所在在做單片機(jī)與按鍵相關(guān)的系統(tǒng)時(shí)必須考慮消抖的環(huán)節(jié)。按鍵消抖的方法有兩種,一個(gè)是硬件方法 一個(gè)是軟件的方法,而從節(jié)約成本和盡量簡化硬件電路的角度出發(fā),一般是采用在程序中加上消抖的方法實(shí)現(xiàn),通常是采用延時(shí)的方法。具體的作法是:
檢測出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,產(chǎn)生5ms~10ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5ms~10ms的延時(shí),待后沿抖動(dòng)消失后才能轉(zhuǎn)入該鍵的處理程序。后面會結(jié)合到程序進(jìn)行講解。
下面我寫一個(gè)簡單的程序,功能為:當(dāng)一個(gè)鍵按下時(shí),讓一個(gè)發(fā)光二極管發(fā)光,我們先看下按鍵模塊在實(shí)驗(yàn)板上的原理圖,如圖7和圖8所示。
圖7 發(fā)光二極管模塊原理圖
圖8 按鍵模塊原理圖
例1 按鍵檢測程序
//功能:當(dāng)按下S8鍵時(shí),L1燈發(fā)光,松手后,L1燈熄滅。相應(yīng)程序如例1.
#include
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
sbit S1=P3^4;
void main()
{
P3=0xff;
while(1)
{
if(S1==0) //第一次檢測按鍵是否按下
delay(20); //消除按下時(shí)的抖動(dòng)
if(S1==0) //再次確定是否按下狀態(tài)
{
D1=0; //如果是按下狀態(tài),執(zhí)行操作
while(!S1); //檢測是否是按鍵彈起
delay(20); //消除松開時(shí)的抖動(dòng)
}
else
D1=1;
}
}
-
模塊
+關(guān)注
關(guān)注
7文章
2783瀏覽量
49583 -
電平
+關(guān)注
關(guān)注
5文章
367瀏覽量
40413 -
鍵盤
+關(guān)注
關(guān)注
4文章
865瀏覽量
40428 -
硬件
+關(guān)注
關(guān)注
11文章
3461瀏覽量
67195 -
程序
+關(guān)注
關(guān)注
117文章
3824瀏覽量
82419
發(fā)布評論請先 登錄
獨(dú)立鍵盤檢測
用獨(dú)立鍵盤實(shí)現(xiàn)流水燈功能
壓縮鍵盤的設(shè)計(jì)與實(shí)現(xiàn)
使用單片機(jī)C語言實(shí)現(xiàn)獨(dú)立按鍵檢測與矩陣鍵盤操作的資料和程序

使用單片機(jī)利用獨(dú)立鍵盤彈琴的程序免費(fèi)下載

獨(dú)立鍵盤的檢測原理及程序實(shí)現(xiàn)方法
使用51單片機(jī)獨(dú)立鍵盤控制輸出脈沖信號的程序免費(fèi)下載

如何使用獨(dú)立子空間分析實(shí)現(xiàn)不良視頻的檢測方法

51單片機(jī)按鍵檢測--獨(dú)立按鍵與矩陣鍵盤

51單片機(jī)小白零基礎(chǔ)教程——獨(dú)立鍵盤檢測原理以及實(shí)際應(yīng)用

學(xué)習(xí)筆記之51單片機(jī)鍵盤篇(非編碼鍵盤與編碼鍵盤、非編碼鍵盤的掃描方式、獨(dú)立鍵盤、矩陣鍵盤)

評論