找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2297|回復(fù): 6
收起左側(cè)

MCU C語言程序檢測(cè)按鍵的幾種用法

[復(fù)制鏈接]
ID:880332 發(fā)表于 2023-6-12 10:06 | 顯示全部樓層 |閱讀模式
按鍵,有多種用法,
1. 獨(dú)立按鍵:按一個(gè),對(duì)應(yīng)一個(gè)動(dòng)作,可以用掃描,也可用 中斷方式;2. 矩陣按鍵:常用的 4*4 = 16, 3*8 = 24,... 主要在于將小數(shù)按鍵進(jìn)行組合,達(dá)到 以少生多 的控制效果,節(jié)約 IO 控制端口;
3. 長按 短按:這個(gè),是目前較為常用的一種思路,一個(gè)按鍵形成 多個(gè) 用途:給出MCU C語言代碼框架,方便大家使用;


void Key()
{
      uchar count_x;                   // 定義 臨時(shí) 變量,用于統(tǒng)計(jì)按鍵的 計(jì)時(shí)長度;
     if( !K1 )                               // 按鍵 按下;
    {
         Delay_Nms(30);               // 防抖;
         if(!K1)                           // 確定 按鍵 真實(shí) 按下;
         {
               count_x = 0;           // 記數(shù)清 0;
              do{     
                   count_x ++;        // 記錄 長按 短按;
                  Delay_Nms(10);
                   if( count_x >= 20) break;    // 記到 20就封頂;
               } while(!K1);          // 設(shè)計(jì)到 1000ms ,就松手,就退出 計(jì)數(shù);

      // 長按 短按 的 時(shí)間分界點(diǎn):(0----20---30)
      if(count_x <= 20)  // 短按;   
       {
          ;         //短按對(duì)應(yīng) 程序體1;
       }
       else      // 長按;
      {
           ;        //長按對(duì)應(yīng) 程序體2;
        }
      }
    }
}

4. 計(jì)數(shù)按鍵:這個(gè),通常會(huì)結(jié)合定時(shí)器使用,按下去后,在一個(gè)指時(shí)時(shí)間類,計(jì)下按下按鍵的次數(shù),當(dāng)時(shí)間停止后,對(duì)應(yīng)按鍵次數(shù),進(jìn)入對(duì)應(yīng)的 指定模塊運(yùn)行;

不知,大家還有什么 常用的 按鍵 知識(shí),可以一起分享;

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:641483 發(fā)表于 2023-6-16 11:16 | 顯示全部樓層
謝謝樓主分享 已收藏!這樣長短安鍵 確實(shí)方便靈活
回復(fù)

使用道具 舉報(bào)

ID:947230 發(fā)表于 2023-6-16 12:00 | 顯示全部樓層
不能用中斷計(jì)時(shí)來嗎?
回復(fù)

使用道具 舉報(bào)

ID:140489 發(fā)表于 2023-6-16 13:44 | 顯示全部樓層
按鍵消抖不要用延時(shí),這種程序在開發(fā)板上玩玩可以,不要用在實(shí)際項(xiàng)目中
回復(fù)

使用道具 舉報(bào)

ID:1064915 發(fā)表于 2023-6-16 14:26 | 顯示全部樓層
設(shè)計(jì)到1000ms ,就松手,就退出 計(jì)數(shù),1000ms如何計(jì)算的?
回復(fù)

使用道具 舉報(bào)

ID:432633 發(fā)表于 2023-10-20 16:21 | 顯示全部樓層
不用說delay  30ms了,就是10ms 實(shí)際產(chǎn)品中都不能使用,你還有while等按鍵松開。 不實(shí)用的代碼。          時(shí)基和無阻塞 是最基本的入門技能,用delay這么長時(shí)間的,入門都還沒入門  
回復(fù)

使用道具 舉報(bào)

ID:46750 發(fā)表于 2023-10-21 19:55 | 顯示全部樓層
6樓說得對(duì),建議樓主不要展示這種示例
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表