在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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è)計應(yīng)用 > 用PWM控制漸變七彩燈C51程序

            用PWM控制漸變七彩燈C51程序

            作者: 時間:2012-08-02 來源:網(wǎng)絡(luò) 收藏

            2、具體程序如下:
            #includereg52.h>//MCU頭文件
            #define uchar unsigned char//字浮型宏定義
            #define uint unsigned int//整型宏定義
            #define shudu 30//LED漸變速度調(diào)整
            #define dengji 1//LED變化等級調(diào)整
            sbit B1=P1^0;//紅色燈控制IO口
            sbit G1=P1^1;//綠色燈控制IO口
            sbit R1=P1^2;//蘭色燈控制IO口
            uchar Rout,Bout,Gout;//紅綠蘭3個變量
            /***************************************************/
            /**********************延時子程序*******************/
            /***************************************************/
            void delay(uint z)
            {
            uint x,y;//局部變量定義
            for(x=0;x5;x++)//延時外循環(huán)
            for(y=0;yz;y++);//延時內(nèi)循環(huán)
            }
            /**********************************************/
            /**********紅綠蘭3種燈亮滅時間**********/
            /**********************************************/
            void RGBpwm(uchar Rou,uchar Gou,uchar Bou)//3個局部變量,些部分為帶參數(shù)函數(shù)
            {
            if(Rou!=0)//如果紅燈變量不等于0就亮紅燈
            {
            R1=1;//紅燈亮
            delay(Rou);//紅燈亮起時間
            R1=0;//紅燈滅
            }
            if(Gou!=0)//如果紅燈變量不等于0就亮紅燈
            {
            G1=1;//綠燈亮
            delay(Gou);//綠燈亮起的時間 
            G1=0;//綠燈滅
            }
            if(Bou!=0)//如果紅燈變量不等于0就亮紅燈
            {
            B1=1;//蘭燈亮
            delay(Bou);//蘭燈亮起的時間
            B1=0;//蘭燈滅
            }
            }

            /***********************************************/
            /********************主程序*********************/
            /***********************************************/
            void main()
            {
            TMOD=0x01;//選擇定時器在方式1下工作
            EA=1;//打開總中斷
            ET0=1;//打開定時器中斷
            TR0=1;//打開定時器
            R1=0;//開機(jī)將紅燈關(guān)閉
            G1=0;//開機(jī)將綠燈關(guān)閉
            B1=0;//開機(jī)將蘭燈關(guān)閉
            TH0=(65536-256)/256;//給定時器高8位賦值
            TL0=(65536-256)%256;//給定時器低8位賦值
            while(1)//程序主循環(huán)
            {
            RGBpwm(Rout,Gout,Bout);//調(diào)用RGBpwm子程序
            }
            }
            /*************************************************/
            /*中斷服務(wù)子程序(控制LED紅綠蘭亮滅時間占空比例)*/
            /*************************************************/
            void zhong() interrupt 1//中斷向量位為1
            {
            uint num;//定時器計數(shù)變量
            uint ji;//亮度等級控制變量
            TH0=(65536-256)/256;//給定時器高8位賦值
            TL0=(65536-256)%256;//給定時器低8位賦值
            num++;//將定時計數(shù)變自動增加1
            if(num==shudu)//如果速度變量等于定時計數(shù)器變量就執(zhí)行下面大括號語句
            {
            num=0;//將計數(shù)器清0
            ji++;//將亮度等級控制變量加1
            if((ji>0)(ji100))//如果亮度等級控制變量ji小于100,紅燈亮起時間變量為240
            {
            Rout=240;//紅燈亮起變量為240
            Gout=0;//綠燈亮起變量為0
            Bout=0;//蘭燈亮起變量為0
            }
            if((ji>100)(ji340))/*如果亮度等級控制變量ji大于100小于340(剛好240個等級),
            紅燈亮起時間變量由原來的240,慢慢減小到0,同時綠燈由原來的0慢慢增到240,形成
            紅燈到綠燈的漸變過程*/
            {
            Rout-=dengji;//將紅燈變量減1。因為dengji為亮度變化等級(本程序變化等級為1),
            Gout+=dengji;//將綠燈變量加1
            Bout=0;//蘭燈不變
            }
            if((ji>340)(ji440))/*亮度等級控制變量ji大于340小于440時,讓綠燈變量停一段時間
            這樣就形成了當(dāng)紅燈過度到綠燈時,綠燈會停一會兒的效果。*/
            {
            Rout=0;//紅燈滅
            Gout=240;//綠燈亮
            Bout=0;//蘭燈滅
            }
            if((ji>440)(ji680))//同理:亮度等級控制變量ji大于440小于680時,由綠燈到蘭燈過度
            {
            Rout=0;//紅燈變量不變
            Gout-=dengji;//將綠燈變量減1
            Bout+=dengji;//將蘭燈變量加1
            }
            if((ji>680)(ji780))//亮度等級控制變量ji大于680小于780時,讓蘭燈變量停一段時間
            {
            Rout=0;//紅燈滅
            Gout=0;//綠燈滅
            Bout=240;//蘭燈亮一會兒
            }
            if((ji>780)(ji1020))//亮度等級控制變量ji大于780小于1020時,由蘭燈到白燈過度
            {
            Rout+=dengji;//將紅燈變量加1
            Gout+=dengji;//綠燈變量加1
            Bout=240;//蘭燈不變
            }
            if((ji>1020)(ji1025))//亮度等級控制變量ji大于1020小于1025時,由蘭燈到白燈過度
            {
            Rout=240;//將紅燈變量加1
            Gout=240;//綠燈變量加1
            Bout=240;//蘭燈不變
            }
            if((ji>1025)(ji1265))//亮度等級控制變量ji大于1025小于1265時,由白光到紅光過度
            {
            Rout=240;//紅燈變量不變
            Gout-=dengji;//綠燈變量自動減1
            Bout-=dengji;//蘭燈變量自動減1
            }
            if(ji>1265)//當(dāng)亮度等級控制變量ji大于1210時,就將它清0
            ji=0;//將亮度控制等級清0
            }
            }

            pwm相關(guān)文章:pwm原理



            上一頁 1 2 下一頁

            關(guān)鍵詞: PWM控制 漸變七彩燈 C51程序

            評論


            相關(guān)推薦

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

            關(guān)閉