新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機檢測交流電掉電程序應用(RGB控制)

        單片機檢測交流電掉電程序應用(RGB控制)

        作者: 時間:2016-12-02 來源:網絡 收藏

        void led1_on()

        {

        GP0=1;

        if(g!=0&&b==5)

        {

        g--;

        r++;

        }

        if(r!=0&&g==5)

        {

        r--;

        b++;

        }

        if(b!=0&&r==5)

        {

        b--;

        g++;

        }

        if(g+r+b!=50)

        {

        g=40;

        r=5;

        b=5;

        }

        for(a=0;a<30;a++)

        {

        if(g!=0) //綠色漸變

        {

        GP1=0;

        timer1(g);

        GP1=1;

        }

        if(r!=0) //紅色漸變

        {

        GP2=0;

        timer1(r);

        GP2=1;

        }

        if(b!=0) //藍色漸變

        {

        GP4=0;

        timer1(b);

        GP4=1;

        }

        }

        }

        void key_scan()

        {

        if(GP5==0)//按鍵按下

        {

        key2_time_cnt++;

        if(key2_time_cnt==TIME_MAX)

        {

        key_flag=1;

        }

        }

        else

        {

        key2_time_cnt=0;

        if(key_flag==1)

        {

        key_flag=0;

        num++;

        if(num>3)num=0;

        }

        }

        }

        void main()

        {

        TRIS=0b00110000;

        GP0=1;

        GP1=0;

        GP2=0;

        g=40;

        r=5;

        b=5;

        while(1)

        {

        key_scan();

        if(num==0)

        {

        led1_on();

        }

        else if(num==1)

        {

        GP0=1;//綠色亮

        GP1=0;
        GP4=0;

        }

        else if(num==2)

        {

        GP0=0;

        GP1=1;//紅色亮
        GP4=0;

        }

        else if(num==3)

        {

        GP0=0;

        GP1=0;
        GP4=1;//藍色亮

        }

        }

        }

        RGB函數構造比較巧妙,不知道原創者是誰?不想多費唇舌。交流掉電檢測才是要說的重點,
        if()
        {}
        else
        {}
        格式,開始時,如果GP5口上有低電平出現,對變量key2_time_cnt進行自加,當數值大于1000,(大概是12MS)左右,認為是交流電掉電了,讓斷電標志key_flag置1 ,當GP5口變為高電平的時候,把key2_time_cnt清零,同時判斷斷電標志是否有效,如果有效,讓分檔變量num加1,如果有4種功能那么從0加到3就要歸零。此交流檢測函數簡單實用,可以放在主程序循環中,檢測掉電不會漏檔。如何在漸變中響應交流檢測,就是利用檢測函數作為延時的循環主體。這樣既可以延時,又可以檢測IO口的變化。


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新田县| 溧阳市| 都兰县| 四会市| 揭西县| 青浦区| 客服| 京山县| 工布江达县| 伊宁县| 友谊县| 鹤山市| 珠海市| 锦屏县| 恭城| 宾川县| 伊宁市| 天水市| 离岛区| 平山县| 泾川县| 贵南县| 安阳市| 桦川县| 东乌| 蓬溪县| 五台县| 澄城县| 敦化市| 兰州市| 金山区| 邛崃市| 房山区| 临武县| 汉阴县| 寻甸| 正定县| 黄浦区| 黎川县| 隆子县| 台中市|