|
STC_IRC15W207S驅(qū)動RGB燈珠,已經(jīng)實現(xiàn)平滑調(diào)色、調(diào)亮度,包含多種顯示模式。
制作出來的實物圖如下:
RGB燈實物.jpg (90.58 KB, 下載次數(shù): 63)
下載附件
2021-7-23 11:06 上傳
電路原理圖如下:
51hei.png (59.97 KB, 下載次數(shù): 77)
下載附件
2021-7-23 16:02 上傳
單片機(jī)源程序如下:- //#include "STC15.H"
- #include "config.h"
- #include "intrins.h"
- #include "eeprom.h"
- #include "UART.h"
- #include "RGB.h"
- //P3M1 = 0x80; // 10 000000 全部設(shè)置為雙向IO口,弱上拉25K
- // P3M0 = 0x80; // 10 000000
- sbit SW2 = P1^0;
- sbit SW1 = P1^1;
- sbit LED = P3^2;
- sbit Key = P3^3;
- unsigned char Flag_New=0;
- unsigned char Key_Count=0;
- #define Key_Count_Max 20
- unsigned int idata Tick_Da=0;
- unsigned int idata Tick_100ms=0;
- // Red Orange Yellow Green Blue Purple
- // 綠色、紅色、藍(lán)色
- unsigned char idata Std_Red[3] = {0 , 255, 0 };
- unsigned char idata Std_Orange[3] = {128, 255, 0 };
- unsigned char idata Std_Yellow[3] = {255, 255, 0 };
- unsigned char idata Std_Green[3] = {255, 0 , 0 };
- unsigned char idata Std_Cyan[3] = {255, 0 , 255};
- unsigned char idata Std_Blue[3] = {0 , 0 , 255};
- unsigned char idata Std_Purple[3] = {0 , 150 , 200};
-
- unsigned char idata Std_Mid[3] = {150, 150, 255};
- unsigned char idata Std_Light[3] = {255, 255, 255};
- unsigned char idata Std_Dark[3] = {0 , 0, 0};
- unsigned char idata Std_Quarter_Light[3] = {65, 65, 65};
- unsigned char idata Std_Half_Light[3] = {127, 127, 127};
- unsigned char idata Std_Low_Light[3] = {2, 2, 2};
- unsigned char idata Std_Low_R[3] = {0, 2, 0};
- unsigned char idata Std_Low_G[3] = {2, 0, 0};
- unsigned char idata Std_Low_B[3] = {0, 0, 2};
- // 13個LED
- unsigned char LED_[13][3]={0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0};
- unsigned char Data_Now[3]= {0,0,0};
- unsigned char Data_Bef[3]= {0,0,0};
- unsigned char Boom_Now[3]= {0,0,0};
- unsigned char Boom_Bef[3]= {0,0,0};
- unsigned char Ts =0;
-
- void delay_ms(unsigned char ms);
- void DataInit(void);
- //========================================================================
- // 函數(shù): void delay_ms(unsigned char ms)
- // 描述: 延時函數(shù)。
- // 參數(shù): ms,要延時的ms數(shù), 這里只支持1~255ms. 自動適應(yīng)主時鐘.
- // 返回: none.
- // 版本: VER1.0
- // 日期: 2013-4-1
- // 備注:
- //========================================================================
- void delay_ms(unsigned int ms){
-
- unsigned int i;
- do{
- i = 2040 ;
- while(--i) ;
- }
- while(--ms);
- }
- // ***************************************************************
- // ** Function name: DataInit(void)
- // ** Descriptions: 數(shù)據(jù)初始化,從EEPROM讀取默認(rèn)值
- // ** input parameters: 無
- // ** output parameters: 無
- // ** Returned value: 無
- // ***************************************************************
- void DataInit(void) {
- // IapProgramByte(IAP_ADDRESS+EPM_D,0x00);
- Key_Count=IapReadByte(IAP_ADDRESS+EPM_A);
- if(Key_Count>=Key_Count_Max){
- Key_Count=0;
- }
- }
- /**********************************************************************
- ** Function name: RGB_Light()
- ** Descriptions:
- ** input parameters: 無
- ** output parameters: 無
- ** Returned value: 無
- **********************************************************************/
- void Rainbow(unsigned char Tmp_Rd){
-
- unsigned char Tb;
- unsigned char A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12;
-
-
- // **********************************************************
- // ** Descriptions: 選擇
- // **********************************************************
- switch( Ts ){
- case 0: { A0=0;A1=1;A2=2;A3=3;A4=4;A5=5;A6=6;A7=7;A8=8;A9=9;A10=10;A11=11;A12=12; } break;
- case 1: { A0=1;A1=2;A2=3;A3=4;A4=5;A5=6;A6=7;A7=8;A8=9;A9=10;A10=11;A11=12;A12=0; } break;
- case 2: { A0=2;A1=3;A2=4;A3=5;A4=6;A5=7;A6=8;A7=9;A8=10;A9=11;A10=12;A11=0;A12=1; } break;
- case 3: { A0=3;A1=4;A2=5;A3=6;A4=7;A5=8;A6=9;A7=10;A8=11;A9=12;A10=0;A11=1;A12=2; } break;
- case 4: { A0=4;A1=5;A2=6;A3=7;A4=8;A5=9;A6=10;A7=11;A8=12;A9=0;A10=1;A11=2;A12=3; } break;
- case 5: { A0=5;A1=6;A2=7;A3=8;A4=9;A5=10;A6=11;A7=12;A8=0;A9=1;A10=2;A11=3;A12=4; } break;
- case 6: { A0=6;A1=7;A2=8;A3=9;A4=10;A5=11;A6=12;A7=0;A8=1;A9=2;A10=3;A11=4;A12=5; } break;
- case 7: { A0=7;A1=8;A2=9;A3=10;A4=11;A5=12;A6=0;A7=1;A8=2;A9=3;A10=4;A11=5;A12=6; } break;
-
- default:{ A0=0;A1=1;A2=2;A3=3;A4=4;A5=5;A6=6;A7=7;A8=0;A9=1;A10=2;A11=3;A12=4; } break;
- } // end of switch
-
-
- LED_[A0][0]=Std_Red[0]; LED_[A0][1]=Std_Red[1]; LED_[A0][2]=Std_Red[2];
- LED_[A1][0]=Std_Orange[0];LED_[A1][1]=Std_Orange[1];LED_[A1][2]=Std_Orange[2];
- LED_[A2][0]=Std_Yellow[0];LED_[A2][1]=Std_Yellow[1];LED_[A2][2]=Std_Yellow[2];
- LED_[A3][0]=Std_Green[0] ;LED_[A3][1]=Std_Green[1] ;LED_[A3][2]=Std_Green[2] ;
- LED_[A4][0]=Std_Cyan[0] ;LED_[A4][1]=Std_Cyan[1] ;LED_[A4][2]=Std_Cyan[2] ;
- LED_[A5][0]=Std_Blue[0] ;LED_[A5][1]=Std_Blue[1] ;LED_[A5][2]=Std_Blue[2] ;
- LED_[A6][0]=Std_Purple[0];LED_[A6][1]=Std_Purple[1];LED_[A6][2]=Std_Purple[2];
- LED_[A7][0]=0xF0; LED_[A7][1]=0xF0; LED_[A7][2]=0xF0 ;
-
- LED_[A8][0]=Std_Red[0]; LED_[A8][1]=Std_Red[1]; LED_[A8][2]=Std_Red[2];
- LED_[A9][0]=Std_Orange[0]; LED_[A9][1]=Std_Orange[1]; LED_[A9][2]=Std_Orange[2];
- LED_[A10][0]=Std_Yellow[0]; LED_[A10][1]=Std_Yellow[1]; LED_[A10][2]=Std_Yellow[2];
- LED_[A11][0]=Std_Green[0] ; LED_[A11][1]=Std_Green[1] ; LED_[A11][2]=Std_Green[2] ;
- LED_[A12][0]=Std_Cyan[0] ; LED_[A12][1]=Std_Cyan[1] ; LED_[A12][2]=Std_Cyan[2] ;
-
-
-
- for(Tb=0;Tb<RGB_Num;Tb++){
- RGB_Send_24b(LED_[Tb][0],LED_[Tb][1],LED_[Tb][2]);
- }
- RGB_Reset();
- if(Tmp_Rd==1){
- Ts++;
- if(Ts>=8) Ts=0;
- }
- delay_ms(Time_Rb);
- delay_ms(Time_Rb);
- delay_ms(Time_Rb);
- }
- /**********************************************************************
- ** Function name: Boom(unsigned char Tmp_Rd)
- ** Descriptions:
- ** input parameters: 無
- ** output parameters: 無
- ** Returned value: 無
- **********************************************************************/
- void Boom(unsigned char Tb){
-
- unsigned char Tc;
-
- switch( Tb ){
-
-
- // **********************************************************
- // ** Descriptions: Light
- // **********************************************************
-
- case 0: {
- if((Boom_Bef[0]==Std_Low_Light[0])&&(Boom_Bef[1]==Std_Low_Light[1])&&(Boom_Bef[2]==Std_Low_Light[2])){
- Boom_Now[0]++; Boom_Now[1]++; Boom_Now[2]++;
- if((Boom_Now[0]==Std_Light[0])&&(Boom_Now[1]==Std_Light[1])&&(Boom_Now[2]==Std_Light[2])){
- Boom_Bef[0]=Std_Light[0];Boom_Bef[1]=Std_Light[1];Boom_Bef[2]=Std_Light[2];
- delay_ms(Time_Hold_Lt);
- }
- delay_ms(Time_Boom_Lt);
- }
- else{
- if((Boom_Bef[0]==Std_Light[0])&&(Boom_Bef[1]==Std_Light[1])&&(Boom_Bef[2]==Std_Light[2])){
- Boom_Now[0]--; Boom_Now[1]--; Boom_Now[2]--;
- if((Boom_Now[0]==Std_Low_Light[0])&&(Boom_Now[1]==Std_Low_Light[1])&&(Boom_Now[2]==Std_Low_Light[2])){
- Boom_Bef[0]=Std_Low_Light[0];Boom_Bef[1]=Std_Low_Light[1];Boom_Bef[2]=Std_Low_Light[2];
- delay_ms(Time_Hold_Dk);
- }
- delay_ms(Time_Boom_Dk);
- }
- else{
- Boom_Bef[0]=Std_Low_Light[0];Boom_Bef[1]=Std_Low_Light[1];Boom_Bef[2]=Std_Low_Light[2];
- }
- }
- } break;
-
-
- // **********************************************************
- // ** Descriptions: R Std_Low_R[3] = {0, 2, 0};
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
全部代碼51hei附件下載:
STC_IRC15W207S驅(qū)動RGB燈珠.7z
(227.92 KB, 下載次數(shù): 77)
2021-7-23 16:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|