新聞中心

        MEGA8做的呼吸燈

        作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
        利用mega8的PWM做了一款簡單的雙色呼吸燈,呼吸頻率可以調(diào)節(jié)。由于程序中還有其他功能,只將呼吸燈部分程序整理如下。

        /******************************************************************************
        * 頭文件設(shè)定
        ******************************************************************************/
        #include
        #include
        #include "ADC.c"

        本文引用地址:http://www.104case.com/article/201611/316312.htm

        #define ledkey (PIND & 0x08)


        unsigned char KEY_Flag;
        unsigned int i;


        /******************************************************************************
        * 函 數(shù) 名: Delay_nus(unsigned int n)
        * 功能描述: 延時函數(shù)
        * 參 數(shù): 延時參數(shù):unsigned int n;
        * 返 回 值: 無
        * 備 注: ...
        ******************************************************************************/
        void Delay_nus(unsigned int n)
        {
        unsigned int a,b;

        for (a = 0; afor (b = 0; b<8; b++);
        }

        /******************************************************************************
        * 函 數(shù) 名: Delay_nms(unsigned int n)
        * 功能描述: 延時函數(shù)
        * 參 數(shù): 延時參數(shù):unsigned int n;
        * 返 回 值: 無
        * 備 注: ...
        ******************************************************************************/
        void Delay_nms(unsigned int n)
        {
        unsigned int a,b;

        for (a = 0; a{
        Delay_nus(1000);
        }
        }

        /******************************************************************************
        * 函 數(shù) 名: KEY()
        * 功能描述: 按鍵函數(shù)
        * 參 數(shù): 無
        * 返 回 值: 無
        * 備 注: ...
        ******************************************************************************/
        void KEY(void)
        {
        if(ledkey == 0)//按鍵長按2s后啟動
        Delay_nus(5); //延時等待按鍵2S
        if(ledkey == 0)//如果按鍵依然按下,執(zhí)行相應(yīng)動作
        {
        KEY_Flag++;//按鍵標志位加1
        if(KEY_Flag>3)//按鍵標志位只能為1或0
        {
        KEY_Flag=0;
        }
        while(ledkey == 0);//軟件消抖
        }
        }


        /******************************************************************************
        * 函 數(shù) 名: delay()
        * 功能描述: 延時函數(shù)
        * 參 數(shù): 無
        * 返 回 值: 無
        * 備 注: ...
        ******************************************************************************/
        void delay(void)
        {
        unsigned char i,j;
        for(i=5000;i--;i>1)
        for(j=500;j--;j>1);
        }


        /******************************************************************************
        * 函 數(shù) 名: main()
        * 功能描述: 主函數(shù)
        * 參 數(shù): 無
        * 返 回 值: 無
        * 備 注: ...
        ******************************************************************************/
        void main()
        {
        unsigned char a;
        PORTB = 0XFF;
        DDRD = 0XF0;
        delay();

        TCCR1A=0Xa2;
        TCCR1B=0X1B;

        ICR1 = 124;

        OCR1B=1;
        OCR1A=1;
        while(1)
        {
        KEY();
        a++;
        OCR1A=a;
        OCR1B=a;
        delay();
        if(a>122)
        {
        while(1)
        {
        KEY();
        if(KEY_Flag == 0)
        {
        DDRB &=0XF2;
        }
        if(KEY_Flag == 1)
        {
        DDRB &=0XF4;
        }
        if(KEY_Flag == 2)
        {
        PORTD =0X10;
        }
        if(KEY_Flag == 3)
        {
        PORTD =0X00;
        }
        a--;
        OCR1B=a;
        OCR1A=a;
        delay();
        if(a==1)//最小值
        {
        break;//跳出while
        }
        }
        }
        }
        }



        關(guān)鍵詞: MEGA8呼吸

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 新竹市| 云梦县| 金门县| 罗田县| 灵石县| 南京市| 日照市| 大化| 西宁市| 疏附县| 姚安县| 华亭县| 旺苍县| 大冶市| 洛阳市| 阳城县| 白朗县| 云安县| 桐乡市| 太保市| 隆昌县| 台州市| 波密县| 调兵山市| 嘉善县| 蒲江县| 山西省| 平武县| 巨鹿县| 政和县| 岑溪市| 佛坪县| 宁晋县| 民县| 都匀市| 大荔县| 都兰县| 玛曲县| 白河县| 浪卡子县| 镇康县|