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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

  [復制鏈接]
跳轉到指定樓層
樓主
WS2812資料包(含51單片機,arduino平臺與stm32的各種控制源碼):


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

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

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


電路原理圖如下:



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

stm32
3步打造stm32驅動的ws2812智能燈.zip
NucleoL496智能燈數據點.zip

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

  3.      RGB LED驅動程序

  4. * 功能描述:

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

  8. * 版權信息:

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

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

  13. * 配置說明:
  14.      MCU:             STC15W204S
  15.      晶振:                內部晶振: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. //功能:復位,為下一次發送做準備,
  34. //說明:將DI置位為0后,延時約65us
  35. //-------------------------------------------------------------------------------
  36. void ResetDataFlow(void)
  37. {
  38.         unsigned char i,j;
  39.         DI=0;                                        //DI置為0后,延時50us以上,實現幀復位
  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. //功能:發送一個像素點的24bit數據
  51. //參數:接收的參數是一個指針,此函數會將此指針指向的地址的連續的三個Byte的數據發送
  52. //說明:在主函數中直接調用此函數時,在整個幀發送開始前需要先執行 ResetDataFlow()
  53. //                數據是按歸零碼的方式發送,速率為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)                 //從高位開始發送
  65.                         {
  66.                                 DI=1;                         //發送“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                                //發送“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. //功能:發送一幀數據(即發送整個數組的數據)
  142. //參數:接收的參數是一個指針,此函數會將此指針指向的地址的整個數組的數據發送
  143. //-------------------------------------------------------------------------------
  144. void SendOneFrame(unsigned char *ptr)
  145. {
  146.         unsigned char k;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

所有資料51hei提供下載:

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


評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

13#
ID:279755 發表于 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 發表于 2018-10-7 00:10 | 只看該作者
搞了半天,還是不行
回復

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

單片機外部中斷
回復

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

謝謝樓主!!!
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区国产精品 | 精品亚洲一区二区三区 | 国产原创视频 | 国产精品一区二区在线观看 | 国产精品成人一区二区三区 | 久久国产精品99久久久大便 | 久久国产欧美日韩精品 | www.久久99 | 国产成人精品免费视频 | 中文字幕 亚洲一区 | 中文字幕的av | 天天草天天爱 | 日韩精品一区二区三区在线观看 | www.国产一区| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品地址 | 免费看黄色片 | 欧美激情精品久久久久久 | 日本亚洲精品成人欧美一区 | 日韩欧美一区二区三区 | 久久久久久久国产精品 | www.国产| 成人一区精品 | 日韩图区| 精精国产xxxx视频在线野外 | 五月婷婷丁香 | 欧美精品国产一区二区 | 一区二区高清在线观看 | 激情av网站 | 视频在线观看一区 | 欧美视频三区 | 欧美456 | 亚洲激情自拍偷拍 | 亚洲天堂日韩精品 | 精品三区 | 黄网站免费在线 | 精品一区二区在线看 | 久久av一区二区三区 | 我要看黄色录像一级片 | 欧美久久国产 | av在线免费观看不卡 |