• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用PWM控制漸變七彩燈C51程序

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

    作者: 時(shí)間:2012-08-02 來(lái)源:網(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變化等級(jí)調(diào)整
    sbit B1=P1^0;//紅色燈控制IO口
    sbit G1=P1^1;//綠色燈控制IO口
    sbit R1=P1^2;//蘭色燈控制IO口
    uchar Rout,Bout,Gout;//紅綠蘭3個(gè)變量
    /***************************************************/
    /**********************延時(shí)子程序*******************/
    /***************************************************/
    void delay(uint z)
    {
    uint x,y;//局部變量定義
    for(x=0;x5;x++)//延時(shí)外循環(huán)
    for(y=0;yz;y++);//延時(shí)內(nèi)循環(huán)
    }
    /**********************************************/
    /**********紅綠蘭3種燈亮滅時(shí)間**********/
    /**********************************************/
    void RGBpwm(uchar Rou,uchar Gou,uchar Bou)//3個(gè)局部變量,些部分為帶參數(shù)函數(shù)
    {
    if(Rou!=0)//如果紅燈變量不等于0就亮紅燈
    {
    R1=1;//紅燈亮
    delay(Rou);//紅燈亮起時(shí)間
    R1=0;//紅燈滅
    }
    if(Gou!=0)//如果紅燈變量不等于0就亮紅燈
    {
    G1=1;//綠燈亮
    delay(Gou);//綠燈亮起的時(shí)間 
    G1=0;//綠燈滅
    }
    if(Bou!=0)//如果紅燈變量不等于0就亮紅燈
    {
    B1=1;//蘭燈亮
    delay(Bou);//蘭燈亮起的時(shí)間
    B1=0;//蘭燈滅
    }
    }

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

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



    上一頁(yè) 1 2 下一頁(yè)

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

    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 开阳县| 剑川县| 万源市| 绥德县| 衡阳县| 射洪县| 富阳市| 民丰县| 海丰县| 平远县| 迭部县| 台中县| 彩票| 华蓥市| 谢通门县| 衡东县| 涟水县| 报价| 绍兴县| 洛阳市| 白河县| 九台市| 青神县| 葵青区| 大竹县| 景德镇市| 门源| 合阳县| 蓬溪县| 栖霞市| 信阳市| 茌平县| 内乡县| 广西| 福建省| 仪陇县| 甘孜| 乌拉特前旗| 池州市| 夏邑县| 巫溪县|