開源製作最炫RGB全綵51流水燈(原理圖+PCB圖+C程式)
阿新 • • 發佈:2019-02-20
-
/*********************************************************************************************
-
編寫:劉海龍
-
程式名: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*********************************************************/