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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27770|回復: 53
打印 上一主題 下一主題
收起左側

WS2812源程序及相關資料(51單片機,stm32,arduino平臺)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:309524 發(fā)表于 2018-4-16 19:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
WS2812資料包(含51單片機,arduino平臺與stm32的各種控制源碼):


WS2812是一個集控制電路與發(fā)光電路于一體的智能外控LED光源。其外型與一個5050LED燈珠相同,每個元件即為一個像素點。像素點內(nèi)部包含了智能數(shù)字接口數(shù)據(jù)鎖存信號整形放大驅(qū)動電路,還包含有高精度的內(nèi)部振蕩器和12V高壓可編程定電流控制部分,有效保證了像素點光的顏色高度一致。數(shù)據(jù)協(xié)議采用單線歸零碼的通訊方式,像素點在上電復位以后,DIN端接受從控制器傳輸過來的數(shù)據(jù),首先送過來的24bit數(shù)據(jù)被第一個像素點提取后,送到像素點內(nèi)部的數(shù)據(jù)鎖存器,剩余的數(shù)據(jù)經(jīng)過內(nèi)部整形處理電路整形放大后通過DO端口開始轉發(fā)輸出給下一個級聯(lián)的像素點,每經(jīng)過一個像素點的傳輸,信號減少24bit。像素點采用自動整形轉發(fā)技術,使得該像素點的級聯(lián)個數(shù)不受信號傳送的限制,僅僅受限信號傳輸速度要求。LED具有低電壓驅(qū)動,環(huán)保節(jié)能,亮度高,散射角度大,一致性好,超低功率,超長壽命等優(yōu)點。將控制電路集成于LED上面,電路變得更加簡單,體積小,安裝更加簡便。

●控制電路與RGB芯片集成在一個5050封裝的元器件中,構成一個完整的外控像素點。
●內(nèi)置信號整形電路,任何一個像素點收到信號后經(jīng)過波形整形再輸出,保證線路波形畸變不會累加。
●內(nèi)置上電復位和掉電復位電路。
●每個像素點的三基色顏色可實現(xiàn)256級亮度顯示,完成16777216種顏色的全真色彩顯示,掃描頻率不低于
400Hz/s。
●串行級聯(lián)接口,能通過一根信號線完成數(shù)據(jù)的接收與解碼。
●任意兩點傳傳輸距離在不超過5米時無需增加任何電路。
●當刷新速率30幀/秒時,低速模式級聯(lián)數(shù)不小于512點,高速模式不小于1024點。
●數(shù)據(jù)發(fā)送速度可達800Kbps。
●光的顏色高度一致,性價比高。

WS2812引腳圖與數(shù)據(jù)手冊(51hei附件可下載)


電路原理圖如下:



源碼:
RGB LED Cycle Test
RGB LED Cycle 七彩切換效果程序
RGB LED Cycle 七彩漸變效果程序
RGB LED Cycle 七彩覆蓋效果程序
RGB LED Cycle 三色循環(huán)效果程序
RGB LED Cycle 三色覆蓋效果程序
RGB LED Cycle 單個紅色旋轉效果程序
RGB LED Cycle 雙色漸變彩帶旋轉效果程序
RGB LED Cycle 紅綠藍三色旋轉效果程序
RGB LED Cycle 紅綠藍三色旋轉效果程序2
WS2812B數(shù)據(jù)驅(qū)動
帶單片機8位全彩流水燈程序模板V1.0
帶單片機8位全彩流水燈程序模板V1.1

stm32
3步打造stm32驅(qū)動的ws2812智能燈.zip
NucleoL496智能燈數(shù)據(jù)點.zip

51單片機源程序如下:
  1. /*----------------------------------------------------------------------------   
  2. * 項目名稱:

  3.      RGB LED驅(qū)動程序

  4. * 功能描述:

  5.      1、將整個數(shù)組的數(shù)據(jù)發(fā)送得到LED進行顯示
  6.          2、從指定像素開始將整個數(shù)組的數(shù)據(jù)發(fā)送到LED顯示
  7.          3、發(fā)送復位信號

  8. * 版權信息:

  9.      (c) 飛翼電子, 2014.

  10. * 歷史版本:
  11.      2014-03-15:
  12.        - 初始版本 V1.0.0;

  13. * 配置說明:
  14.      MCU:             STC15W204S
  15.      晶振:                內(nèi)部晶振:33MHz
  16.      擴展模塊:            -
  17.      軟件:            Keil.C51.V9.01

  18. * 備注:

  19. ------------------------------------------------------------------------------*/   

  20. #include "STC15W.h"
  21. #include <intrins.h>
  22. #include "ws2812.h"

  23. //-------------------------------------------------------------------------------
  24. //子程序名稱:IO_Init(void)
  25. //功能:端口初始化
  26. //-------------------------------------------------------------------------------
  27. void IO_Init(void)
  28. {
  29.         ;
  30. }

  31. //-------------------------------------------------------------------------------
  32. //子程序名稱:ResetDateFlow(void)
  33. //功能:復位,為下一次發(fā)送做準備,
  34. //說明:將DI置位為0后,延時約65us
  35. //-------------------------------------------------------------------------------
  36. void ResetDataFlow(void)
  37. {
  38.         unsigned char i,j;
  39.         DI=0;                                        //DI置為0后,延時50us以上,實現(xiàn)幀復位
  40.         for(i=0;i<15;i++)                //此處33Mhz時延時65us
  41.         {
  42.                 for(j=0;j<20;j++)
  43.                 {
  44.                         ;
  45.                 }
  46.         }
  47. }
  48. //-------------------------------------------------------------------------------
  49. //子程序名稱:SendOnePix(unsigned char *ptr)
  50. //功能:發(fā)送一個像素點的24bit數(shù)據(jù)
  51. //參數(shù):接收的參數(shù)是一個指針,此函數(shù)會將此指針指向的地址的連續(xù)的三個Byte的數(shù)據(jù)發(fā)送
  52. //說明:在主函數(shù)中直接調(diào)用此函數(shù)時,在整個幀發(fā)送開始前需要先執(zhí)行 ResetDataFlow()
  53. //                數(shù)據(jù)是按歸零碼的方式發(fā)送,速率為800KBPS
  54. //-------------------------------------------------------------------------------
  55. void SendOnePix(unsigned char *ptr)
  56. {
  57.         unsigned char i,j;
  58.         unsigned char temp;

  59.         for(j=0;j<3;j++)
  60.         {
  61.                 temp=ptr[j];
  62.                 for(i=0;i<8;i++)
  63.                 {
  64.                         if(temp&0x80)                 //從高位開始發(fā)送
  65.                         {
  66.                                 DI=1;                         //發(fā)送“1”碼
  67.                                 _nop_();                 //不可省略的nop(),延時指定時間作用,晶振頻率33MHz
  68.                                 _nop_();
  69.                                 _nop_();
  70.                                 _nop_();
  71.                                 _nop_();
  72.                                 _nop_();
  73.                                 _nop_();
  74.                                 _nop_();
  75.                                 _nop_();
  76.                                 _nop_();
  77.                                 _nop_();
  78.                                 _nop_();
  79.                                 _nop_();
  80.                                 _nop_();
  81.                                 _nop_();
  82.                                 _nop_();
  83.                                 _nop_();
  84.                                 _nop_();
  85.                                 _nop_();
  86.                                 _nop_();

  87.                                 DI=0;
  88.                                 _nop_();
  89.                                 _nop_();
  90.                                 _nop_();
  91.                                 _nop_();
  92.                                 _nop_();
  93.                                 _nop_();
  94.                                 _nop_();
  95.                                 _nop_();
  96.                                 _nop_();
  97.                                 _nop_();
  98.                                 _nop_();
  99.                                 _nop_();
  100.                                 _nop_();
  101.                                 _nop_();
  102.                                 _nop_();
  103.                         }
  104.                         else                                //發(fā)送“0”碼
  105.                         {
  106.                                 DI=1;
  107.                                 _nop_();
  108.                                 _nop_();
  109.                                 _nop_();
  110.                                 _nop_();
  111.                                 _nop_();
  112.                                 _nop_();
  113.                                 _nop_();

  114.                                 DI=0;
  115.                                 _nop_();
  116.                                 _nop_();
  117.                                 _nop_();
  118.                                 _nop_();
  119.                                 _nop_();
  120.                                 _nop_();
  121.                                 _nop_();
  122.                                 _nop_();
  123.                                 _nop_();
  124.                                 _nop_();
  125.                                 _nop_();
  126.                                 _nop_();
  127.                                 _nop_();
  128.                                 _nop_();
  129.                                 _nop_();
  130.                                 _nop_();
  131.                                 _nop_();
  132.                                 _nop_();
  133.                                 _nop_();
  134.                         }
  135.                         temp=(temp<<1);                 //左移位
  136.                 }
  137.         }
  138. }
  139. //-------------------------------------------------------------------------------
  140. //子程序名稱:SendOneFrame(unsigned char *ptr)
  141. //功能:發(fā)送一幀數(shù)據(jù)(即發(fā)送整個數(shù)組的數(shù)據(jù))
  142. //參數(shù):接收的參數(shù)是一個指針,此函數(shù)會將此指針指向的地址的整個數(shù)組的數(shù)據(jù)發(fā)送
  143. //-------------------------------------------------------------------------------
  144. void SendOneFrame(unsigned char *ptr)
  145. {
  146.         unsigned char k;

  147.         ResetDataFlow();                                 //發(fā)送幀復位信號

  148.         for(k=0;k<SNUM;k++)                                 //發(fā)送一幀數(shù)據(jù),SNUM是板子LED的個數(shù)
  149.         {
  150.                 SendOnePix(&ptr[(3*k)]);
  151.         }

  152.         ResetDataFlow();                                 //發(fā)送幀復位信號
  153. }

  154. //-------------------------------------------------------------------------------
  155. //子程序名稱:SendSameColor(unsigned char *ptr,unsigned char cnt)
  156. //功能:相同顏色的點發(fā)送cnt次
  157. //參數(shù):接收的參數(shù)是一個指針,指向像素點顏色數(shù)組,cnt傳遞發(fā)送個數(shù)
  158. //-------------------------------------------------------------------------------
  159. void SendSameColor(unsigned char *ptr,unsigned char cnt)
  160. {
  161.         unsigned char k;

  162.         ResetDataFlow();                                 //發(fā)送幀復位信號

  163.         for(k=0;k<cnt;k++)                                 //發(fā)送一幀數(shù)據(jù),SNUM是板子LED的個數(shù)
  164.         {
  165.                 SendOnePix(&ptr[0]);
  166.         }

  167.         ResetDataFlow();                                 //發(fā)送幀復位信號
  168. }
  169. //-------------------------------------------------------------------------------
  170. //子程序名稱:SendOneFrameFrom(unsigned char i,unsigned char *ptr)
  171. //功能:從指定的像素點開始發(fā)送一幀數(shù)據(jù)(即發(fā)送整個數(shù)組的數(shù)據(jù))
  172. //參數(shù):接收的參數(shù)是一個指針,此函數(shù)會將此指針指向的地址的整幀數(shù)據(jù)發(fā)送
  173. //                i:把數(shù)組的第0個像素數(shù)據(jù)發(fā)送到第i個像素點(第0個像素是板上標號為01的像素)
  174. //說明:即原本對應第一個像素的數(shù)據(jù)會發(fā)送到第i個像素點(LED)上
  175. //-------------------------------------------------------------------------------
  176. void SendOneFrameFrom(unsigned char i,unsigned char *ptr)
  177. {
  178.         unsigned char k;

  179.         ResetDataFlow();                                 //發(fā)送幀復位信號

  180.            for(k=(SNUM-i);k<SNUM;k++)                 //發(fā)送一幀數(shù)據(jù)
  181.         {
  182.                 SendOnePix(&ptr[(3*k)]);
  183.         }
  184.         for(k=0;k<(SNUM-i);k++)
  185.         {
  186.                 SendOnePix(&ptr[(3*k)]);
  187.         }

  188.         ResetDataFlow();                                 //發(fā)送幀復位信號
  189. }

  190. //-------------------------------------------------------------------------------
  191. //子程序名稱:SendOneFrameSince(unsigned char i,unsigned char *ptr)
  192. //功能:從第i個像素點的數(shù)據(jù)開始發(fā)送一幀數(shù)據(jù)(即發(fā)送整個數(shù)組的數(shù)據(jù))
  193. //參數(shù):接收的參數(shù)是一個指針,此函數(shù)會將此指針指向的地址的整幀數(shù)據(jù)發(fā)送
  194. //                i:把數(shù)組的第i個像素數(shù)據(jù)發(fā)送到第1個像素點
  195. //說明:即原本對應第i像素的數(shù)據(jù)會發(fā)送到第1個像素點(LED)上,第i+1個像素點的數(shù)據(jù)
  196. //                發(fā)送到第2個像素上
  197. //-------------------------------------------------------------------------------
  198. void SendOneFrameSince(unsigned char i,unsigned char *ptr)
  199. {
  200.         unsigned char k;

  201.         ResetDataFlow();                                 //發(fā)送幀復位信號

  202.         for(k=i;k<SNUM;k++)                                 //發(fā)送一幀數(shù)據(jù)
  203.         {
  204.                 SendOnePix(&ptr[(3*k)]);
  205.         }
  206.         for(k=0;k<i;k++)
  207.         {
  208.                 SendOnePix(&ptr[(3*k)]);
  209.         }
  210.         ResetDataFlow();                                 //發(fā)送幀復位信號
  211. }
  212. ……………………

  213. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:

ws2812B模塊資料.rar (12.02 MB, 下載次數(shù): 1180)


評分

參與人數(shù) 1黑幣 +3 收起 理由
yht0816zdl + 3 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏26 分享淘帖 頂5 踩
回復

使用道具 舉報

沙發(fā)
ID:304386 發(fā)表于 2018-4-18 14:27 | 只看該作者
ws2812能調(diào)亮度么?
回復

使用道具 舉報

板凳
ID:262988 發(fā)表于 2018-5-31 19:06 | 只看該作者
下來看看。
回復

使用道具 舉報

地板
ID:221003 發(fā)表于 2018-6-14 15:34 | 只看該作者
好想下載啊  就是沒錢。。。。。。
回復

使用道具 舉報

5#
ID:376603 發(fā)表于 2018-7-21 14:27 | 只看該作者
這個燈可以引用在鍵盤上么
回復

使用道具 舉報

6#
ID:376603 發(fā)表于 2018-7-21 14:28 | 只看該作者
這個燈可以應用在鍵盤上么
回復

使用道具 舉報

7#
ID:394704 發(fā)表于 2018-9-6 19:45 | 只看該作者
好想下載下來,找半天了
回復

使用道具 舉報

8#
ID:397295 發(fā)表于 2018-9-13 09:29 | 只看該作者
可當做初學的基礎示例
回復

使用道具 舉報

9#
ID:31770 發(fā)表于 2018-9-17 18:29 | 只看該作者

可當做初學的基礎示例
回復

使用道具 舉報

10#
ID:383749 發(fā)表于 2018-9-19 17:37 | 只看該作者
這個好像沒有實現(xiàn)全彩飄動的效果吧?
回復

使用道具 舉報

11#
ID:399627 發(fā)表于 2018-9-20 15:58 | 只看該作者
我下載下來看看
回復

使用道具 舉報

12#
ID:86020 發(fā)表于 2018-9-27 21:07 | 只看該作者
謝謝分享                                                               
回復

使用道具 舉報

13#
ID:279755 發(fā)表于 2018-10-7 00:09 | 只看該作者
void System_Init(void)
{
        BTN1=1;
        BTN2=1;

        //???INT0?ж?
        INT0 = 1;
    IT0 = 1;                  
    EX0 = 1;                          
INT1 = 1;
    IT1 = 1;                  
    EX1 = 1;                    //???INT1?ж?
}
回復

使用道具 舉報

14#
ID:279755 發(fā)表于 2018-10-7 00:10 | 只看該作者
搞了半天,還是不行
回復

使用道具 舉報

15#
ID:279755 發(fā)表于 2018-10-7 00:30 | 只看該作者
ZF0604 發(fā)表于 2018-10-7 00:09
void System_Init(void)
{
        BTN1=1;

INT0什么意思,各位大神
回復

使用道具 舉報

16#
ID:111490 發(fā)表于 2018-10-7 16:37 | 只看該作者
努力學習,謝謝!!!
回復

使用道具 舉報

17#
ID:324847 發(fā)表于 2018-10-8 16:15 | 只看該作者
我看資料都是0.35us 0.7us 的傳輸速度 是不是12T 單片機控制不了
回復

使用道具 舉報

18#
ID:406615 發(fā)表于 2018-10-8 16:56 | 只看該作者
太謝謝了 收藏了
回復

使用道具 舉報

19#
ID:279755 發(fā)表于 2018-10-9 20:32 | 只看該作者
ZF0604 發(fā)表于 2018-10-7 00:09
void System_Init(void)
{
        BTN1=1;

INT0應該改為IE0;INT1改為IE1
回復

使用道具 舉報

20#
ID:127421 發(fā)表于 2018-10-27 08:38 | 只看該作者
冒似還不錯,容易看懂。
回復

使用道具 舉報

21#
ID:389667 發(fā)表于 2018-10-27 15:18 | 只看該作者
無法下載
回復

使用道具 舉報

22#
ID:246741 發(fā)表于 2018-11-4 12:53 | 只看該作者
ZF0604 發(fā)表于 2018-10-7 00:30
INT0什么意思,各位大神

單片機外部中斷
回復

使用道具 舉報

23#
ID:413742 發(fā)表于 2018-11-16 10:52 | 只看該作者
printy123 發(fā)表于 2018-10-8 16:15
我看資料都是0.35us 0.7us 的傳輸速度 是不是12T 單片機控制不了

12T可以的,我用賽元單片機,就是12T,能不能用,具體看單片機的IO速度
回復

使用道具 舉報

24#
ID:460919 發(fā)表于 2019-1-3 14:05 | 只看該作者
這個支持一下~~~~
回復

使用道具 舉報

25#
ID:91669 發(fā)表于 2019-1-8 19:47 | 只看該作者
好好學習 天天向上
回復

使用道具 舉報

26#
ID:469932 發(fā)表于 2019-1-18 23:42 | 只看該作者
學習學習!頂一下!
回復

使用道具 舉報

27#
ID:121806 發(fā)表于 2019-3-2 13:48 | 只看該作者
下載下來好好研究
回復

使用道具 舉報

28#
ID:385912 發(fā)表于 2019-3-30 10:05 | 只看該作者
感謝大神分享下載來學習一下,謝謝
回復

使用道具 舉報

29#
ID:499661 發(fā)表于 2019-5-12 09:46 | 只看該作者
資料好好
回復

使用道具 舉報

30#
ID:46475 發(fā)表于 2019-5-24 13:09 | 只看該作者
好東西感謝分享
回復

使用道具 舉報

31#
ID:561518 發(fā)表于 2019-6-14 16:01 | 只看該作者
折騰了好久還是沒實現(xiàn)功能
回復

使用道具 舉報

32#
ID:561518 發(fā)表于 2019-6-17 09:18 | 只看該作者
下載后怎么不能解壓縮? 郁悶
回復

使用道具 舉報

33#
ID:572907 發(fā)表于 2019-6-26 20:38 | 只看該作者
正在調(diào)試2812,非常希望能參考一下。謝謝
回復

使用道具 舉報

34#
ID:578082 發(fā)表于 2019-7-4 19:28 | 只看該作者
共享資料的黑幣獎勵!
回復

使用道具 舉報

35#
ID:136900 發(fā)表于 2019-7-20 12:28 | 只看該作者

謝謝樓主!!!
回復

使用道具 舉報

36#
ID:8708 發(fā)表于 2019-7-20 18:11 | 只看該作者
可以免費下載嗎
回復

使用道具 舉報

37#
ID:103981 發(fā)表于 2019-8-8 22:39 | 只看該作者
感謝分享,努力學習!
回復

使用道具 舉報

38#
ID:612720 發(fā)表于 2019-9-17 19:27 | 只看該作者
怎么下載
回復

使用道具 舉報

39#
ID:90970 發(fā)表于 2019-10-14 11:37 | 只看該作者
看看這個怎么用
回復

使用道具 舉報

40#
ID:636442 發(fā)表于 2019-11-6 09:10 | 只看該作者
好的。我也想看看。
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区三区夜夜夜 | 久久最新| 免费看一区二区三区 | 不卡av电影在线播放 | 久草网址 | 91精品导航 | 亚洲va欧美va人人爽午夜 | 国产一区二区三区四区在线观看 | 中国黄色在线视频 | 天天干天天草 | 日本三级线观看 视频 | 国产精品我不卡 | 日韩欧美网 | 中文字幕一区二区在线观看 | 免费黄色在线观看 | 欧美自拍第一页 | 九九热精品在线视频 | 成人精品在线视频 | 国产精品久久久久一区二区三区 | 久久成人av电影 | 国产精品美女久久久久久免费 | 久久一区二区免费视频 | 亚洲精品福利视频 | 成人av一区二区三区 | 91在线播| 久久精品一区二区三区四区 | 欧美性网| 婷婷一级片| 三级欧美 | 久久精品视频在线观看 | 亚洲一区中文字幕在线观看 | 人人干人人玩 | 亚洲一二三区精品 | 久热电影 | 午夜精品视频 | 黄色骚片| 国产精品久久久久久久久久久久 | 一区二区三区国产 | 欧美一区二区在线观看 | 国产一区中文 | 亚洲综合二区 |