您的位置:首页 > 其它

开源制作最炫RGB全彩51流水灯(原理图+PCB图+C程序)

2016-12-05 09:00 447 查看
http://www.51hei.com/bbs/dpj-56830-1.html

最炫RGB全彩51流水灯
流水灯这货大家估计都跟她都很熟悉,但是下面制作的这种RGB全彩流水灯或许会让你对流水灯刮目相看,话不多说有图有真相。(PCB板我用的PADS画的,附件中有源程序+原理图+PCB图,用的湿膜感光法做的)
1。硬件:所有的51单片机均可驱动(晶振频率随意、晶振频率越高流动速度越快)P3口通过8个电阻分别接8个三极管基极
2.元件:5050RGB灯珠8颗+PNP三极管8个+单片机+电阻8个(470R-4.7K均可)+电阻2个(220R左右)+电阻1个(330R左右)
3.初学者可以通过“货”认识到LED三基色混光原理以及左右移位


 


 


 


 


 

/*********************************************************************************************

编写:刘海龙

程序名:RGB8位彩色流水灯程序

硬件支持:所有的51单片机均可驱动(晶振频率随意)

元件:5050RGB灯珠8颗+PNP三极管8个+单片机+电阻8个(470R-4.7K均可)+电阻2个(220R左右)+电阻1个(330R左右)

/*********************************************************************************************/

#include <REG51.h> //单片机头文件

#include <intrins.h>        //51基本运算(包括_nop_空函数)

   

sbit BB=P1^0;//blue蓝灯

sbit RR=P1^1;//red红灯

sbit GG=P1^2;//green绿灯 

unsigned int N=100;//定义每个灯亮的时间、单位为毫秒、修改此值可改变流动速度

/*********************************************************************************************

函数名:毫秒级CPU延时函数

/*********************************************************************************************/

void DELAY_MS (unsigned int a){

        unsigned int i;

        while( a-- != 0){

                for(i = 0; i < 630; i++);

        }

}

/*********************************************************************************************/

/*********************************************************************************************/

void main (void)

{        

        unsigned char i;                

    while(1){

/***************各种颜色灯单个点亮左右流动**************************/

                RR=0;GG=1;BB=1;//红灯亮

                for(i=0;i<8;i++){ //低位向高位流动  

                        P3 = ~(1<<i);

                        DELAY_MS(N); 

                                }                

                for(i=0;i<8;i++){//高位向低位流动   

                        P3 = ~(1<<7-i);

                        DELAY_MS(N); 

                                }                

                RR=1;GG=0;BB=1;//绿灯亮

                for(i=0;i<8;i++){ //低位向高位流动  

                        P3 = ~(1<<i);

                        DELAY_MS(N); 

                                }                

                for(i=0;i<8;i++){//高位向低位流动   

                        P3 = ~(1<<7-i);

                        DELAY_MS(N); 

                                }

                RR=1;GG=1;BB=0;//蓝灯点亮

                for(i=0;i<8;i++){   

                        P3 = ~(1<<i);

                        DELAY_MS(N); 

                                }                

                for(i=0;i<8;i++){   

                        P3 = ~(1<<7-i);

                        DELAY_MS(N); 

                                }

                RR=0;GG=0;BB=1;//红绿灯亮(黄色光)

                for(i=0;i<8;i++){   

                        P3 = ~(1<<i);

                        DELAY_MS(N); 

                                }                

                for(i=0;i<8;i++){   

                        P3 = ~(1<<7-i);

                        DELAY_MS(N); 

                                }                

                RR=0;GG=1;BB=0;//红蓝灯亮(粉红光)

                for(i=0;i<8;i++){   

                        P3 = ~(1<<i);

                        DELAY_MS(N); 

                                }                

                for(i=0;i<8;i++){   

                        P3 = ~(1<<7-i);

                        DELAY_MS(N); 

                                }

                RR=1;GG=0;BB=0;//蓝绿灯亮(青色光)

                for(i=0;i<8;i++){   

                        P3 = ~(1<<i);

                        DELAY_MS(N); 

                                }                

                for(i=0;i<8;i++){   

                        P3 = ~(1<<7-i);

                        DELAY_MS(N); 

                                }

                RR=0;GG=0;BB=0;//红蓝绿灯亮(白色光)

                for(i=0;i<8;i++){   

                        P3 = ~(1<<i);

                        DELAY_MS(N); 

                                }                

                for(i=0;i<8;i++){   

                        P3 = ~(1<<7-i);

                        DELAY_MS(N); 

                                }                                                                        

/********各种颜色灯逐个点亮左右流动****************************/

                RR=0;GG=1;BB=1;//红灯亮

                for(i=0;i<8;i++){   

                        P3 = 0xfe<<i;

                        DELAY_MS(N); 

                                }

                for(i=0;i<8;i++){   

                        P3 = 0x7f>>i;

                        DELAY_MS(N); 

                                }

                RR=1;GG=0;BB=1;//绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 0xfe<<i;

                        DELAY_MS(N); 

                                }

                for(i=0;i<8;i++){   

                        P3 = 0x7f>>i;

                        DELAY_MS(N); 

                                }

                RR=1;GG=1;BB=0;//蓝灯点亮

                for(i=0;i<8;i++){   

                        P3 = 0xfe<<i;

                        DELAY_MS(N); 

                                }

                for(i=0;i<8;i++){   

                        P3 = 0x7f>>i;

                        DELAY_MS(N); 

                                }

                RR=0;GG=0;BB=1;//红绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 0xfe<<i;

                        DELAY_MS(N); 

                                }

                for(i=0;i<8;i++){   

                        P3 = 0x7f>>i;

                        DELAY_MS(N); 

                                }

                RR=0;GG=1;BB=0;//红蓝灯亮

                for(i=0;i<8;i++){   

                        P3 = 0xfe<<i;

                        DELAY_MS(N); 

                                }

                for(i=0;i<8;i++){   

                        P3 = 0x7f>>i;

                        DELAY_MS(N); 

                                }

                RR=1;GG=0;BB=0;//蓝绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 0xfe<<i;

                        DELAY_MS(N); 

                                }

                for(i=0;i<8;i++){   

                        P3 = 0x7f>>i;

                        DELAY_MS(N); 

                                }

                RR=0;GG=0;BB=0;//红蓝绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 0xfe<<i;

                        DELAY_MS(N); 

                                }

                for(i=0;i<8;i++){   

                        P3 = 0x7f>>i;

                        DELAY_MS(N); 

                                }

/********各种颜色灯全部点亮一个熄灭的灯左右流动*************************/

                RR=0;GG=1;BB=1;//红灯亮

                for(i=0;i<8;i++){   

                        P3 = 1<<i;

                        DELAY_MS(N); 

                                }

                

                for(i=0;i<8;i++){   

                        P3 = 0x80>>i;

                        DELAY_MS(N); 

                                }

                RR=1;GG=0;BB=1;//绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 1<<i;

                        DELAY_MS(N); 

                                }

                

                for(i=0;i<8;i++){   

                        P3 = 0x80>>i;

                        DELAY_MS(N); 

                                }

                RR=1;GG=1;BB=0;//蓝灯点亮

                for(i=0;i<8;i++){   

                        P3 = 1<<i;

                        DELAY_MS(N); 

                                }

                

                for(i=0;i<8;i++){   

                        P3 = 0x80>>i;

                        DELAY_MS(N); 

                                }

                RR=0;GG=0;BB=1;//红绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 1<<i;

                        DELAY_MS(N); 

                                }

                

                for(i=0;i<8;i++){   

                        P3 = 0x80>>i;

                        DELAY_MS(N); 

                                }

                RR=0;GG=1;BB=0;//红蓝灯亮

                for(i=0;i<8;i++){   

                        P3 = 1<<i;

                        DELAY_MS(N); 

                                }

                

                for(i=0;i<8;i++){   

                        P3 = 0x80>>i;

                        DELAY_MS(N); 

                                }                        

                

                RR=1;GG=0;BB=0;//蓝绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 1<<i;

                        DELAY_MS(N); 

                                }

                

                for(i=0;i<8;i++){   

                        P3 = 0x80>>i;

                        DELAY_MS(N); 

                                }

                RR=0;GG=0;BB=0;//红蓝绿灯亮

                for(i=0;i<8;i++){   

                        P3 = 1<<i;

                        DELAY_MS(N); 

                                }

                

                for(i=0;i<8;i++){   

                        P3 = 0x80>>i;

                        DELAY_MS(N); 

                                }                                                                                                                                                                                                                               
                                                                                        

        }                                   

}

/************************************END*********************************************************/

复制代码

程序源程序制作

本主题由 admin 执行 审核通过

2.png (613.88
KB, 下载次数: 4)





RGB流水灯程序和原理图PCB图.rar

136.36 KB, 下载次数: 11, 下载积分: 黑币 -5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: