hyrule吧 关注:15贴子:324
  • 3回复贴,共1

用15f104w做了一个调色led

只看楼主收藏回复

使用STC15F104W做了一个共阳RGB的调色LED程序。程序没有简化,方便初学者理解。


来自Android客户端1楼2015-05-20 11:12回复
    #include<reg51.h>
    unsigned char a,b,c,aa,bb,cc;
    sbit R=P3^5;
    sbit G=P3^4;
    sbit BB=P3^3; //共阳RGB LED
    sbit RK=P3^0;
    sbit GK=P3^1;
    sbit BK=P3^2;
    void delay1()
    {
    unsigned char i,j;
    for(i=a;i>0;i--)
    for(j=50;j>0;j--)
    {;}
    }
    void delay2()
    {
    unsigned char i,j;
    for(i=b;i>0;i--)
    for(j=50;j>0;j--)
    {;}
    }
    void delay3()
    {
    unsigned char i,j;
    for(i=c;i>0;i--)
    for(j=50;j>0;j--)
    {;}
    }
    void delay4()
    {
    unsigned char i,j;
    for(i=aa;i>0;i--)
    for(j=50;j>0;j--)
    {;}
    }
    void delay5()
    {
    unsigned char i,j;
    for(i=bb;i>0;i--)
    for(j=50;j>0;j--)
    {;}
    }
    void delay6()
    {
    unsigned char i,j;
    for(i=cc;i>0;i--)
    for(j=50;j>0;j--)
    {;}
    }
    void delay()
    {
    unsigned char i,j;
    for(i=50;i>0;i--)
    for(j=40;j>0;j--)
    {;}
    }
    void main()
    {
    P3=0xff; //初始化
    aa=11;
    bb=11;
    cc=11;
    while(1)
    {
    if(a>0&&a<11){R=0;delay1();R=1;delay4();}
    if(b>0&&b<11){G=0;delay2();G=1;delay5();}
    if(c>0&&c<11){BB=0;delay3();BB=1;delay6();}
    if(RK==0){delay();if(RK==0){a++;aa--;while(!RK);}}
    if(GK==0){delay();if(GK==0){b++;bb--;while(!GK);}}
    if(BK==0){delay();if(BK==0){c++;cc--;while(!BK);}}
    if(a>10){a=0;aa=11;}
    if(b>10){b=0;bb=11;}
    if(c>10){c=0;cc=11;}
    }
    }


    2楼2015-05-20 11:13
    回复







      来自Android客户端3楼2015-05-20 11:15
      回复
        今天简化了一下程序
        #include<reg51.h>
        unsigned char a,b,c,n;
        sbit R=P3^5;
        sbit G=P3^4;
        sbit BB=P3^3; //共阳RGB LED
        sbit RK=P3^0;
        sbit GK=P3^1;
        sbit BK=P3^2;
        void delay()
        {
        unsigned char i,j;
        for(i=n;i>0;i--)
        for(j=50;j>0;j--)
        {;}
        }
        void main()
        {
        P3=0xff; //初始化
        while(1)
        {
        if(a>0&&a<11){R=0;n=a;delay();R=1;n=11-a;delay();}
        if(b>0&&b<11){G=0;n=b;delay();G=1;n=11-b;delay();}
        if(c>0&&c<11){BB=0;n=c;delay();BB=1;n=11-c;delay();}
        if(RK==0){n=50;delay();if(RK==0){a++;while(!RK);}}
        if(GK==0){n=50;delay();if(GK==0){b++;while(!GK);}}
        if(BK==0){n=50;delay();if(BK==0){c++;while(!BK);}}
        if(a>10){a=0;}
        if(b>10){b=0;}
        if(c>10){c=0;}
        }
        }


        4楼2015-05-25 09:15
        回复