找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求分享 stm32f0304FP6單片機(jī)按鍵消抖程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:302293 發(fā)表于 2023-3-2 17:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
   stm32 的按鍵程序消抖的發(fā)一下,謝謝大俠
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1064961 發(fā)表于 2023-3-2 18:57 | 只看該作者
u8 KEY_Scan(u8 mode)
{
        static u8 key=1;
        if(key==1&&(K_UP==1||K_DOWN==0||K_LEFT==0||K_RIGHT==0)) //任意一個按鍵按下
        {
                delay_ms(10);  //消抖
                key=0;
                if(K_UP==1)
                {
                        return KEY_UP;
                }
                else if(K_DOWN==0)
                {
                        return KEY_DOWN;
                }
                else if(K_LEFT==0)
                {
                        return KEY_LEFT;
                }
                else
                {
                        return KEY_RIGHT;
                }
        }
        else if(K_UP==0&&K_DOWN==1&&K_LEFT==1&&K_RIGHT==1)    //無按鍵按下
        {
                key=1;
        }
        if(mode==1) //連續(xù)按鍵按下
        {
                key=1;
        }
        return 0;
}

這個嘛
回復(fù)

使用道具 舉報

板凳
ID:302293 發(fā)表于 2023-3-2 19:41 | 只看該作者
111111yfyf 發(fā)表于 2023-3-2 18:57
u8 KEY_Scan(u8 mode)
{
        static u8 key=1;

很卡,用不了
回復(fù)

使用道具 舉報

地板
ID:807182 發(fā)表于 2023-3-9 15:21 | 只看該作者
if(POWER_KEY)//按鍵掃描
                {
                        Key_Count++;
                        if(Key_Count >= 20)
                        {

                        }
                }
回復(fù)

使用道具 舉報

5#
ID:139866 發(fā)表于 2023-3-9 17:03 | 只看該作者
這也有必要問?但凡去看一下百度一下原理也不至于會在這發(fā)帖問,您是一點腦子都不想動嗎?
回復(fù)

使用道具 舉報

6#
ID:731755 發(fā)表于 2023-3-10 08:28 來自觸屏版 | 只看該作者
sr861126 發(fā)表于 2023-3-2 19:41
很卡,用不了

很卡正常,我一般用中斷。
回復(fù)

使用道具 舉報

7#
ID:883242 發(fā)表于 2023-3-10 19:48 | 只看該作者
用systick中斷來判斷唄。
回復(fù)

使用道具 舉報

8#
ID:206581 發(fā)表于 2023-3-11 11:25 | 只看該作者
延時函數(shù)
回復(fù)

使用道具 舉報

9#
ID:161164 發(fā)表于 2023-3-11 12:03 | 只看該作者

  1. u8 key_Value = 0;//全局變量,用完置零
  2. void key_Proc()//單鍵短按,1ms中斷內(nèi)運行
  3. {
  4.         static u8 Delay_XD=0; //消抖計數(shù)
  5.         if(!Key_XX)
  6.         {
  7.                 if(!Delay_XD)
  8.                 {
  9.                         key_Value = 1;
  10.                 }
  11.                 Delay_XD = 50;//消抖時間
  12.         }
  13.         else //按鍵抬起
  14.         {
  15.                 if(Delay_XD)Delay_XD--;//消抖
  16.         }
  17. }
復(fù)制代碼


回復(fù)

使用道具 舉報

10#
ID:401564 發(fā)表于 2023-3-17 20:05 | 只看該作者
想認(rèn)真學(xué)的,就用狀態(tài)機(jī)去消抖
不想認(rèn)真學(xué)的,直接延時,簡單省事
連一個延時代碼都不想自己寫的............
回復(fù)

使用道具 舉報

11#
ID:517951 發(fā)表于 2023-3-18 09:32 | 只看該作者
軟件層面做消抖處理之外, 可以在按鍵與GND之間并聯(lián)一個0.1nF的電容, 本人實測效果更好.
回復(fù)

使用道具 舉報

12#
ID:404675 發(fā)表于 2023-3-19 09:51 | 只看該作者
判斷兩次讀取,然后中間加delay就行
回復(fù)

使用道具 舉報

13#
ID:230500 發(fā)表于 2023-3-20 11:22 | 只看該作者
能不用延時就千萬不要用延時;從開始就打好基礎(chǔ);杜絕任何會堵塞程序的無意義延時;論壇里搜一下;有很多高手寫范例  有用讀按鍵標(biāo)志位的方法;有用定時掃描的方法;一個按鍵消抖而已;只要搞懂原理了; 51 或者32 都通用;
http://www.torrancerestoration.com/bbs/dpj-133523-1.html
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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