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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2199|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

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

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


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

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:641483 發(fā)表于 2023-6-16 11:16 | 只看該作者
謝謝樓主分享 已收藏!這樣長(zhǎng)短安鍵 確實(shí)方便靈活
回復(fù)

使用道具 舉報(bào)

板凳
ID:947230 發(fā)表于 2023-6-16 12:00 | 只看該作者
不能用中斷計(jì)時(shí)來(lái)嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:140489 發(fā)表于 2023-6-16 13:44 | 只看該作者
按鍵消抖不要用延時(shí),這種程序在開(kāi)發(fā)板上玩玩可以,不要用在實(shí)際項(xiàng)目中
回復(fù)

使用道具 舉報(bào)

5#
ID:1064915 發(fā)表于 2023-6-16 14:26 | 只看該作者
設(shè)計(jì)到1000ms ,就松手,就退出 計(jì)數(shù),1000ms如何計(jì)算的?
回復(fù)

使用道具 舉報(bào)

6#
ID:432633 發(fā)表于 2023-10-20 16:21 | 只看該作者
不用說(shuō)delay  30ms了,就是10ms 實(shí)際產(chǎn)品中都不能使用,你還有while等按鍵松開(kāi)。 不實(shí)用的代碼。          時(shí)基和無(wú)阻塞 是最基本的入門(mén)技能,用delay這么長(zhǎng)時(shí)間的,入門(mén)都還沒(méi)入門(mén)  
回復(fù)

使用道具 舉報(bào)

7#
ID:46750 發(fā)表于 2023-10-21 19:55 | 只看該作者
6樓說(shuō)得對(duì),建議樓主不要展示這種示例
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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