RGB流水灯程序和原理图PCB图.rar
时间:10-25 09:56
查看:3743次
下载:162次
简介:
最炫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*********************************************************/