標(biāo)題: WS2811燈光單片機(jī)程序 實(shí)現(xiàn)2片TM1812幻彩變化 修改變量IC可修改TM1812數(shù)量 [打印本頁(yè)]

作者: wanli    時(shí)間: 2017-3-14 10:38
標(biāo)題: WS2811燈光單片機(jī)程序 實(shí)現(xiàn)2片TM1812幻彩變化 修改變量IC可修改TM1812數(shù)量
WS2811芯片燈光控制程序分享給大家

源程序:
  1. /******************************************************************************
  2. //*版權(quán)信息:深圳市天微電子
  3. //*文 件 名:TM1812-V1.0
  4. //*當(dāng)前版本:V1.0
  5. //*MCU 型號(hào):STC15W104
  6. //*開(kāi)發(fā)環(huán)境:Keil uVision4
  7. //*晶震頻率:33MHZ(內(nèi)部時(shí)鐘)      
  8. //*完成日期:2015-07-10
  9. //*程序功能:1.該程序可實(shí)現(xiàn)2片TM1812幻彩變化。
  10. //           2.修改變量IC可修改TM1812數(shù)量。
  11. //*免責(zé)聲明:1.此程序?yàn)門(mén)M1812驅(qū)動(dòng)LED點(diǎn)亮演示程序,僅作參考之用。
  12. //           2.如有直接使用本例程程序造成經(jīng)濟(jì)損失的,本公司不承擔(dān)任何責(zé)任。            
  13. /*******************************************************************************/
  14. #include <reg52.h>                //MCU頭文件
  15. #include "intrins.h"                //包含nop指令頭文件

  16. #define nop  _nop_();   
  17.                    //宏定義
  18. /********************************定義控制端口***********************************/
  19. sbit DO=P3^3;                    //定義信號(hào)輸出DO

  20. /**********************************定義變量*************************************/
  21. unsigned int IC=2;                          //控制TM1812個(gè)數(shù)
  22. unsigned int LED_PX;                        //像素點(diǎn)數(shù)
  23. unsigned char PWM=255;                      //TM1812灰度數(shù)據(jù)
  24. unsigned char Rda,Gda,Bda;                  //R、G、B灰度數(shù)據(jù)
  25. unsigned char bdata LED_data;               //可位操作的數(shù)據(jù)發(fā)送暫存變量聲明
  26. sbit bit0=LED_data^0;                        //被發(fā)送的數(shù)據(jù)各位定義
  27. sbit bit1=LED_data^1;
  28. sbit bit2=LED_data^2;
  29. sbit bit3=LED_data^3;
  30. sbit bit4=LED_data^4;
  31. sbit bit5=LED_data^5;
  32. sbit bit6=LED_data^6;
  33. sbit bit7=LED_data^7;
  34. bit flag=0;                                 //定義一個(gè)標(biāo)志位

  35. /**********************************延時(shí)函數(shù)*************************************/
  36. void delay(unsigned int n)                  //n=1,延時(shí)500us
  37. {
  38.     unsigned int i;
  39.     while(n--)
  40.         for(i=0;i<860;i++);
  41. }

  42. /********************發(fā)送0碼函數(shù),高電平400ns,周期1.25us************************/
  43. void send_data_0()   
  44. {
  45.      DO=1;
  46.      nop;nop;nop;nop;nop;
  47.      nop;nop;nop;nop;nop;      
  48.      DO=0;
  49.      nop;nop;nop;nop;nop;nop;nop;
  50.      nop;nop;nop;nop;nop;nop;nop;
  51. }

  52. /*******************發(fā)送1碼函數(shù),高電平800ns,周期1.25us*************************/
  53. void send_data_1()   
  54. {
  55.      DO=1;
  56.      nop;nop;nop;nop;nop;nop;
  57.      nop;nop;nop;nop;nop;
  58.      nop;nop;nop;nop;nop;nop;
  59.      nop;nop;nop;nop;nop;
  60.      DO=0;   
  61. }

  62. /***********************發(fā)送1個(gè)字節(jié)數(shù)據(jù),高位先發(fā)*******************************/
  63. void send_data(unsigned char DATA)        
  64. {
  65.     LED_data=DATA;                          
  66.     if(bit7)  send_data_1();  else send_data_0();
  67.     if(bit6)  send_data_1();  else send_data_0();
  68.     if(bit5)  send_data_1();  else send_data_0();
  69.     if(bit4)  send_data_1();  else send_data_0();
  70.     if(bit3)  send_data_1();  else send_data_0();
  71.     if(bit2)  send_data_1();  else send_data_0();
  72.     if(bit1)  send_data_1();  else send_data_0();
  73.     if(bit0)  send_data_1();  else send_data_0();
  74. }
  75. /******************************發(fā)送1幀數(shù)據(jù)*************************************/
  76. void send_px()
  77. {
  78.     unsigned int i;
  79.     for(i=0;i<LED_PX;i++)
  80.     {
  81.         send_data(Rda);             //發(fā)送R灰度數(shù)據(jù)
  82.         send_data(Gda);             //發(fā)送G灰度數(shù)據(jù)
  83.         send_data(Bda);             //發(fā)送B灰度數(shù)據(jù)
  84.     }
  85. }
  86. /*===============================主函數(shù)=======================================*/
  87. void main()
  88. {
  89.     unsigned char i;
  90.     LED_PX=3*IC;                        //1個(gè)TM1812等于4個(gè)像素
  91.     Rda=Gda=Bda=0;                      //R、G、B灰度數(shù)據(jù)復(fù)位清零
  92.     while(1)
  93.     {
  94.         for(i=0;i<PWM;i++)          //紅色漸亮  
  95.         {
  96.             Rda=i;              //灰度計(jì)算
  97.             send_px();          //發(fā)送灰度數(shù)據(jù)
  98.             delay(50);          //復(fù)位延時(shí)
  99.         }
  100.         flag=1;                     //標(biāo)志位置位
  101.         while(flag)                 //標(biāo)志位置位后循環(huán)函數(shù)
  102.         {
  103.             for(i=0;i<PWM;i++)  //紅色漸滅,綠色漸亮
  104.             {
  105.                 Gda=i;
  106.                 Rda=PWM-i;  //灰度計(jì)算
  107.                 send_px();  //發(fā)送灰度數(shù)據(jù)
  108.                 delay(50);  //復(fù)位延時(shí)
  109.             }
  110.             for(i=0;i<PWM;i++)  //綠色漸滅,藍(lán)色漸亮
  111.             {
  112.                 Bda=i;           
  113.                 Gda=PWM-i;  //灰度計(jì)算
  114.                 send_px();  //發(fā)送灰度數(shù)據(jù)
  115.                 delay(50);  //復(fù)位延時(shí)
  116.             }
  117.             for(i=0;i<PWM;i++)  //藍(lán)色漸滅,紅色漸亮
  118.             {
  119.                 Rda=i;
  120.                 Bda=PWM-i;  //灰度計(jì)算
  121.                 send_px();  //發(fā)送灰度數(shù)據(jù)
  122.                 delay(50);  //復(fù)位延時(shí)
  123.             }
  124.         }
  125.     }
  126. }
  127. /*================================結(jié)束==========================================*/
復(fù)制代碼

51單片機(jī)22路全彩控制器:http://www.torrancerestoration.com/bbs/dpj-53297-1.html

作者: 流浪乞丐    時(shí)間: 2017-10-15 02:45
謝謝樓主,下載來(lái)參考下。
作者: ivanwm    時(shí)間: 2017-10-26 16:06
好經(jīng)典的程序
作者: veryhoo123    時(shí)間: 2017-11-13 19:42
這個(gè)非常給力,代碼寫(xiě)得很清晰
作者: veryhoo123    時(shí)間: 2017-11-13 19:44
對(duì)于做燈的人來(lái)說(shuō),這個(gè)東西真的很有幫助,感謝分享
作者: 289466080    時(shí)間: 2018-2-6 14:43
我以為有22種狀態(tài),把剩下的發(fā)給大家參考
                                Rda=i;
                                Bda=PWM-i;  //灰度計(jì)算
                                send_px();  //發(fā)送灰度數(shù)據(jù)
                                delay(50);  //復(fù)位延時(shí)
                        }
                }
        }
}
作者: xiaosong0080    時(shí)間: 2018-4-25 22:38
要用什么軟件打開(kāi),keil 打不開(kāi)的
作者: cobon    時(shí)間: 2018-11-23 22:39

謝謝樓主,下載來(lái)參考下。
作者: xiexugang    時(shí)間: 2019-4-7 03:14
51單片機(jī)能驅(qū)動(dòng)WS2811,很好很實(shí)用.
作者: JOJO177    時(shí)間: 2019-6-28 02:09
很好,很有幫助
作者: xiexugang    時(shí)間: 2019-11-11 11:00
這個(gè)程序不錯(cuò),好玩
作者: 雪玉寐影    時(shí)間: 2022-1-7 15:27
這個(gè)不錯(cuò),直接驅(qū)動(dòng)就行了!
作者: 正在緩沖    時(shí)間: 2022-3-10 09:22
唉,編程考運(yùn)氣的我只能東抄抄西改改
作者: auxccc    時(shí)間: 2022-3-10 09:57
什么說(shuō)明也沒(méi)有,我們能明白什么呢?,22路是指什么?.WS2811芯片是個(gè)什么芯片?
作者: liu2454004961    時(shí)間: 2022-4-7 15:46
這是TM1812芯片,WS2811的時(shí)序不同
作者: 川蜀浪子    時(shí)間: 2022-4-23 11:06
大神怎么只是發(fā)個(gè)原廠的樣品程序呀,22種狀態(tài)呢,怎么沒(méi)有,讓我又減了5黑幣,本來(lái)就不多。可以發(fā)一下那22種狀態(tài)的嗎?想要流水效果的,從左向右、從右向左、中間向兩邊的。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1