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

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

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

3天內不再提示

獨立按鍵檢測技術講解

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

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

圖片

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 ;        //執行SW1按下的功能
        break;
      case  0x1D:  
        LED1=0  ;      //執行SW2按下的功能
        break;
      case  0x1B:  
        LED2=0  ;      //執行SW3按下的功能
        break;
      case  0x17:  
        LED3=0  ;      //執行SW4按下的功能
        break;
      case  0x0F:  
        LED4=0  ;      //執行SW5按下的功能
        break;
      default:           //沒鍵按下 退出
        break;  
      }
  }
}

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

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

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 ;          //執行SW1按下的功能
          while(!SW1);          //等待按鍵釋放
          delay(5);             //延時去抖動
        }            
        break;
      case  0x1D:              //判斷是不是SW2閉合
        delay(10);              //延時去抖動
        if(!SW2)              //再次確認SW2是否閉合
        {
          LED1=!LED1  ;        //執行SW2按下的功能
          while(!SW2);           //等待按鍵釋放
          delay(5);             //延時去抖動
        }
        break;
      case  0x1B:               //判斷是不是SW3閉合
        delay(10);             //延時去抖動
        if(!SW3)              //再次確認SW3是否閉合
        {  
          LED2=!LED2  ;        //執行SW3按下的功能
          while(!SW3);           //等待按鍵釋放
          delay(5);            //延時去抖動
        }
        break;
      case  0x17:               //判斷是不是SW4閉合
        delay(10);              //延時去抖動
        if(!SW4)              //再次確認SW4是否閉合
        {  
          LED3=!LED3  ;        //執行SW4按下的功能
          while(!SW4);           //等待按鍵釋放
          delay(5);            //延時去抖動
        }
        break;
      case  0x0F:               //判斷是不是SW5閉合
        delay(10);             //延時去抖動
        if(!SW5)              //再次確認SW5是否閉合
        {  
          LED4=!LED4  ;        //執行SW5按下的功能
          while(!SW5)          //等待按鍵釋放
          delay(5);             //延時去抖動
        }
        break;
      default:                 //沒鍵按下 退出
        break;  
     }
  }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6065

    文章

    44940

    瀏覽量

    647961
  • Switch
    +關注

    關注

    1

    文章

    535

    瀏覽量

    59365
  • 檢測技術
    +關注

    關注

    2

    文章

    360

    瀏覽量

    29516
  • 獨立按鍵
    +關注

    關注

    1

    文章

    45

    瀏覽量

    11799
  • 按鍵檢測
    +關注

    關注

    0

    文章

    25

    瀏覽量

    4915
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    獨立鍵盤的檢測原理及程序實現的方法

    由于在單片機在應用系統中,更多的會用到獨立鍵盤,加之兩者的檢測原理基本相似,所以這一節里我主要講解獨立鍵盤的檢測原理及程序實現的方法。 1、
    的頭像 發表于 09-11 10:44 ?3343次閱讀
    <b class='flag-5'>獨立</b>鍵盤的<b class='flag-5'>檢測</b>原理及程序實現的方法

    ATmega32應用 獨立按鍵檢測

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

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

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

    獨立按鍵的使用

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

    獨立按鍵編程

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

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

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

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

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

    8位端口檢測8獨立按鍵

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

    獨立按鍵實驗步驟

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

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

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

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

    按鍵可以說是51單片機項目開發的一個重要組件了,它是作為51單片機IO口輸入的一種重要方式。我們可以通過按鍵控制單片機執行相應的程序,得到我們想要得效果。51單片機的按鍵輸入主要有兩種,一種是
    發表于 11-12 11:06 ?17次下載
    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),檢測列的電平輸入值。將列的輸出
    發表于 12-31 19:29 ?1次下載
    藍橋杯單片機——<b class='flag-5'>獨立</b><b class='flag-5'>按鍵</b>、矩陣<b class='flag-5'>按鍵</b>

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

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

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

    基于89C51單片機的8位端口檢測8獨立按鍵源程序
    發表于 05-16 10:49 ?2次下載
    主站蜘蛛池模板: 精品免费久久久久久成人影院 | 亚洲高清中文字幕一区二区三区 | 黄色永久网站 | 99热最新在线观看 | 天天干天天综合 | 又粗又大的机巴好爽欧美 | 色婷婷综合久久久 | 欧美黄色片网站 | 午夜小视频免费 | 一日本道加勒比高清一二三 | 色综合中文字幕 | 青草网址| 理论在线看| 永久免费看毛片 | 性欧美精品xxxx | 精品视频一二三区 | 国产午夜免费视频片夜色 | 被男同桌摸内裤好爽视频 | 亚欧成人乱码一区二区 | 7777在线 | 一级毛片免费全部播放 | 亚洲国产精品综合久久网络 | 福利在线看片 | 午夜高清视频 | 免费福利午夜影视网 | 国产精品欧美激情在线播放 | 手机免费黄色网址 | 亚洲一卡2卡3卡4卡5卡乱码 | 色视频免费 | 国模私拍在线 | 黄 色 录像成 人播放免费 | 业余性自由色xxxx视频 | 色狠狠一区二区 | 国产精品美女免费视频大全 | 亚洲欧美经典 | 看黄色一级毛片 | 国产高清一级在线观看 | 五月天狠狠 | 亚洲一二三四区 | 人人干狠狠干 | 五月婷婷丁香花 |