欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 小白求助51單片機(jī)切換流水燈模式該怎么設(shè)計(jì) [打印本頁(yè)]

作者: 小白1211    時(shí)間: 2022-1-29 20:55
標(biāo)題: 小白求助51單片機(jī)切換流水燈模式該怎么設(shè)計(jì)
問(wèn)題是不會(huì)寫(xiě)按鍵切換模式的代碼
比如說(shuō)按一下是閃爍模式
再按一下是呼吸燈模式
再按一下是跑馬燈模式
一個(gè)按鍵控制八個(gè)led燈

作者: 豆豆王一    時(shí)間: 2022-1-30 07:53
用一串if,按鍵按下進(jìn)入下一個(gè)循環(huán)就像這樣
if(按鍵按下&&計(jì)數(shù)變量為x)
{
     函數(shù)體;
    if(按鍵按下)
     {
       計(jì)數(shù)變量增加1;//進(jìn)入到下一個(gè)函數(shù)中
      }
}
不知道我說(shuō)的你能否明白
作者: lkc8210    時(shí)間: 2022-1-30 15:39
給個(gè)栗子
  1. #include <reg52.h>

  2. typedef         unsigned char        u8;  //0 to 255
  3. typedef         unsigned int        u16;  //0 to 65535
  4. typedef         unsigned long        u32;  //0 to 4294967295

  5. sbit KEY_32 = P3^2;
  6. u8 mode = 0;
  7. u16 TMR_XX_PRE = 6000;
  8. u8 index = 0;
  9. void key_Proc()
  10. {
  11.         static u16 Delay_XD=0;
  12.         if(!KEY_32)
  13.         {
  14.                 if(Delay_XD<0xFFFF)Delay_XD++;
  15.                 if(Delay_XD==250)
  16.                 {
  17.                                 mode = ++mode %4;               
  18.                                 index = 0;
  19.                                 P1 = 0xFF;                       
  20.                 }
  21.         }
  22.         else
  23.                 Delay_XD = 0;
  24. }
  25. void Led_Flow()
  26. {
  27.         static u16 TMR_XX_ACC;
  28.         if(++TMR_XX_ACC >= TMR_XX_PRE)
  29.         {TMR_XX_ACC=0;
  30.                 switch (mode)
  31.                 {
  32.                         case 0:
  33.                                 P1 = ~(0x01 << index);
  34.                                 index = ++index %8;
  35.                                 break;
  36.                         case 1:
  37.                                 P1 = ~(0x80 >> index);
  38.                                 index = ++index %8;
  39.                                 break;
  40.                         case 2:
  41.                                 if(index < 8)
  42.                                         P1 &= ~(0x01 <<index);
  43.                                 else
  44.                                         P1 |= (0x01 <<(index-8));
  45.                                 if(++index >15)
  46.                                 {
  47.                                         index = 0;
  48.                                 }
  49.                                 break;
  50.                 }
  51.         }
  52. }
  53. void main()
  54. {
  55.     while (1)
  56.     {
  57.                         key_Proc();
  58.                         Led_Flow();
  59.     }
  60. }
復(fù)制代碼

作者: lucheng77    時(shí)間: 2022-1-31 01:19
用一串if語(yǔ)句可以,用一個(gè)switch也可以
if(ann==0)               //宏定義把實(shí)際端口映射到變量ann上, 如果有按鈕按下
{delay(10);            //延時(shí)消抖
if(ann==0)
{
  i++;                 //i變量加1,為后面選擇做準(zhǔn)備
   }  
  }
  
if(i>2)
   {i=0;}   //給變量i設(shè)定一個(gè)邊界。
switch (i)
                {
                        case 0:閃爍模式程序;break;
                        case 1:呼吸燈模式;break;
                        case 2:跑馬燈模式;break;
                        default:break;  
                  }




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1