1. 程式人生 > >開源製作最炫RGB全綵51流水燈(原理圖+PCB圖+C程式)

開源製作最炫RGB全綵51流水燈(原理圖+PCB圖+C程式)

  1. /*********************************************************************************************
  2. 編寫:劉海龍
  3. 程式名:RGB8位彩色流水燈程式
  4. 硬體支援:所有的51微控制器均可驅動(晶振頻率隨意)
  5. 元件:5050RGB燈珠8顆+PNP三極體8個+微控制器+電阻8個(470R-4.7K均可)+電阻2個(220R左右)+電阻1個(330R左右)
  6. /*********************************************************************************************/
  7. #include <REG51.h> //微控制器標頭檔案
  8. #include <intrins.h>        //51基本運算(包括_nop_空函式)
  9. sbit BB=P1^0;//blue藍燈
  10. sbit RR=P1^1;//red紅燈
  11. sbit GG=P1^2;//green綠燈 
  12. unsigned int N=100;//定義每個燈亮的時間、單位為毫秒、修改此值可改變流動速度
  13. /*********************************************************************************************
  14. 函式名:毫秒級CPU延時函式
  15. /*********************************************************************************************/
  16. void DELAY_MS (unsigned int a){
  17.         unsigned int i;
  18.         while( a-- != 0){
  19.                 for(i = 0; i < 630; i++);
  20.         }
  21. }
  22. /*********************************************************************************************/
  23. /*********************************************************************************************/
  24. void main (void)
  25. {        
  26.         unsigned char i;                
  27.     while(1){
  28. /***************各種顏色燈單個點亮左右流動**************************/
  29.                 RR=0;GG=1;BB=1;//紅燈亮
  30.                 for(i=0;i<8;i++){ //低位向高位流動  
  31.                         P3 = ~(1<<i);
  32.                         DELAY_MS(N); 
  33.                                 }                
  34.                 for(i=0;i<8;i++){//高位向低位流動   
  35.                         P3 = ~(1<<7-i);
  36.                         DELAY_MS(N); 
  37.                                 }                
  38.                 RR=1;GG=0;BB=1;//綠燈亮
  39.                 for(i=0;i<8;i++){ //低位向高位流動  
  40.                         P3 = ~(1<<i);
  41.                         DELAY_MS(N); 
  42.                                 }                
  43.                 for(i=0;i<8;i++){//高位向低位流動   
  44.                         P3 = ~(1<<7-i);
  45.                         DELAY_MS(N); 
  46.                                 }
  47.                 RR=1;GG=1;BB=0;//藍燈點亮
  48.                 for(i=0;i<8;i++){   
  49.                         P3 = ~(1<<i);
  50.                         DELAY_MS(N); 
  51.                                 }                
  52.                 for(i=0;i<8;i++){   
  53.                         P3 = ~(1<<7-i);
  54.                         DELAY_MS(N); 
  55.                                 }
  56.                 RR=0;GG=0;BB=1;//紅綠燈亮(黃色光)
  57.                 for(i=0;i<8;i++){   
  58.                         P3 = ~(1<<i);
  59.                         DELAY_MS(N); 
  60.                                 }                
  61.                 for(i=0;i<8;i++){   
  62.                         P3 = ~(1<<7-i);
  63.                         DELAY_MS(N); 
  64.                                 }                
  65.                 RR=0;GG=1;BB=0;//紅藍燈亮(粉紅光)
  66.                 for(i=0;i<8;i++){   
  67.                         P3 = ~(1<<i);
  68.                         DELAY_MS(N); 
  69.                                 }                
  70.                 for(i=0;i<8;i++){   
  71.                         P3 = ~(1<<7-i);
  72.                         DELAY_MS(N); 
  73.                                 }
  74.                 RR=1;GG=0;BB=0;//藍綠燈亮(青色光)
  75.                 for(i=0;i<8;i++){   
  76.                         P3 = ~(1<<i);
  77.                         DELAY_MS(N); 
  78.                                 }                
  79.                 for(i=0;i<8;i++){   
  80.                         P3 = ~(1<<7-i);
  81.                         DELAY_MS(N); 
  82.                                 }
  83.                 RR=0;GG=0;BB=0;//紅藍綠燈亮(白色光)
  84.                 for(i=0;i<8;i++){   
  85.                         P3 = ~(1<<i);
  86.                         DELAY_MS(N); 
  87.                                 }                
  88.                 for(i=0;i<8;i++){   
  89.                         P3 = ~(1<<7-i);
  90.                         DELAY_MS(N); 
  91.                                 }                                                                        
  92. /********各種顏色燈逐個點亮左右流動****************************/
  93.                 RR=0;GG=1;BB=1;//紅燈亮
  94.                 for(i=0;i<8;i++){   
  95.                         P3 = 0xfe<<i;
  96.                         DELAY_MS(N); 
  97.                                 }
  98.                 for(i=0;i<8;i++){   
  99.                         P3 = 0x7f>>i;
  100.                         DELAY_MS(N); 
  101.                                 }
  102.                 RR=1;GG=0;BB=1;//綠燈亮
  103.                 for(i=0;i<8;i++){   
  104.                         P3 = 0xfe<<i;
  105.                         DELAY_MS(N); 
  106.                                 }
  107.                 for(i=0;i<8;i++){   
  108.                         P3 = 0x7f>>i;
  109.                         DELAY_MS(N); 
  110.                                 }
  111.                 RR=1;GG=1;BB=0;//藍燈點亮
  112.                 for(i=0;i<8;i++){   
  113.                         P3 = 0xfe<<i;
  114.                         DELAY_MS(N); 
  115.                                 }
  116.                 for(i=0;i<8;i++){   
  117.                         P3 = 0x7f>>i;
  118.                         DELAY_MS(N); 
  119.                                 }
  120.                 RR=0;GG=0;BB=1;//紅綠燈亮
  121.                 for(i=0;i<8;i++){   
  122.                         P3 = 0xfe<<i;
  123.                         DELAY_MS(N); 
  124.                                 }
  125.                 for(i=0;i<8;i++){   
  126.                         P3 = 0x7f>>i;
  127.                         DELAY_MS(N); 
  128.                                 }
  129.                 RR=0;GG=1;BB=0;//紅藍燈亮
  130.                 for(i=0;i<8;i++){   
  131.                         P3 = 0xfe<<i;
  132.                         DELAY_MS(N); 
  133.                                 }
  134.                 for(i=0;i<8;i++){   
  135.                         P3 = 0x7f>>i;
  136.                         DELAY_MS(N); 
  137.                                 }
  138.                 RR=1;GG=0;BB=0;//藍綠燈亮
  139.                 for(i=0;i<8;i++){   
  140.                         P3 = 0xfe<<i;
  141.                         DELAY_MS(N); 
  142.                                 }
  143.                 for(i=0;i<8;i++){   
  144.                         P3 = 0x7f>>i;
  145.                         DELAY_MS(N); 
  146.                                 }
  147.                 RR=0;GG=0;BB=0;//紅藍綠燈亮
  148.                 for(i=0;i<8;i++){   
  149.                         P3 = 0xfe<<i;
  150.                         DELAY_MS(N); 
  151.                                 }
  152.                 for(i=0;i<8;i++){   
  153.                         P3 = 0x7f>>i;
  154.                         DELAY_MS(N); 
  155.                                 }
  156. /********各種顏色燈全部點亮一個熄滅的燈左右流動*************************/
  157.                 RR=0;GG=1;BB=1;//紅燈亮
  158.                 for(i=0;i<8;i++){   
  159.                         P3 = 1<<i;
  160.                         DELAY_MS(N); 
  161.                                 }
  162.                 for(i=0;i<8;i++){   
  163.                         P3 = 0x80>>i;
  164.                         DELAY_MS(N); 
  165.                                 }
  166.                 RR=1;GG=0;BB=1;//綠燈亮
  167.                 for(i=0;i<8;i++){   
  168.                         P3 = 1<<i;
  169.                         DELAY_MS(N); 
  170.                                 }
  171.                 for(i=0;i<8;i++){   
  172.                         P3 = 0x80>>i;
  173.                         DELAY_MS(N); 
  174.                                 }
  175.                 RR=1;GG=1;BB=0;//藍燈點亮
  176.                 for(i=0;i<8;i++){   
  177.                         P3 = 1<<i;
  178.                         DELAY_MS(N); 
  179.                                 }
  180.                 for(i=0;i<8;i++){   
  181.                         P3 = 0x80>>i;
  182.                         DELAY_MS(N); 
  183.                                 }
  184.                 RR=0;GG=0;BB=1;//紅綠燈亮
  185.                 for(i=0;i<8;i++){   
  186.                         P3 = 1<<i;
  187.                         DELAY_MS(N); 
  188.                                 }
  189.                 for(i=0;i<8;i++){   
  190.                         P3 = 0x80>>i;
  191.                         DELAY_MS(N); 
  192.                                 }
  193.                 RR=0;GG=1;BB=0;//紅藍燈亮
  194.                 for(i=0;i<8;i++){   
  195.                         P3 = 1<<i;
  196.                         DELAY_MS(N); 
  197.                                 }
  198.                 for(i=0;i<8;i++){   
  199.                         P3 = 0x80>>i;
  200.                         DELAY_MS(N); 
  201.                                 }                        
  202.                 RR=1;GG=0;BB=0;//藍綠燈亮
  203.                 for(i=0;i<8;i++){   
  204.                         P3 = 1<<i;
  205.                         DELAY_MS(N); 
  206.                                 }
  207.                 for(i=0;i<8;i++){   
  208.                         P3 = 0x80>>i;
  209.                         DELAY_MS(N); 
  210.                                 }
  211.                 RR=0;GG=0;BB=0;//紅藍綠燈亮
  212.                 for(i=0;i<8;i++){   
  213.                         P3 = 1<<i;
  214.                         DELAY_MS(N); 
  215.                                 }
  216.                 for(i=0;i<8;i++){   
  217.                         P3 = 0x80>>i;
  218.                         DELAY_MS(N); 
  219.                                 }                                                                                                                                                                                                                                                                                                                        
  220.         }                                   
  221. }
  222. /************************************END*********************************************************/