在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)單按鍵控制led臺燈

            單片機(jī)單按鍵控制led臺燈

            作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
            按鍵控制LED臺燈亮度 C語言方案

            功能要求:單獨(dú)一個按鍵控制LED臺燈的亮度,上電默認(rèn)關(guān)機(jī),分5個檔位。
            第一檔:100%亮度
            第二檔:65%亮度
            第三檔:35%亮度
            第四檔:20%亮度
            第五檔:10%亮度
            第六檔:關(guān)機(jī)

            本文引用地址:http://www.biyoush.com/article/201611/323845.htm

            思路:設(shè)定一個改變占空比的變量PWM,每按一次按鍵PWM值自加一次(自加值看需要定,比如PWM+=100),值越小產(chǎn)生的驅(qū)動脈沖頻率越高。PWM函數(shù)采用模擬方法產(chǎn)生,從成本上考慮,帶中斷,定時器等功能的單片機(jī)價格比較高。所以采用價格低廉的低檔單片機(jī)。鑒于仿真方便,本程序采用PIC16F505(當(dāng)然也可以用12F508等芯片)。

            端口連接:RC1—LED RC0----蜂鳴器 RC5----按鍵

            程序代碼:
            #include
            __CONFIG(0X034);
            #define uchar unsigned char
            #define uint unsigned int

            #define uchar unsigned char
            #define uint unsigned int
            uint PWM, H,L;


            void delay(uint x)//任意時間延時函數(shù)
            {
            uint c,d;
            for(c=x;c>0;c--)
            for(d=110;d>0;d--);

            }

            void KEY1()//按鍵掃描函數(shù),按壓有效(非松手有效),并且不影響LED點(diǎn)亮效果,都可以用此類掃描函數(shù)
            {
            static bit valid=0;
            static bit finish=0;

            if(valid==0)
            {
            if(RC5==0)
            {
            if(finish==0)
            {
            finish=1;

            RC0=1;
            delay(10);
            RC0=0;//蜂鳴器,每按一下響一聲
            RC1=0;//此語句非常重要,如果不加這句,到最低檔的時候,不能關(guān)機(jī)而直接進(jìn)入最高檔。

            PWM+=100; //按鍵有效,PWM增加100


            }
            }
            else
            {
            valid=0;
            finish=0;
            }
            }
            else
            {
            if(RC5==0)valid=1;
            }
            }


            void LED_ON()//模擬PWM函數(shù),算法簡單直觀,通過改變PWM值去改變LED點(diǎn)亮和熄滅的時間的間隔達(dá)到調(diào)光的目的。
            {


            H=PWM;
            L=500-H;

            RC1=0;
            while(H--);
            RC1=1;
            while(L--);

            }
            void main()
            {
            PORTC=0X00;
            TRISC=0X10;
            PWM=0;

            while(1)//用此語句達(dá)到上電關(guān)機(jī)(LED熄滅狀態(tài)),當(dāng)有按鍵按下的時候,break語句跳出while循環(huán)
            {
            RC1=0;
            if(RC5==0)break;
            }

            while(1)
            {
            KEY1();//按鍵掃描,此函數(shù)將改變PWM的值
            If(PWM<500)//只要PWM值小于500,每按下一次,都會執(zhí)行LED_ON()函數(shù),且每次的PWM值都以100的倍數(shù)增加,達(dá)到調(diào)光目的。
            {
            LED_ON();
            }
            If(PWM>500)//如果大于500則把PWM清零,且LED關(guān)機(jī)。
            {
            PWM=0;
            RC1=0;
            }
            }

            }



            評論


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

            關(guān)閉