<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 光電顯示 > 設計應用 > 8種LED閃爍燈控制

          8種LED閃爍燈控制

          作者: 時間:2011-02-19 來源:網(wǎng)絡 收藏

          基于ATmega16的8種閃爍燈控制轉(zhuǎn)載標簽:


          #include iom16v.h>
          #include macros.h>
          #define uchar unsigned char
          #define uint unsigned int

          void Delay() //延時函數(shù)
          {
          uchar a, b, c;
          for (a = 1; a; a++)
          for (b = 1; b; b++)
          for (c = 0; c10; c++) //循環(huán)次數(shù)=255*255*10
          ;
          }

          void DelayMs(uint i) //1ms延時,準確性較Delay();高
          {
          while(i--)
          {
          uint j;
          for(j=1;j=613;j++)
          ;
          }
          }

          void _on() //打開所有
          {
          PORTB =0X00;
          Delay();
          }

          void LED_off() //關(guān)閉所有LED
          {
          PORTB = 0xFF;
          Delay();
          }

          void LED_01(int i) //LED亮滅控制
          {
          PORTB = ~BIT(i); //輸出低電平
          DelayMs(100); //調(diào)用延時程序
          }

          void LED_02(int i) //間隔點亮
          {
          PORTB=~(BIT(i)|BIT(i-2));
          DelayMs(100);
          }

          void LED_03(int i) //相臨點亮
          {
          PORTB=~(BIT(i)|BIT(i-1)); //~后內(nèi)容需用括號括起來
          DelayMs(100);
          }

          void LED_04(int i) //發(fā)散聚集點亮
          {
          switch(i)
          {
          case 0:PORTB=0xE7;DelayMs(100);break; //延時100ms
          case 1:PORTB=0xDB;DelayMs(100);break;
          case 2:PORTB=0xBD;DelayMs(100);break;
          case 3:PORTB=0x7E;DelayMs(100);break;
          default:break;
          }
          }

          void LED_05(int i) //00,0F,F0,FF方式顯示
          {
          switch(i)
          {
          case 0:PORTB=0x00;DelayMs(100);break; //延時100ms
          case 1:PORTB=0x0F;DelayMs(100);break;
          case 2:PORTB=0xF0;DelayMs(100);break;
          case 3:PORTB=0xFF;DelayMs(100);break;
          default:break;
          }
          }

          void LED_06(int i)
          {
          switch(i)
          {
          case 0:PORTB=0XAA;DelayMs(100);break;
          case 1:PORTB=0X55;DelayMs(100);break;
          }
          }

          void main()
          {
          int l,m,n,o,p,q,r,s,i,j;
          DDRA =0X00; //端口上拉輸入
          PORTA=0XFF;
          DDRB =0xFF; //端口輸出
          PORTB="0xFF"; //輸出高電平,LED熄滅
          DDRC =0X00;
          PORTC=0XFF;
          DDRD =0X00;
          PORTD=0XFF;

          for (r=0;r5;r++)
          {
          for(l=0;l5;l++) //模式1:順序點亮
          {
          for (i = 0; i 8; i++) //順序單個點亮LED
          LED_01(i);
          for (i = 6; i > 0; i--) //逆序單個點亮LED
          LED_01(i);
          }
          LED_off();

          for(m=0;m5;m++) //模式2:順序單個間隔點亮
          {
          for (i = 0; i 8; i += 2) //順序間隔點亮LED
          LED_01(i);
          for (i = 7; i > 0; i -= 2) //逆序間隔點亮LED
          LED_01(i);
          }
          LED_off();

          for(n=0;n5;n++) //模式3:間隔點亮
          {
          for (i = 2; i 8; i++) //間隔順序同時點亮
          LED_02(i);
          for (i = 6; i > 2; i--) //間隔逆序同時點亮
          LED_02(i);
          }
          LED_off();

          for(o=0;o5;o++) //模式4:相臨點亮
          {
          for (i = 1; i 8; i++) //相臨順序同時點亮
          LED_03(i);
          for (i = 6; i > 1; i--) //相臨逆序同時點亮
          LED_03(i);
          }
          LED_off();
          for(p=0;p5;p++) //模式5:發(fā)散聚集點亮
          {
          for(i=0;i4;i++) //發(fā)散點亮
          LED_04(i);
          for(i=2;i>0;i--) //聚集點亮
          LED_04(i);
          }
          LED_off();

          for(q=0;q5;q++) //模式6:四四點亮
          {
          for(i=0;i4;i++) //四四順序點亮
          LED_05(i);
          for(i=2;i>0;i--) //四四逆序點亮
          LED_05(i);
          }
          LED_off();

          for(s=0;s5;s++) //模式7:四四點亮
          {
          for(i=0;i2;i++) //四四順序點亮
          LED_06(i);
          }
          LED_off();

          for(j=0;j10;j++) //模式8:全部點亮熄滅
          {
          LED_on();
          LED_off();
          }
          }
          //MCUCR=0x40; //空閑模式,CPU占用100%
          //MCUCR=0x50; //ADC噪聲抑制模式,CPU占用100%
          //MCUCR=0x60; //掉電模式,CPU占用80%
          //MCUCR=0x70; //省電模式,CPU占用4%
          //MCUCR=0xE0; //Standby模式,CPU占用80%
          MCUCR=0xF0; //擴展Standby模式,CPU占用4%
          asm("sleep"); //CPU休眠指令
          }

          c++相關(guān)文章:c++教程


          led燈相關(guān)文章:led燈原理




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();