電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機 >> 正文

單片機 鍵盤檢測與應(yīng)用

作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2018/10/8
鍵盤是單片機應(yīng)用系統(tǒng)中重要的輸入設(shè)備,是實現(xiàn)人機對話的紐帶。鍵盤主要分編碼鍵盤和非編碼鍵盤兩大類,其中鍵的開閉的識別由硬件編碼器來實現(xiàn)的稱為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別鍵的開閉的稱為非編碼鍵盤,單片機系統(tǒng)中常用的鍵盤為非編碼鍵盤。
鍵盤都是由一個一個小按鍵構(gòu)成的,按鍵實際上就是一個開關(guān)元件,單片機系統(tǒng)中常用的按鍵主要有自鎖按鍵和非自鎖按鍵,分別如圖1、圖2所示。
圖1 自鎖按鍵                  圖2 非自鎖按鍵
非編碼鍵盤通常又分為獨立鍵盤和矩陣鍵盤兩大類。所謂獨立鍵盤是指按鍵在與單片機相連時,每一個按鍵都與一個單片機單片機的I/O口相連,如圖3所示;而對于一些應(yīng)用系統(tǒng)中若需要較多按鍵時,采用獨立鍵盤的連接方法,則比較耗費單片機的I/O口,此時我們一般會用到矩陣鍵盤,如圖4所示,16個按鍵排成4行4列,稱為4X4矩陣鍵盤,如按獨立按鍵法,需要16個I/O口,而按圖4的接法只需要8個I/O.
圖3 獨立鍵盤
圖4 4X4矩陣鍵盤
由于在單片機在應(yīng)用系統(tǒng)中,更多的會用到獨立鍵盤,加之兩者的檢測原理基本相似,所以這一節(jié)里我主要講解獨立鍵盤的檢測原理及程序?qū)崿F(xiàn)的方法。
1、 按鍵的檢測原理
按鍵與單片機的連接如圖5所示,按鍵的一端與地相連,另一端直接與單片機的I/O口相連。此時我們在程序中先給I/O口賦值高電平,然后不斷的檢測I/O口電平的變化。當按鍵沒有被按下時,此I/O口的電平一直為高;當按鍵被按下時,由于按鍵的另一端直接與地相連,相當于低電平,此時我們從I/O口讀出的即為高電平,程序一旦檢測到I/O口由高電平變?yōu)榈碗娖綍r,說明按鍵被按下,此時馬上執(zhí)行相應(yīng)的動作,這就是按鍵檢測的原理。
 
圖5 按鍵與單片機連接圖
2、 按鍵的抖動與消除
由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,與單片機I/O口相接的一端的電壓會出現(xiàn)相應(yīng)的變化,如圖6所示。
圖6 按鍵按下時電壓的變化情況
從圖6中我們可以看出,實際的電壓波形在按下松手的時候都會出現(xiàn)一定的抖動,經(jīng)過實驗知道,這個一時間大概在5-10ms。所在在做單片機與按鍵相關(guān)的系統(tǒng)時必須考慮消抖的環(huán)節(jié)。按鍵消抖的方法有兩種,一個是硬件方法   一個是軟件的方法,而從節(jié)約成本和盡量簡化硬件電路的角度出發(fā),一般是采用在程序中加上消抖的方法實現(xiàn),通常是采用延時的方法。具體的作法是:
檢測出鍵閉合后執(zhí)行一個延時程序,產(chǎn)生5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給5ms~10ms的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序。后面會結(jié)合到程序進行講解。
下面我寫一個簡單的程序,功能為:當一個鍵按下時,讓一個發(fā)光二極管發(fā)光,我們先看下按鍵模塊在實驗板上的原理圖,如圖7和圖8所示。
圖7 發(fā)光二極管模塊原理圖
圖8 按鍵模塊原理圖
例1 按鍵檢測程序
//功能:當按下S8鍵時,L1燈發(fā)光,松手后,L1燈熄滅。相應(yīng)程序如例1.
#include <reg52.h>
#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);//消除按下時的抖動
if(S1==0)
{
                     D1=0;        
while(!S1);//松手檢測
              delay(20);//消除松手時的抖動
}
              else
                     D1=1;           
       }
}
 
 
例2 按鍵檢測程序
//功能:當每按下S8鍵時,數(shù)碼管自動加1,當加到F時又從零開始。
#include<reg52.h>
 
#define uint unsigned int
#define uchar unsigned char
 
sbit duan=P2^6;
sbit wei=P2^7;
sbit S1=P3^4;
uchar temp;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
 
void delay(uint z )
{
       uint x ,y;
       for(x=z;x>0;x--)
              for(y=110;y>0;y--);
}
void main()
{
       P3=0xff;
       wei=1;
       P0=0xfe;
       wei=0;
       temp=0;
       while(1)
       {
              if(S1==0)
              {
                     delay(20);//消除按下時的抖動
                     if(S1==0)//
                     {
                            temp++;
                            if(temp==16)temp=0;
                     }
                     while(!S1);//松手檢測,防止temp一次多加
                     delay(20);//消除松手時的抖動
                     while(!S1);
              }    
           duan=1;
              P0=table[temp];
              duan=0;
       }
}
Tags:單片機,鍵盤,應(yīng)用,單片機按鍵  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
国产孕妇孕交一级毛片| 最新国产乱人伦偷精品免费网站| 你懂的网址免费国产| 神秘电影欧美草草影院麻豆第一页 | 国产一级做a爱免费视频| 亚拍精品一区二区三区| 色综合91久久精品中文字幕| 最新国产乱人伦偷精品免费网站 | 欧美日韩小视频| 天堂а√在线中文在线| 99热精品在线免费观看| 男人天堂综合网| 夜夜精品无码一区二区三区| 亚洲精品综合久久| 8090在线观看免费观看| 欧洲mv日韩mv国产| 国产在线19禁免费观看国产| 乱人伦人妻中文字幕在线入口| 美美女高清毛片视频免费观看| 日本一本一区二区| 男人天堂资源站| 亚洲免费人成视频观看| 国产乱人免费视频| 久久久亚洲av波多野结衣| 国产乱子伦真实china| 久久亚洲国产精品五月天婷| 美女扒开屁股让男人桶爽免费| 奇米影视中文字幕| 亚洲欧美日韩网站| 啦啦啦中文在线观看| 国产精品99久久久久久董美香| 无翼乌r18无遮掩全彩肉本子| 国产成人精品999在线观看| 九九精品99久久久香蕉| 美女极度色诱视频国产| 婷婷六月天激情| 久久精品免费一区二区| 美女久久久久久| 在线jyzzjyzz免费视频| 亚洲av日韩aⅴ无码色老头| 精品无码国产一区二区三区av |