RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實(shí)現(xiàn)基于單片機(jī)的鍵盤檢測

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

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

按鍵一般與單片機(jī)的I/O口連接,按鍵的一端連接I/O口,另一端接地,與按鍵連接的I/O端口會(huì)被賦值為高電平,單片機(jī)鍵盤檢測程序會(huì)持續(xù)檢測該I/O端口的電平,若檢測到該端口由高電平變?yōu)榈碗娖?,說明與該端口連接的按鍵被按下,因?yàn)榘存I閉合后,相當(dāng)于I/O端口通過按鍵與地直接連接,導(dǎo)致該I/O端口變?yōu)榈碗娖健?/p>

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

圖片

機(jī)械按鍵被按下后,會(huì)發(fā)生抖動(dòng)現(xiàn)象,導(dǎo)致電平在按下階段和釋放階段不會(huì)立即變?yōu)榈碗娖?,而是呈現(xiàn)鋸齒狀。下圖是按鍵按下時(shí)的電壓變化。

圖片

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

圖片

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

按鍵檢測應(yīng)用案例:應(yīng)用兩個(gè)按鍵分別控制發(fā)光二極管D1和D2的通斷,按鍵1與單片機(jī)P2.0連接,按鍵2與P2.1端口連接,D1和D2分別與單片機(jī)P1.0、P1.1口連接,按下按鍵1,D1狀態(tài)反轉(zhuǎn),按下按鍵2,D2狀態(tài)反轉(zhuǎn)。

下圖是按鍵檢測案例電路設(shè)計(jì)圖:

圖片

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

單片機(jī)內(nèi)運(yùn)行的完整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為單片機(jī)P2.0端口和P2.1端口,用于檢測按鍵狀態(tài)。位變量led_one和led_two為單片機(jī)P1.0和P1.1端口,用于控制D1和D2的狀態(tài)。函數(shù)delay()是延遲函數(shù),參數(shù)millisecond用于設(shè)置延遲的毫秒數(shù)。

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

main()函數(shù)主要完成按鍵的循環(huán)檢測,具體實(shí)現(xiàn)方法是在函數(shù)內(nèi)部實(shí)現(xiàn)一個(gè)無限循環(huán)結(jié)構(gòu),在循環(huán)結(jié)構(gòu)內(nèi)調(diào)用key_scan()函數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634594
  • 鍵盤
    +關(guān)注

    關(guān)注

    4

    文章

    859

    瀏覽量

    39647
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    963

    瀏覽量

    32051
  • 鍵盤檢測
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    5792
收藏 人收藏

    評論

    相關(guān)推薦

    基于單片機(jī)的矩陣鍵盤檢測案例

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

    單片機(jī)鍵盤掃描之狀態(tài)機(jī)實(shí)現(xiàn)

    單片機(jī)鍵盤掃描之狀態(tài)機(jī)實(shí)現(xiàn):在編寫單片機(jī)程序的過程中,鍵盤作為一種人機(jī)接口的
    發(fā)表于 09-26 10:37 ?205次下載

    紅外遙控鍵盤單片機(jī)接口實(shí)現(xiàn)技術(shù)

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

    基于單片機(jī)鍵盤接口的設(shè)計(jì)與實(shí)現(xiàn)

    文章詳細(xì)介紹了基于單片機(jī)鍵盤接口的設(shè)計(jì)與實(shí)現(xiàn)。實(shí)際使用結(jié)果表明,該鍵盤接口電路設(shè)計(jì)簡單,鍵盤處理程序運(yùn)行穩(wěn)定可靠,具有推廣價(jià)值。
    發(fā)表于 03-28 17:35 ?9次下載

    單片機(jī)鍵盤接口技術(shù)

    鍵盤單片機(jī)不可缺少的輸入設(shè)備,是實(shí)現(xiàn)人機(jī)對話的紐帶。鍵盤按結(jié)構(gòu)形式可分為非編碼鍵盤和編碼鍵盤,
    發(fā)表于 03-29 10:55 ?8次下載

    使用51單片機(jī)實(shí)現(xiàn)矩陣鍵盤的代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)矩陣鍵盤的代碼免費(fèi)下載。
    發(fā)表于 08-28 17:29 ?5次下載
    使用51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b>矩陣<b class='flag-5'>鍵盤</b>的代碼免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)矩陣鍵盤的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)矩陣鍵盤的程序免費(fèi)下載。
    發(fā)表于 07-18 17:38 ?3次下載
    使用51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b>矩陣<b class='flag-5'>鍵盤</b>的程序免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)鍵盤掃面的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)鍵盤掃面的程序免費(fèi)下載。
    發(fā)表于 06-05 17:35 ?2次下載
    使用<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>鍵盤</b>掃面的程序免費(fèi)下載

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

    非編碼鍵盤通常又分為獨(dú)立鍵盤和矩陣鍵盤兩大類。所謂獨(dú)立鍵盤是指按鍵在與單片機(jī)相連時(shí),每一個(gè)按鍵都與一個(gè)
    的頭像 發(fā)表于 09-18 16:34 ?5343次閱讀

    使用單片機(jī)實(shí)現(xiàn)LCD矩陣鍵盤的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)LCD矩陣鍵盤的程序免費(fèi)下載。
    發(fā)表于 04-02 11:39 ?19次下載

    51單片機(jī)鍵盤檢測原理

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

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

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

    PIC單片機(jī)矩陣鍵盤檢測原理及實(shí)現(xiàn)

    PIC單片機(jī)矩陣鍵盤檢測原理及實(shí)現(xiàn)
    發(fā)表于 11-16 11:51 ?2次下載
    PIC<b class='flag-5'>單片機(jī)</b>矩陣<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>原理及<b class='flag-5'>實(shí)現(xiàn)</b>

    PIC單片機(jī)矩陣鍵盤檢測原理及實(shí)現(xiàn)

    PIC單片機(jī)矩陣鍵盤檢測原理及實(shí)現(xiàn)
    發(fā)表于 11-16 12:51 ?7次下載
    PIC<b class='flag-5'>單片機(jī)</b>矩陣<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>原理及<b class='flag-5'>實(shí)現(xiàn)</b>

    單片機(jī)-鍵盤檢測

    彈起斷開按鍵與單片機(jī)的連接方式如下圖所示 :從上圖可以看出,理想波形與實(shí)際波形之間是有區(qū)別的,實(shí)際波形再按下和釋放的瞬間都有抖動(dòng)的現(xiàn)象,抖動(dòng)時(shí)間的長短和按鍵的機(jī)械特性有關(guān),一般...
    發(fā)表于 11-24 11:06 ?12次下載
    <b class='flag-5'>單片機(jī)</b>-<b class='flag-5'>鍵盤</b><b class='flag-5'>檢測</b>
    RM新时代网站-首页