新聞中心

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

        8種LED閃爍燈控制

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

        基于ATmega16的8種閃爍燈控制轉載標簽:


        #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() //關閉所有LED
        {
        PORTB = 0xFF;
        Delay();
        }

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

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

        void LED_03(int i) //相臨點亮
        {
        PORTB=~(BIT(i)|BIT(i-1)); //~后內容需用括號括起來
        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++相關文章:c++教程


        led燈相關文章:led燈原理




        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 河池市| 宝兴县| 广昌县| 简阳市| 东丰县| 丰城市| 兴仁县| 汉中市| 曲麻莱县| 杭锦旗| 西充县| 重庆市| 历史| 台北县| 呈贡县| 平罗县| 甘谷县| 万源市| 邹城市| 通河县| 兰坪| 清新县| 江西省| 西乌珠穆沁旗| 井陉县| 庄浪县| 顺平县| 云阳县| 健康| 信宜市| 塔城市| 五大连池市| 民勤县| 临汾市| 南汇区| 双辽市| 卫辉市| 郸城县| 内黄县| 江永县| 上虞市|