在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

獨立按鍵檢測技術(shù)講解

CHANBAEK ? 來源:嵌入式開發(fā)教程 ? 作者:郭學提 ? 2023-07-12 11:53 ? 次閱讀

獨立按鍵根據(jù)其擊鍵持續(xù)時間可分為短按和長按。在一鍵多功能技術(shù)中,短按和長按所實現(xiàn)的功能是不一樣的。如MP3播放器中的下一曲按扭,短按時執(zhí)行的功能是選擇下一曲,而長按時則是當前歌曲的快進。一般將按鍵按下的時間小于1S以內(nèi)的稱為短按鍵,按鍵按下超過1S的稱為長按。大部分單片機中所講述的按鍵都屬于短按功能。本節(jié)通過按鍵短按功能講述獨立按鍵的檢測及軟件防抖動的基本方法。如圖所示的實驗電路中,其按鍵檢測程序代碼如下:

圖片

sbit  LED0=P1^0;          //定義LED0為P1.0口
sbit  LED1=P1^1;           //定義LED1為P1.1口
sbit  LED2=P1^2;           //定義LED2為P1.2口
sbit  LED3=P1^3;           //定義LED3為P1.3口
sbit  LED4=P1^4;           //定義LED4為P1.4口
void  main(void)  
{
  unsigned char SW;          //定義按鍵檢測中間變量
  while(1)
  {     
    SW=P2&0x1F;          //屏蔽P2口高3位
    switch(SW)
     {
      case 0x1E:  
        LED0=0 ;        //執(zhí)行SW1按下的功能
        break;
      case  0x1D:  
        LED1=0  ;      //執(zhí)行SW2按下的功能
        break;
      case  0x1B:  
        LED2=0  ;      //執(zhí)行SW3按下的功能
        break;
      case  0x17:  
        LED3=0  ;      //執(zhí)行SW4按下的功能
        break;
      case  0x0F:  
        LED4=0  ;      //執(zhí)行SW5按下的功能
        break;
      default:           //沒鍵按下 退出
        break;  
      }
  }
}

獨立按鍵檢測技術(shù)一般是通過檢測與按鍵相連的I/O口線的狀態(tài)。由圖可知當按鍵按下時,與其連接的I/O口線將向單片機系統(tǒng)輸入低(單片機讀取的值是0)。因此通過檢測I/O口是否有低輸入可判斷是否有按鍵按下。上述程序能夠檢測到按鍵按下,檢測不到按鍵釋放的,每次只能檢測到一個按鍵,同一時刻有兩個或以上的按鍵按下時按鍵無效(無按鍵按下)。而且沒有添加軟件去抖動功能,但是它提供了一種按鍵檢測的基本思路。另外讀者還可通過條件判斷語句if來檢測按鍵的狀態(tài)。下面介紹一種具有軟件防抖動功能,能檢測按鍵釋放、閉合的程序。其程序在結(jié)構(gòu)上可分為兩部分:主函數(shù)、防抖動延時函數(shù)。

主函數(shù)通過switch語句檢測出被按下的按鍵,并執(zhí)行被按下按鍵的任務。當檢測到按鍵按下后并沒有馬上執(zhí)行按鍵的任務而是延時10ms躲開按鍵機械抖動(如果此時立即執(zhí)行按鍵功能,可能是誤動作,因為有可能是外界干擾引起瞬間起與按鍵相連的I/O口線為低電平)。然后再檢測按鍵是否還處在閉合狀態(tài),如果仍然處在閉合狀態(tài),則執(zhí)行按鍵的任務。反之則退出。其程序代碼如下:

sbit  SW1=P2^0;             //定義SW1為P2.0口
sbit  SW2=P2^1;             //定義SW1為P2.1口
sbit  SW3=P2^2;             //定義SW1為P2.2口
sbit  SW4=P2^3;             //定義SW1為P2.3口
sbit  SW5=P2^4;             //定義SW1為P2.4口
sbit  LED0=P1^0;          //定義LED0為P1.0口
sbit  LED1=P1^1;           //定義LED1為P1.1口
sbit  LED2=P1^2;           //定義LED2為P1.2口
sbit  LED3=P1^3;           //定義LED3為P1.3口
sbit  LED4=P1^4;           //定義LED4為P1.4口
void  main(void)  
{
  unsigned char SW;
  while(1)
 {     
    SW=P2&0x1F;                //屏蔽P2口高3位
    switch(SW)
    {
      case 0x1E:              //判斷是不是SW1閉合
        delay(10);              //延時去抖動
        if(!SW1)              //再次確認SW1閉合
        {
          LED0=!LED0 ;          //執(zhí)行SW1按下的功能
          while(!SW1);          //等待按鍵釋放
          delay(5);             //延時去抖動
        }            
        break;
      case  0x1D:              //判斷是不是SW2閉合
        delay(10);              //延時去抖動
        if(!SW2)              //再次確認SW2是否閉合
        {
          LED1=!LED1  ;        //執(zhí)行SW2按下的功能
          while(!SW2);           //等待按鍵釋放
          delay(5);             //延時去抖動
        }
        break;
      case  0x1B:               //判斷是不是SW3閉合
        delay(10);             //延時去抖動
        if(!SW3)              //再次確認SW3是否閉合
        {  
          LED2=!LED2  ;        //執(zhí)行SW3按下的功能
          while(!SW3);           //等待按鍵釋放
          delay(5);            //延時去抖動
        }
        break;
      case  0x17:               //判斷是不是SW4閉合
        delay(10);              //延時去抖動
        if(!SW4)              //再次確認SW4是否閉合
        {  
          LED3=!LED3  ;        //執(zhí)行SW4按下的功能
          while(!SW4);           //等待按鍵釋放
          delay(5);            //延時去抖動
        }
        break;
      case  0x0F:               //判斷是不是SW5閉合
        delay(10);             //延時去抖動
        if(!SW5)              //再次確認SW5是否閉合
        {  
          LED4=!LED4  ;        //執(zhí)行SW5按下的功能
          while(!SW5)          //等待按鍵釋放
          delay(5);             //延時去抖動
        }
        break;
      default:                 //沒鍵按下 退出
        break;  
     }
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6043

    文章

    44621

    瀏覽量

    638587
  • Switch
    +關(guān)注

    關(guān)注

    1

    文章

    533

    瀏覽量

    58462
  • 檢測技術(shù)
    +關(guān)注

    關(guān)注

    2

    文章

    357

    瀏覽量

    29156
  • 獨立按鍵
    +關(guān)注

    關(guān)注

    1

    文章

    45

    瀏覽量

    11617
  • 按鍵檢測
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    4852
收藏 人收藏

    評論

    相關(guān)推薦

    深入而全面:FPGA學習之獨立按鍵檢測

    幾乎沒有哪一個系統(tǒng)沒有輸入輸出設備,大到顯示器,小到led燈,輕觸按鍵。作為一個系統(tǒng),要想穩(wěn)定的工作,輸入輸出設備的性能占了很重要的角色。本實驗,小梅哥就通過一個獨立按鍵檢測實驗,來
    發(fā)表于 12-11 11:18 ?1.1w次閱讀

    獨立鍵盤的檢測原理及程序?qū)崿F(xiàn)的方法

    由于在單片機在應用系統(tǒng)中,更多的會用到獨立鍵盤,加之兩者的檢測原理基本相似,所以這一節(jié)里我主要講解獨立鍵盤的檢測原理及程序?qū)崿F(xiàn)的方法。 1、
    的頭像 發(fā)表于 09-11 10:44 ?2698次閱讀
    <b class='flag-5'>獨立</b>鍵盤的<b class='flag-5'>檢測</b>原理及程序?qū)崿F(xiàn)的方法

    ATmega32應用 獨立按鍵檢測

    本帖最后由 suae 于 2011-7-27 16:24 編輯 ATmega32應用 獨立按鍵檢測[code]//顯示相應的鍵值0~4#include#include#define uchar
    發(fā)表于 07-27 16:15

    獨立按鍵按下的時間該怎么檢測?

    獨立按鍵按下時間大于0.2s時執(zhí)行操作,怎么檢測按鍵按下時間呢?
    發(fā)表于 10-08 04:15

    獨立按鍵的使用

    獨立按鍵使用較為簡單,一般需特別注意按鍵的抖動;因為按鍵的開關(guān)都有抖動,而如果在抖動時間內(nèi)檢測按鍵
    發(fā)表于 07-20 08:31

    獨立按鍵編程

    【朱老師課程總結(jié) 侵刪】第一部分、章節(jié)目錄1.9.1.按鍵相關(guān)知識1.9.2.獨立按鍵編程1.9.3.鍵值檢測與顯示1.9.4.按鍵的消抖1
    發(fā)表于 11-22 08:09

    獨立按鍵使用的原理是什么

    ,直白來講,就是能輸出高低電平,也能讀取高低電平。當按鍵按下時,相當于單片機I/O直接接地,讀取出來的電平就是低電平。獨立按鍵使用代碼獨立按鍵
    發(fā)表于 01-17 06:31

    矩陣按鍵按鍵獨立按鍵檢測有什么不同的地方?

    矩陣按鍵按鍵獨立按鍵檢測有什么不同的地方
    發(fā)表于 10-11 08:05

    8位端口檢測8獨立按鍵

    8位端口檢測8獨立按鍵 C51單片機源碼,KEIL源文件,C語言編寫
    發(fā)表于 06-20 16:36 ?17次下載

    獨立按鍵實驗步驟

    獨立按鍵原理即使用
    發(fā)表于 03-16 08:00 ?2次下載

    小梅哥和你一起深入學習FPGA之獨立按鍵檢測(上)

    關(guān)鍵詞:FPGA , 按鍵檢測 幾乎沒有哪一個系統(tǒng)沒有輸入輸出設備,大到顯示器,小到led燈,輕觸按鍵。作為一個系統(tǒng),要想穩(wěn)定的工作,輸入輸出設備的性能占了很重要的角色。本實驗,小梅哥就通過一個
    發(fā)表于 09-26 07:40 ?589次閱讀

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

    按鍵可以說是51單片機項目開發(fā)的一個重要組件了,它是作為51單片機IO口輸入的一種重要方式。我們可以通過按鍵控制單片機執(zhí)行相應的程序,得到我們想要得效果。51單片機的按鍵輸入主要有兩種,一種是
    發(fā)表于 11-12 11:06 ?15次下載
    51單片機<b class='flag-5'>按鍵</b><b class='flag-5'>檢測</b>--<b class='flag-5'>獨立</b><b class='flag-5'>按鍵</b>與矩陣鍵盤

    藍橋杯單片機——獨立按鍵、矩陣按鍵

    按鍵跳線帽需要短接J5口的1和2引腳,按鍵能使用16個(即上圖中S4-S19)。矩陣按鍵的掃描方法可采用行列掃描法,分為兩步:將行的輸出設為低電平(0),檢測列的電平輸入值。將列的輸出
    發(fā)表于 12-31 19:29 ?1次下載
    藍橋杯單片機——<b class='flag-5'>獨立</b><b class='flag-5'>按鍵</b>、矩陣<b class='flag-5'>按鍵</b>

    藍橋杯 單片機 獨立按鍵 的使用

    ,直白來講,就是能輸出高低電平,也能讀取高低電平。當按鍵按下時,相當于單片機I/O直接接地,讀取出來的電平就是低電平。獨立按鍵使用代碼獨立按鍵
    發(fā)表于 01-18 10:44 ?7次下載
    藍橋杯 單片機 <b class='flag-5'>獨立</b><b class='flag-5'>按鍵</b> 的使用

    基于89C51單片機的8位端口檢測8獨立按鍵源程序

    基于89C51單片機的8位端口檢測8獨立按鍵源程序
    發(fā)表于 05-16 10:49 ?2次下載
    主站蜘蛛池模板: 国产精品三级a三级三级午夜 | 久久精品综合网 | 天天做天天爽爽快快 | 亚洲大尺度视频 | 日日干狠狠干 | 欧美性猛交xxxx黑人猛交 | 欧美深夜福利 | 黄大片18满岁水多 | 亚洲加勒比在线 | 天天色狠狠干 | 国产精品9999久久久久仙踪林 | 日本xxxx18vr69| 日本成人小视频 | 亚洲六月丁香六月婷婷花 | 97色在线 | 欧美freesex交 | 成人欧美精品久久久久影院 | 婷婷色在线 | 狠狠轮 | 年下攻高h好涨 | 久久久综合色 | 亚洲成网站 | 国产欧美亚洲精品 | 成人黄网大全在线观看 | 综合五月激情 | 四虎日韩 | 久久亚洲精品玖玖玖玖 | 欧美feer| 福利午夜在线 | 天天色操 | 三级完整在线观看高清视频 | 婷婷丁香花 | 欧美性videofree精品 | 成人观看网站a | 欧美一区二区三区不卡免费观看 | 九色在线看 | 全部免费特黄特色大片农村 | 国产小片| 在线毛片免费 | 久久精品第一页 | 亚洲国产福利 |