新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一鍵多能(按鍵控制RGB漸變)

        一鍵多能(按鍵控制RGB漸變)

        作者: 時間:2016-11-30 來源:網絡 收藏
        首先,RGB漸變,實際屬于,動態,循環過程,還是通過模擬方法,實現,在延時中檢測按鍵函數,再次發揮作用,讓我們為這個函數鼓掌10秒鐘
        void timer(uint t)
        {
        uint n;
        for(n=0;n
        {
        while(RC5==0)

        num=5;

        }
        }

        程序代碼如下:
        #include
        __CONFIG(0X1B4);
        #define uchar unsigned char
        #define uint unsigned int
        unsigned char a;
        unsigned char g,r,b,p,num;

        void delay(uint x)
        {
        uint c,d;
        for(c=x;c>0;c--)
        for(d=110;d>0;d--);

        }

        void timer(uint t)
        {
        uint n;
        for(n=0;n
        {
        while(RC5==0)

        num=5;

        }
        }
        void LED0_ON()
        {
        RC0=0;
        RC1=0;
        RC2=0;
        RC3=0;
        }

        void LED1_ON()
        {
        RC0=0;
        RC1=1;
        RC2=0;
        RC3=0;
        }

        void LED2_ON()
        {
        RC0=0;
        RC1=0;
        RC2=1;
        RC3=0;
        }

        void LED3_ON()
        {
        RC0=0;
        RC1=0;
        RC2=0;
        RC3=1;
        }

        void LED4_ON()//此漸變函數是無意中在網上發現的
        {
        RC3=0;
        if(g!=0&&b==0)
        {
        g--;
        r++;
        }
        if(r!=0&&g==0)
        {
        r--;
        b++;
        }
        if(b!=0&&r==0)
        {
        b--;
        g++;
        }
        if(g+r+b!=240)
        {
        g=200;
        r=0;
        b=0;
        }
        for(a=0;a<10;a++)
        {
        if(g!=0)
        {
        RC0=0;
        timer(g);
        RC0=1;
        }
        if(r!=0)
        {
        RC1=0;
        timer(r);
        RC1=1;
        }
        if(b!=0)
        {
        RC2=0;
        timer(b);
        RC2=1;
        }
        }
        }

        void LED5_ON()
        {
        RC0=1;
        RC1=1;
        RC2=1;
        RC3=1;
        }
        void init()
        {
        TRISA=0b11111111;
        TRISC=0b11100000;
        ANSEL=0X00;//把RC1,RC2,RC3設置為普通I/O 或者中斷輸入,模擬輸入時候ANSEL=0XFF
        CMCON=0X07;//比較器禁止
        RC4=0;
        RC3=0;
        RC0=0;
        RC1=0;
        RC2=0;
        g=240;r=0;b=0;
        }

        void scan()
        {

        while(!RC5)
        {
        delay(5);
        p++;
        }
        if(p>10)
        {
        p=0;
        num++;
        if(num>5)num=0;
        }
        void main()
        {
        init();
        while(1)
        {
        scan();

        switch(num)
        {
        case 0:LED0_ON();break;
        case 1:LED1_ON();break;
        case 2:LED2_ON();break;
        case 3:LED3_ON();break;
        case 4:LED4_ON();break;
        case 5:LED5_ON();break;
        }

        }
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 正安县| 宜兴市| 和平区| 林周县| 自贡市| 长丰县| 贵州省| 常宁市| 丰原市| 抚顺县| 建德市| 延川县| 交口县| 康平县| 海安县| 彰武县| 洪洞县| 墨江| 仙桃市| 石城县| 永春县| 苍梧县| 鄂州市| 曲沃县| 咸阳市| 那坡县| 长治县| 长武县| 密山市| 仁化县| 天台县| 镇康县| 阳城县| 潮州市| 墨玉县| 古交市| 灌南县| 郑州市| 上蔡县| 北碚区| 五华县|