衡阳派盒市场营销有限公司

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

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

3天內不再提示

一個按鍵控制多個LED燈

CHANBAEK ? 來源:頭條號電子秘探 ? 作者:頭條號電子秘探 ? 2023-03-24 15:41 ? 次閱讀

通過四個基礎練習學習按鍵開關

1.第一個按鍵:按下一次,LED1亮,再次按下LED1滅

2.第二個按鍵:按下一次,LED1亮,按下第二次LED2亮..... 按下第四次LED4亮,按下第五次,LED1亮,依次往復。

3.第三個按鍵:按下所有LED滅

4.第四個按鍵:按下所有LED都亮了

四個基礎練習的效果動圖

按鍵抖動的原因和危害,軟件消抖

按鍵開關通常為機械式開關,因為機械觸點有彈性。 在閉合和斷開的瞬間都會伴隨彈性抖動。 抖動時間: 一般為5ms~10ms

按鍵的抖動對于人類來說是感覺不到的,但對單片機來說,是一個很“漫長”的過程,因為單片機處理的速度在“微秒”級,而按鍵抖動的時間至少在“毫秒”級

軟件消抖的方法是不斷檢測按鍵值,直到按鍵值穩定。

實現方法:假設未按鍵時輸入為1,按鍵后輸入為0,抖動時不確定。 可以做以下檢測:檢測到按鍵輸入為0之后,延時5ms~10ms,再次檢測,如果按鍵還為0,那么就認為有按鍵輸入。 延時的5ms~10ms恰好避開了抖動期。

if(0==BUTTON1)//判斷是否有按鍵按下
        {   
            delay(10); //延時一段時間(10ms)去除前沿抖動
            if(0==BUTTON1)//再次確認是否有按鍵按下
            {
                while(0==BUTTON1);//按鍵抬起繼續往下執行,沒有則繼續等待
                LED1 = ~LED1;   //按下一次,LED1亮,再次按下LED1滅 
        }

截圖20230301181746.png

一個按鍵控制多個LED燈

按下一次,LED1亮,按下第二次LED2亮..... 按下第四次LED4亮,按下第五次,LED1亮,依次往復。 利用C語言的取模運算符,1%4 = 1 , 2%4=2 , 3%4=3 , 4%4=0 , 5%4=1 , 6%4=2...

//定義全局變量count,a
if(0==BUTTON2)
        {   
            delay(10);//延遲10ms
            if(0==BUTTON2)
            {
                while(!BUTTON2);//按鍵抬起繼續往下執行,沒有則繼續等待
                count++;//每按下BUTTON2按鍵抬起時,變量count加1
               
                a = count%4;
                switch(a)
                {
                    case 1:
                    P0= 0xfe; //11111110    LED1亮
                    break;
                    case 2:
                    P0= 0xfd;//11111101    LED2亮
                    break;
                    case 3:
                    P0= 0xfb; //11111011   LED3亮
                    break;
                    case 0:
                    P0=0xf7;//11110111    LED4亮
                    break;
                    default :
                    P0=0xff;
                    break;
                }
           
            }   
        }

按下4個LED燈全熄滅

P0口為高電平時LED熄滅,低電平全亮

if(0==BUTTON3)
        {   
            delay(10);
            if(0==BUTTON3)
            {
                while(0==BUTTON3);
                P0 = 0xff;  //P0 = 0x00 全亮
            }
        }

把四個練習封裝成函數

void main()
{ 
    while(1)
    {
          task1();
          task2();
          task3();
          task4();
    } 
}

補充

#define u16 unsigned int 等效于typedef unsigned int u16;

#define u8 unsigned char 等效于typedef unsigned char u8;

為什么要這樣定義,這樣寫非常直觀,不用擔心平臺的不同可移植性好,它的字節數一看就知道,u16是16位2個字節,

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23362

    瀏覽量

    663241
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638624
  • 抖動
    +關注

    關注

    1

    文章

    69

    瀏覽量

    18919
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62978
  • 按鍵開關
    +關注

    關注

    2

    文章

    36

    瀏覽量

    10446
收藏 人收藏

    評論

    相關推薦

    STM32按鍵控制LED的亮滅

    使用按鍵控制LED的亮滅,按鍵按下時LED亮起,按鍵
    的頭像 發表于 12-11 14:19 ?3987次閱讀
    STM32<b class='flag-5'>按鍵控制</b><b class='flag-5'>LED</b>的亮滅

    單個按鍵控制LED亮滅

    單個按鍵控制LED亮滅PCB打樣找華強 http://www.hqpcb.com 樣板2天出貨
    發表于 07-28 16:24

    實現按鍵控制LED

    本文說明項目功能實現按鍵控制LED在兩
    發表于 08-17 09:00

    獨立按鍵按鍵控制led學習過程記錄

    藍橋杯單片機學習過程記錄(二)獨立按鍵按鍵控制led按鍵控制流水燈按鍵控制
    發表于 01-06 08:16

    Stduino Nano按鍵控制LED

    關鍵詞:stm32 小藍板 STM32F103C8T6 Stduino IDE Stduino Nano 按鍵控制LED通過Stduino IDE 開發STM32小藍板,按鍵控制板載
    發表于 01-10 07:35

    如何實現按鍵控制LED?

    編程的要點是什么?如何實現按鍵控制LED
    發表于 01-26 08:04

    標記的用法,用按鍵控制1LED的亮滅,按鍵去抖

    標記的用法,用按鍵控制1LED的亮滅,按鍵
    發表于 08-09 10:39 ?2.4w次閱讀
    標記的用法,用<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>按鍵控制</b>1<b class='flag-5'>個</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>的亮滅,<b class='flag-5'>按鍵</b>去抖

    按鍵控制花樣【匯編版】

    按鍵控制花樣【匯編版】按鍵控制花樣【匯編版】按鍵控制花樣【匯編版】
    發表于 12-29 11:04 ?0次下載

    51單片機通過按鍵控制LED閃爍

    51單片機通過按鍵控制LED閃爍
    發表于 11-11 18:36 ?122次下載
    51單片機通過<b class='flag-5'>按鍵控制</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>閃爍

    按鍵控制LED

    基于51單片機仿真實現按鍵控制LED排的亮滅,壓縮包中有程序和電路圖。
    發表于 07-04 15:25 ?3次下載

    設計分享|74LS148實現按鍵控制LED

    74LS148實現按鍵控制LED。
    的頭像 發表于 01-04 09:21 ?3930次閱讀

    如何用按鍵控制不同的LED流轉模式?

    實現的任務就是用LCD做一個菜單,用按鍵控制不同的LED流轉模式。
    發表于 07-26 16:53 ?716次閱讀
    如何用<b class='flag-5'>按鍵控制</b>不同的<b class='flag-5'>LED</b>流轉模式?

    基于單片機按鍵控制多個LED

    按鍵控制8位LED。
    的頭像 發表于 08-16 09:35 ?2056次閱讀

    單片機獨立按鍵控制led程序

    單片機獨立按鍵控制LED程序 單片機獨立按鍵控制LED程序是
    的頭像 發表于 09-02 17:05 ?4710次閱讀

    stm32按鍵控制led亮滅

    stm32按鍵控制led亮滅? 在嵌入式系統中,硬件按鍵常常被用作開關輸入,控制LED
    的頭像 發表于 09-02 17:05 ?1.1w次閱讀
    全讯网xb112| 游戏| 百家乐官网群sun811.com| 百家乐真人娱乐城陈小春| 百家乐官网从哪而来| 百家乐筹码500| 百家乐官网视频游戏视频| 百家乐园qq群| 盛大百家乐官网的玩法技巧和规则 | 百家乐智能系统| 百家乐官网怎样概率大| 優博百家乐客服| 太阳城百家乐官网主页| 棋牌58w| 百家乐真人游戏网上投注| 大发888游戏平台 df888ylcxz46| 梦幻城百家乐官网的玩法技巧和规则 | 全讯网财富| 做生意风水 门对门| 百家乐官网娱乐城反水| 博彩乐透乐| 澳门百家乐的故事| 百家乐官网连赢的策略| 什么叫百家乐的玩法技巧和规则| 做生意摆放风水好吗| 利来国际娱乐网| 百家乐赌博游戏| 百家乐官网园云鼎娱乐平台| 大发888大发888体育| 超级百家乐官网2龙虎斗| 棋牌评测网| 大发888娱乐官网地址| 百家乐珠仔路| 精英百家乐现金网| 百家乐官网现金游戏注册送彩金 | 视频百家乐官网网站| 大发888 34| 百家乐破解秘| 高科技百家乐牌具| 视频百家乐官网赢钱| 赣榆县|