衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何實現基于單片機的鍵盤檢測

CHANBAEK ? 來源:郎哥編程課堂 ? 作者:郎宏林 ? 2023-10-31 14:39 ? 次閱讀

鍵盤是單片機與用戶交互設備之一,用戶通過鍵盤輸入數據或命令到單片機。最簡單的鍵盤僅有一個按鍵,復雜一些的鍵盤有多個按鍵。在單片機的外圍電路中,通常用到的按鍵都是機械彈性開關,當用戶按下按鍵時,按鍵閉合,用戶松開按鍵后,按鍵斷開,單片機如何檢測到按鍵被按下或釋放呢?

按鍵一般與單片機的I/O口連接,按鍵的一端連接I/O口,另一端接地,與按鍵連接的I/O端口會被賦值為高電平,單片機鍵盤檢測程序會持續檢測該I/O端口的電平,若檢測到該端口由高電平變為低電平,說明與該端口連接的按鍵被按下,因為按鍵閉合后,相當于I/O端口通過按鍵與地直接連接,導致該I/O端口變為低電平。

按鍵的連接非常簡單,如下圖所示,按鍵的一端與任一I/O端口相連,另一端與地連接。

圖片

機械按鍵被按下后,會發生抖動現象,導致電平在按下階段和釋放階段不會立即變為低電平,而是呈現鋸齒狀。下圖是按鍵按下時的電壓變化。

圖片

機械按鍵被按下或釋放后,抖動時間大約為5~10ms,此時電壓不穩定,呈鋸齒形,檢測程序無法檢測按鍵是否被按下,因此編寫按鍵檢測程序時,需要進行抖動延時處理。按鍵檢測流程如下圖所示:

圖片

檢測程序持續檢測與鍵盤連接的I/O端口,當檢測到I/O端口電壓出現波動時,延時10ms,然后再次檢測I/O端口,若I/O端口為低電平,說明按鍵被按下,同時還要檢測按鍵是否被釋放,檢測按鍵是否被釋放時,就不需要對抖動進行延遲處理了。

按鍵檢測應用案例:應用兩個按鍵分別控制發光二極管D1和D2的通斷,按鍵1與單片機P2.0連接,按鍵2與P2.1端口連接,D1和D2分別與單片機P1.0、P1.1口連接,按下按鍵1,D1狀態反轉,按下按鍵2,D2狀態反轉。

下圖是按鍵檢測案例電路設計圖:

圖片

在P2.0和P2.1端口分別接入兩個按鍵,按鍵的另一端接地。D1和D2發光二極管分別連接到單片機的P1.0和P1.1端口。

單片機內運行的完整C程序如下:

#include < reg51.h >
#include < stdio.h >
sbit  key_one = P2^0;
sbit  key_two = P2^1;
sbit  led_one = P1^0;
sbit  led_two = P1^1;


void delay(unsigned int millisecond)
{
       unsigned int i,j;
       for(i=millisecond;i >0;i--)
              for(j=120;j >0;j--);
}


void key_scan()
{
         if( key_one == 0 )
             {
                       delay(10);
                            if( key_one == 0 )
                            {
                                   while(!key_one);
                                   led_one = !led_one;
                            }
              }              
         if( key_two == 0 )
              {
                       delay(10);
                            if( key_two == 0 )
                            {
                                   while(!key_two);
                                   led_two = !led_two;
                            }
              }                     


 }


void main(void)
{ 
   unsigned int i;
        led_one = 1;
        led_two = 1;
        while(1)
        {
               key_scan();
        }
 }

位變量key_one和key_two為單片機P2.0端口和P2.1端口,用于檢測按鍵狀態。位變量led_one和led_two為單片機P1.0和P1.1端口,用于控制D1和D2的狀態。函數delay()是延遲函數,參數millisecond用于設置延遲的毫秒數。

key_scan是按鍵檢測函數,分別檢測P2.0端口和P2.1端口電平變化,若檢測到端口電平為低電平時,延時10ms后,若該端口依然是低電平,則確認與該端口連接的按鍵被按下,然后使用while循環等待按鍵的釋放,循環條件是端口變換為高電平,最后取反led_one或led_two的電平。

main()函數主要完成按鍵的循環檢測,具體實現方法是在函數內部實現一個無限循環結構,在循環結構內調用key_scan()函數。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44622

    瀏覽量

    638518
  • 鍵盤
    +關注

    關注

    4

    文章

    859

    瀏覽量

    39866
  • 端口
    +關注

    關注

    4

    文章

    990

    瀏覽量

    32206
  • 鍵盤檢測
    +關注

    關注

    0

    文章

    4

    瀏覽量

    5808
收藏 人收藏

    評論

    相關推薦

    基于單片機的矩陣鍵盤檢測案例

    /O端口資源,導致單片機與其它外部設備無法連接。在這種情況下,可以使用矩陣鍵盤實現多個按鍵與單片機的連接,而且不浪費單片機的I/O端口資源
    的頭像 發表于 10-31 14:35 ?1358次閱讀
    基于<b class='flag-5'>單片機</b>的矩陣<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>案例

    單片機鍵盤掃描之狀態實現

    單片機鍵盤掃描之狀態實現:在編寫單片機程序的過程中,鍵盤作為一種人機接口的
    發表于 09-26 10:37 ?205次下載

    紅外遙控鍵盤單片機接口實現技術

    本文介紹了一種利用電視遙控器作為單片機輸入鍵盤的接口原理和方法,并討論了如何使用單片機實現遙控指令的解碼,實踐證明這種 接口方式可以節省
    發表于 03-28 15:35 ?5次下載

    基于單片機鍵盤接口的設計與實現

    文章詳細介紹了基于單片機鍵盤接口的設計與實現。實際使用結果表明,該鍵盤接口電路設計簡單,鍵盤處理程序運行穩定可靠,具有推廣價值。
    發表于 03-28 17:35 ?9次下載

    單片機鍵盤接口技術

    鍵盤單片機不可缺少的輸入設備,是實現人機對話的紐帶。鍵盤按結構形式可分為非編碼鍵盤和編碼鍵盤,
    發表于 03-29 10:55 ?8次下載

    使用51單片機實現矩陣鍵盤的代碼免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現矩陣鍵盤的代碼免費下載。
    發表于 08-28 17:29 ?5次下載
    使用51<b class='flag-5'>單片機</b><b class='flag-5'>實現</b>矩陣<b class='flag-5'>鍵盤</b>的代碼免費下載

    使用51單片機實現矩陣鍵盤的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現矩陣鍵盤的程序免費下載。
    發表于 07-18 17:38 ?3次下載
    使用51<b class='flag-5'>單片機</b><b class='flag-5'>實現</b>矩陣<b class='flag-5'>鍵盤</b>的程序免費下載

    使用單片機實現鍵盤掃面的程序免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現鍵盤掃面的程序免費下載。
    發表于 06-05 17:35 ?2次下載
    使用<b class='flag-5'>單片機</b><b class='flag-5'>實現</b><b class='flag-5'>鍵盤</b>掃面的程序免費下載

    單片機鍵盤檢測與應用

    非編碼鍵盤通常又分為獨立鍵盤和矩陣鍵盤兩大類。所謂獨立鍵盤是指按鍵在與單片機相連時,每一個按鍵都與一個
    的頭像 發表于 09-18 16:34 ?5411次閱讀

    使用單片機實現LCD矩陣鍵盤的程序免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現LCD矩陣鍵盤的程序免費下載。
    發表于 04-02 11:39 ?19次下載

    51單片機鍵盤檢測原理

    一、獨立鍵盤檢測1、按鍵的檢測原理單片機的I/O口既可以作為輸出也可以作為輸入使用,檢測按鍵時用的是輸入功能。把按鍵的一端接地,另一端與
    發表于 11-10 18:46 ?39次下載
    51<b class='flag-5'>單片機</b>的<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>原理

    51單片機按鍵檢測--獨立按鍵與矩陣鍵盤

    按鍵,每個按鍵對應一個IO口,通過循環或者中斷去檢測,這種方法常用于按鍵個數較少得時候。如果按鍵的個數較多,每個按鍵都分配一個IO口,會占用大量的資源,所以就有了矩陣鍵盤。矩陣鍵盤是通過單片機
    發表于 11-12 11:06 ?15次下載
    51<b class='flag-5'>單片機</b>按鍵<b class='flag-5'>檢測</b>--獨立按鍵與矩陣<b class='flag-5'>鍵盤</b>

    PIC單片機矩陣鍵盤檢測原理及實現

    PIC單片機矩陣鍵盤檢測原理及實現
    發表于 11-16 11:51 ?2次下載
    PIC<b class='flag-5'>單片機</b>矩陣<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>原理及<b class='flag-5'>實現</b>

    PIC單片機矩陣鍵盤檢測原理及實現

    PIC單片機矩陣鍵盤檢測原理及實現
    發表于 11-16 12:51 ?7次下載
    PIC<b class='flag-5'>單片機</b>矩陣<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>原理及<b class='flag-5'>實現</b>

    單片機-鍵盤檢測

    彈起斷開按鍵與單片機的連接方式如下圖所示 :從上圖可以看出,理想波形與實際波形之間是有區別的,實際波形再按下和釋放的瞬間都有抖動的現象,抖動時間的長短和按鍵的機械特性有關,一般...
    發表于 11-24 11:06 ?12次下載
    <b class='flag-5'>單片機</b>-<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>
    百家乐官网如何破解| 百家乐官网怎么赢博彩正网| 百家乐数据程序| 在线赌博平台| 百家乐优博u2bet| 百家乐赌场群| 阳高县| 百家乐龙虎扑克| 大发百家乐官网游戏| 百家乐园天将| 大发888登录下载| 24山向吉凶山运| 百家乐官网是如何骗人的| 百家乐是娱乐场最不公平的游戏| 德州扑克 盲注| 百家乐现金网平台排名| 安桌百家乐官网游戏百家乐官网 | 高级百家乐官网出千工具| 大发888 备用6222.com| 百家乐生活馆| 涂山百家乐官网的玩法技巧和规则| 顶级赌场手机版官方| 百家乐防伪筹码套装| 百家乐官网网开服表| 百家乐官网棋牌交| 百家乐官网游戏发展| 申城棋牌网| 大发888娱乐亚洲| 百家乐是娱乐场最不公平的游戏 | 娱乐城注册| 威尼斯人娱乐网| 闲和庄百家乐的玩法技巧和规则 | 大发888真钱注册 | 百家乐官网怎么玩啊| 太阳城代理| 百家乐太阳城| 太阳城丝巾| 百家乐线路图分析| 赌神网百家乐的玩法技巧和规则| 迪威百家乐官网赌场娱乐网规则 | 百家乐如何赚洗码|