久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4260|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STC單片機(jī)IRC15W207S驅(qū)動RGB燈珠原理圖與源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:699990 發(fā)表于 2021-7-23 11:11 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
STC_IRC15W207S驅(qū)動RGB燈珠,已經(jīng)實現(xiàn)平滑調(diào)色、調(diào)亮度,包含多種顯示模式。
制作出來的實物圖如下:


電路原理圖如下:


單片機(jī)源程序如下:
  1. //#include "STC15.H"
  2. #include        "config.h"
  3. #include "intrins.h"
  4. #include "eeprom.h"
  5. #include "UART.h"
  6. #include "RGB.h"

  7. //P3M1  = 0x80;    //  10 000000   全部設(shè)置為雙向IO口,弱上拉25K
  8. // P3M0  = 0x80;    //  10 000000


  9. sbit     SW2 =  P1^0;
  10. sbit     SW1 =  P1^1;
  11. sbit     LED =  P3^2;
  12. sbit     Key =  P3^3;

  13. unsigned char Flag_New=0;
  14. unsigned char Key_Count=0;
  15. #define  Key_Count_Max 20


  16. unsigned int idata Tick_Da=0;
  17. unsigned int idata Tick_100ms=0;

  18. // Red Orange Yellow Green Blue Purple   
  19. // 綠色、紅色、藍(lán)色

  20. unsigned char idata   Std_Red[3]    = {0  , 255, 0  };
  21. unsigned char idata  Std_Orange[3] = {128, 255, 0  };
  22. unsigned char idata  Std_Yellow[3] = {255, 255, 0  };
  23. unsigned char idata   Std_Green[3]  = {255, 0  , 0  };
  24. unsigned char idata   Std_Cyan[3]   = {255, 0  , 255};
  25. unsigned char idata Std_Blue[3]   = {0  , 0  , 255};
  26. unsigned char idata Std_Purple[3] = {0 , 150 , 200};

  27. unsigned char idata Std_Mid[3]    = {150, 150, 255};
  28. unsigned char idata Std_Light[3]  = {255, 255, 255};
  29. unsigned char idata Std_Dark[3]   = {0  , 0,     0};
  30. unsigned char idata Std_Quarter_Light[3]  = {65, 65, 65};
  31. unsigned char idata Std_Half_Light[3]  = {127, 127, 127};
  32. unsigned char idata Std_Low_Light[3]  = {2, 2, 2};
  33. unsigned char idata Std_Low_R[3]  = {0, 2, 0};
  34. unsigned char idata Std_Low_G[3]  = {2, 0, 0};
  35. unsigned char idata Std_Low_B[3]  = {0, 0, 2};
  36.                                     // 13個LED
  37. unsigned char LED_[13][3]={0,0,0,0,0,0,0,0,0,0,
  38.                           0,0,0,0,0,0,0,0,0,0,
  39.                           0,0,0,0,0,0,0,0,0,0,
  40.                           0,0,0,0,0,0,0,0,0};

  41. unsigned char  Data_Now[3]= {0,0,0};
  42. unsigned char  Data_Bef[3]= {0,0,0};

  43. unsigned char  Boom_Now[3]= {0,0,0};
  44. unsigned char  Boom_Bef[3]= {0,0,0};


  45. unsigned char Ts =0;
  46.   

  47. void  delay_ms(unsigned char ms);
  48. void DataInit(void);



  49. //========================================================================
  50. // 函數(shù): void  delay_ms(unsigned char ms)
  51. // 描述: 延時函數(shù)。
  52. // 參數(shù): ms,要延時的ms數(shù), 這里只支持1~255ms. 自動適應(yīng)主時鐘.
  53. // 返回: none.
  54. // 版本: VER1.0
  55. // 日期: 2013-4-1
  56. // 備注:
  57. //========================================================================
  58. void  delay_ms(unsigned int ms){
  59.      
  60.     unsigned int i;
  61.           do{
  62.               i = 2040 ;
  63.                     while(--i)        ;   
  64.     }
  65.                 while(--ms);
  66. }

  67. // ***************************************************************
  68. // ** Function name:   DataInit(void)
  69. // ** Descriptions:    數(shù)據(jù)初始化,從EEPROM讀取默認(rèn)值
  70. // ** input parameters:  無
  71. // ** output parameters: 無
  72. // ** Returned value:    無
  73. // ***************************************************************

  74. void DataInit(void) {

  75. //        IapProgramByte(IAP_ADDRESS+EPM_D,0x00);
  76.         Key_Count=IapReadByte(IAP_ADDRESS+EPM_A);       
  77.         if(Key_Count>=Key_Count_Max){       
  78.                 Key_Count=0;                               
  79.         }
  80. }


  81. /**********************************************************************
  82. ** Function name:     RGB_Light()
  83. ** Descriptions:      
  84. ** input parameters:    無
  85. ** output parameters:   無
  86. ** Returned value:      無
  87. **********************************************************************/
  88. void Rainbow(unsigned char Tmp_Rd){       
  89.          
  90.           unsigned char Tb;
  91.           unsigned char A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12;
  92.                
  93.                
  94.                 // **********************************************************      
  95.     // ** Descriptions: 選擇
  96.     // **********************************************************           
  97.     switch( Ts ){   
  98.         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;
  99.         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;      
  100.         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;  
  101.         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;  
  102.         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;
  103.         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;      
  104.         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;  
  105.         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;
  106.      
  107.         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;            
  108.     }                                    // end of switch   
  109.                
  110.           
  111.     LED_[A0][0]=Std_Red[0];   LED_[A0][1]=Std_Red[1];   LED_[A0][2]=Std_Red[2];
  112.                 LED_[A1][0]=Std_Orange[0];LED_[A1][1]=Std_Orange[1];LED_[A1][2]=Std_Orange[2];
  113.                 LED_[A2][0]=Std_Yellow[0];LED_[A2][1]=Std_Yellow[1];LED_[A2][2]=Std_Yellow[2];
  114.                 LED_[A3][0]=Std_Green[0] ;LED_[A3][1]=Std_Green[1] ;LED_[A3][2]=Std_Green[2] ;       
  115.                 LED_[A4][0]=Std_Cyan[0]  ;LED_[A4][1]=Std_Cyan[1]  ;LED_[A4][2]=Std_Cyan[2]  ;
  116.                 LED_[A5][0]=Std_Blue[0]  ;LED_[A5][1]=Std_Blue[1]  ;LED_[A5][2]=Std_Blue[2]  ;
  117.                 LED_[A6][0]=Std_Purple[0];LED_[A6][1]=Std_Purple[1];LED_[A6][2]=Std_Purple[2];               
  118.                 LED_[A7][0]=0xF0;         LED_[A7][1]=0xF0;         LED_[A7][2]=0xF0         ;       
  119.    
  120.                 LED_[A8][0]=Std_Red[0];     LED_[A8][1]=Std_Red[1];     LED_[A8][2]=Std_Red[2];
  121.                 LED_[A9][0]=Std_Orange[0];  LED_[A9][1]=Std_Orange[1];  LED_[A9][2]=Std_Orange[2];
  122.                 LED_[A10][0]=Std_Yellow[0]; LED_[A10][1]=Std_Yellow[1]; LED_[A10][2]=Std_Yellow[2];
  123.                 LED_[A11][0]=Std_Green[0] ; LED_[A11][1]=Std_Green[1] ; LED_[A11][2]=Std_Green[2] ;       
  124.                 LED_[A12][0]=Std_Cyan[0]  ; LED_[A12][1]=Std_Cyan[1]  ; LED_[A12][2]=Std_Cyan[2]  ;
  125.                
  126.                
  127.   
  128.                 for(Tb=0;Tb<RGB_Num;Tb++){
  129.                     RGB_Send_24b(LED_[Tb][0],LED_[Tb][1],LED_[Tb][2]);
  130.                 }       
  131.     RGB_Reset();

  132.     if(Tmp_Rd==1){
  133.                           Ts++;
  134.                     if(Ts>=8)  Ts=0;               
  135.                 }

  136.     delay_ms(Time_Rb);
  137.                 delay_ms(Time_Rb);
  138.                 delay_ms(Time_Rb);

  139. }



  140. /**********************************************************************
  141. ** Function name:     Boom(unsigned char Tmp_Rd)
  142. ** Descriptions:      
  143. ** input parameters:    無
  144. ** output parameters:   無
  145. ** Returned value:      無
  146. **********************************************************************/
  147. void Boom(unsigned char Tb){       
  148.          
  149.         unsigned char Tc;       
  150.            
  151.         switch( Tb ){  
  152.                
  153.                
  154.                 // **********************************************************      
  155.     // ** Descriptions: Light
  156.     // **********************************************************               
  157.                
  158.                 case 0: {        
  159.                         if((Boom_Bef[0]==Std_Low_Light[0])&&(Boom_Bef[1]==Std_Low_Light[1])&&(Boom_Bef[2]==Std_Low_Light[2])){       
  160.                                 Boom_Now[0]++;        Boom_Now[1]++;        Boom_Now[2]++;                  
  161.                                 if((Boom_Now[0]==Std_Light[0])&&(Boom_Now[1]==Std_Light[1])&&(Boom_Now[2]==Std_Light[2])){       
  162.                                         Boom_Bef[0]=Std_Light[0];Boom_Bef[1]=Std_Light[1];Boom_Bef[2]=Std_Light[2];
  163.                                         delay_ms(Time_Hold_Lt);
  164.                                 }       
  165.                                 delay_ms(Time_Boom_Lt);
  166.                         }       
  167.                         else{               
  168.                                 if((Boom_Bef[0]==Std_Light[0])&&(Boom_Bef[1]==Std_Light[1])&&(Boom_Bef[2]==Std_Light[2])){       
  169.                                         Boom_Now[0]--;        Boom_Now[1]--;        Boom_Now[2]--;                  
  170.                                         if((Boom_Now[0]==Std_Low_Light[0])&&(Boom_Now[1]==Std_Low_Light[1])&&(Boom_Now[2]==Std_Low_Light[2])){       
  171.                                                 Boom_Bef[0]=Std_Low_Light[0];Boom_Bef[1]=Std_Low_Light[1];Boom_Bef[2]=Std_Low_Light[2];
  172.                                                 delay_ms(Time_Hold_Dk);
  173.                                         }       
  174.                                         delay_ms(Time_Boom_Dk);
  175.                                 }
  176.                                 else{       
  177.                                         Boom_Bef[0]=Std_Low_Light[0];Boom_Bef[1]=Std_Low_Light[1];Boom_Bef[2]=Std_Low_Light[2];
  178.                                 }
  179.                         }
  180.                 } break;
  181.                
  182.        
  183.                 // **********************************************************      
  184.     // ** Descriptions: R  Std_Low_R[3]  = {0, 2, 0};
  185. ……………………

  186. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

全部代碼51hei附件下載:
STC_IRC15W207S驅(qū)動RGB燈珠.7z (227.92 KB, 下載次數(shù): 77)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:986639 發(fā)表于 2021-12-1 04:58 | 只看該作者
您好, 您把keil用了嗎? 您如何選擇設(shè)備在鍵入keil時選擇設(shè)備?
設(shè)備分類(device database)僅有15W204s,對存儲器容量限制。我想要選擇stc15w207s.
幫我教一下。謝謝
回復(fù)

使用道具 舉報

板凳
ID:986639 發(fā)表于 2021-12-1 04:58 | 只看該作者
您如何選擇設(shè)備在鍵入keil時選擇設(shè)備?
設(shè)備分類僅有15W204s,對存儲器容量限制。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美亚洲 | 久久精品国产亚洲夜色av网站 | 久久精品成人 | 夜夜骚 | 精品久久成人 | 久久www免费视频 | 中文字幕乱码亚洲精品一区 | 久久国产精品亚洲 | 亚洲一区二区三区在线视频 | 91综合在线观看 | 国产免费人成xvideos视频 | 欧美日韩亚洲一区 | 亚洲免费精品 | 91麻豆精品国产91久久久久久 | 国产精品美女久久久久久久网站 | 久久久久久91 | 中文字幕亚洲精品 | 国产精品高清在线 | 国产精品高潮呻吟久久 | 欧美日韩综合一区 | 亚洲国产高清高潮精品美女 | 97色伦网 | 国产精品久久久久久妇女 | 亚洲国产精品视频 | 男女在线免费观看 | 颜色网站在线观看 | 97精品国产 | 91色视频在线观看 | www.亚洲精品 | 五月综合激情网 | 超碰精品在线观看 | www.99re| 国产精品女人久久久 | 国产精品永久免费 | 91在线观看 | 国产精品久久久久久久久久久久冷 | 亚洲精品黄色 | 久久久91精品国产一区二区精品 | 国产一区91在线 | 国产成人精品一区二区三区在线 | 欧美成人精品欧美一级 |