<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      單片機 鍵盤檢測與應用

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2018-10-08
      鍵盤是單片機應用系統中重要的輸入設備,是實現人機對話的紐帶。鍵盤主要分編碼鍵盤和非編碼鍵盤兩大類,其中鍵的開閉的識別由硬件編碼器來實現的稱為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別鍵的開閉的稱為非編碼鍵盤,單片機系統中常用的鍵盤為非編碼鍵盤。
      鍵盤都是由一個一個小按鍵構成的,按鍵實際上就是一個開關元件,單片機系統中常用的按鍵主要有自鎖按鍵和非自鎖按鍵,分別如圖1、圖2所示。
      圖1 自鎖按鍵                  圖2 非自鎖按鍵
      非編碼鍵盤通常又分為獨立鍵盤和矩陣鍵盤兩大類。所謂獨立鍵盤是指按鍵在與單片機相連時,每一個按鍵都與一個單片機單片機的I/O口相連,如圖3所示;而對于一些應用系統中若需要較多按鍵時,采用獨立鍵盤的連接方法,則比較耗費單片機的I/O口,此時我們一般會用到矩陣鍵盤,如圖4所示,16個按鍵排成4行4列,稱為4X4矩陣鍵盤,如按獨立按鍵法,需要16個I/O口,而按圖4的接法只需要8個I/O.
      圖3 獨立鍵盤
      圖4 4X4矩陣鍵盤
      由于在單片機在應用系統中,更多的會用到獨立鍵盤,加之兩者的檢測原理基本相似,所以這一節里我主要講解獨立鍵盤的檢測原理及程序實現的方法。
      1、 按鍵的檢測原理
      按鍵與單片機的連接如圖5所示,按鍵的一端與地相連,另一端直接與單片機的I/O口相連。此時我們在程序中先給I/O口賦值高電平,然后不斷的檢測I/O口電平的變化。當按鍵沒有被按下時,此I/O口的電平一直為高;當按鍵被按下時,由于按鍵的另一端直接與地相連,相當于低電平,此時我們從I/O口讀出的即為高電平,程序一旦檢測到I/O口由高電平變為低電平時,說明按鍵被按下,此時馬上執行相應的動作,這就是按鍵檢測的原理。
       
      圖5 按鍵與單片機連接圖
      2、 按鍵的抖動與消除
      由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,與單片機I/O口相接的一端的電壓會出現相應的變化,如圖6所示。
      圖6 按鍵按下時電壓的變化情況
      從圖6中我們可以看出,實際的電壓波形在按下松手的時候都會出現一定的抖動,經過實驗知道,這個一時間大概在5-10ms。所在在做單片機與按鍵相關的系統時必須考慮消抖的環節。按鍵消抖的方法有兩種,一個是硬件方法   一個是軟件的方法,而從節約成本和盡量簡化硬件電路的角度出發,一般是采用在程序中加上消抖的方法實現,通常是采用延時的方法。具體的作法是:
      檢測出鍵閉合后執行一個延時程序,產生5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給5ms~10ms的延時,待后沿抖動消失后才能轉入該鍵的處理程序。后面會結合到程序進行講解。
      下面我寫一個簡單的程序,功能為:當一個鍵按下時,讓一個發光二極管發光,我們先看下按鍵模塊在實驗板上的原理圖,如圖7和圖8所示。
      圖7 發光二極管模塊原理圖
      圖8 按鍵模塊原理圖
      例1 按鍵檢測程序
      //功能:當按下S8鍵時,L1燈發光,松手后,L1燈熄滅。相應程序如例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鍵時,數碼管自動加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:單片機,鍵盤,應用,單片機按鍵  
      責任編輯:admin
    4. 上一篇文章:
    5. 下一篇文章: 沒有了
    6. 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 一97日本道伊人久久综合影院| 国产成人+综合亚洲+天堂| 婷婷亚洲综合五月天小说在线| 色综合99久久久无码国产精品| 国产成人久久精品77777综合| 色噜噜狠狠色综合免费视频| 婷婷五月六月激情综合色中文字幕 | 天天躁夜夜躁狂狂躁综合| 伊人久久大香线蕉综合网站| 亚洲综合精品网站| 色久综合网精品一区二区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 久久久久综合网久久| 伊色综合久久之综合久久| 伊人激情久久综合中文字幕| 亚洲综合校园春色| 久久久综合九色合综国产| 一本综合久久国产二区| 国产色丁香久久综合| 亚洲综合色丁香麻豆| 婷婷亚洲综合五月天小说| 国产精品亚洲综合一区| 久久综合亚洲色HEZYO社区| 亚洲狠狠婷婷综合久久久久| 天天久久综合网站| 在线成人综合色一区| 亚洲日韩久久综合中文字幕| 国产婷婷综合丁香亚洲欧洲| 五月丁香综合缴情六月小说| 国产色综合天天综合网| 狠色狠色狠狠色综合久久| 狠狠色丁香久久婷婷综合| 久久久久一级精品亚洲国产成人综合AV区| 久久桃花综合桃花七七网| 色成年激情久久综合| 色噜噜狠狠色综合欧洲| 狠狠色丁香婷婷综合久久片| 久久91精品综合国产首页| 人人狠狠综合久久亚洲婷婷| 色爱无码AV综合区| 色五月丁香五月综合五月4438|