欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27747|回復(fù): 53
收起左側(cè)

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

  [復(fù)制鏈接]
ID:309524 發(fā)表于 2018-4-16 19:49 | 顯示全部樓層 |閱讀模式
WS2812資料包(含51單片機(jī),arduino平臺與stm32的各種控制源碼):
0.png 0.png

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

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

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

電路原理圖如下:

0.jpg

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

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

51單片機(jī)源程序如下:
  1. /*----------------------------------------------------------------------------   
  2. * 項(xiàng)目名稱:

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

  4. * 功能描述:

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

  8. * 版權(quán)信息:

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

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

  13. * 配置說明:
  14.      MCU:             STC15W204S
  15.      晶振:                內(nèi)部晶振:33MHz
  16.      擴(kuò)展模塊:            -
  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ù)位,為下一次發(fā)送做準(zhǔn)備,
  34. //說明:將DI置位為0后,延時約65us
  35. //-------------------------------------------------------------------------------
  36. void ResetDataFlow(void)
  37. {
  38.         unsigned char i,j;
  39.         DI=0;                                        //DI置為0后,延時50us以上,實(shí)現(xiàn)幀復(fù)位
  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ā)送一個像素點(diǎn)的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ā)送幀復(fù)位信號

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

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

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

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

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

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

  179.         ResetDataFlow();                                 //發(fā)送幀復(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ā)送幀復(fù)位信號
  189. }

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

  201.         ResetDataFlow();                                 //發(fā)送幀復(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ā)送幀復(fù)位信號
  211. }
  212. ……………………

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

所有資料51hei提供下載:

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


評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:304386 發(fā)表于 2018-4-18 14:27 | 顯示全部樓層
ws2812能調(diào)亮度么?
回復(fù)

使用道具 舉報(bào)

ID:262988 發(fā)表于 2018-5-31 19:06 | 顯示全部樓層
下來看看。
回復(fù)

使用道具 舉報(bào)

ID:221003 發(fā)表于 2018-6-14 15:34 | 顯示全部樓層
好想下載啊  就是沒錢。。。。。。
回復(fù)

使用道具 舉報(bào)

ID:376603 發(fā)表于 2018-7-21 14:27 | 顯示全部樓層
這個燈可以引用在鍵盤上么
回復(fù)

使用道具 舉報(bào)

ID:376603 發(fā)表于 2018-7-21 14:28 | 顯示全部樓層
這個燈可以應(yīng)用在鍵盤上么
回復(fù)

使用道具 舉報(bào)

ID:394704 發(fā)表于 2018-9-6 19:45 | 顯示全部樓層
好想下載下來,找半天了
回復(fù)

使用道具 舉報(bào)

8#
無效樓層,該帖已經(jīng)被刪除
ID:397295 發(fā)表于 2018-9-13 09:29 | 顯示全部樓層
可當(dāng)做初學(xué)的基礎(chǔ)示例
回復(fù)

使用道具 舉報(bào)

ID:31770 發(fā)表于 2018-9-17 18:29 | 顯示全部樓層

可當(dāng)做初學(xué)的基礎(chǔ)示例
回復(fù)

使用道具 舉報(bào)

11#
無效樓層,該帖已經(jīng)被刪除
ID:383749 發(fā)表于 2018-9-19 17:37 | 顯示全部樓層
這個好像沒有實(shí)現(xiàn)全彩飄動的效果吧?
回復(fù)

使用道具 舉報(bào)

ID:399627 發(fā)表于 2018-9-20 15:58 | 顯示全部樓層
我下載下來看看
回復(fù)

使用道具 舉報(bào)

ID:86020 發(fā)表于 2018-9-27 21:07 | 顯示全部樓層
謝謝分享                                                               
回復(fù)

使用道具 舉報(bào)

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?ж?
}
回復(fù)

使用道具 舉報(bào)

ID:279755 發(fā)表于 2018-10-7 00:10 | 顯示全部樓層
搞了半天,還是不行
回復(fù)

使用道具 舉報(bào)

ID:279755 發(fā)表于 2018-10-7 00:30 | 顯示全部樓層
ZF0604 發(fā)表于 2018-10-7 00:09
void System_Init(void)
{
        BTN1=1;

INT0什么意思,各位大神
回復(fù)

使用道具 舉報(bào)

ID:111490 發(fā)表于 2018-10-7 16:37 | 顯示全部樓層
努力學(xué)習(xí),謝謝。。
回復(fù)

使用道具 舉報(bào)

ID:324847 發(fā)表于 2018-10-8 16:15 | 顯示全部樓層
我看資料都是0.35us 0.7us 的傳輸速度 是不是12T 單片機(jī)控制不了
回復(fù)

使用道具 舉報(bào)

ID:406615 發(fā)表于 2018-10-8 16:56 | 顯示全部樓層
太謝謝了 收藏了
回復(fù)

使用道具 舉報(bào)

ID:279755 發(fā)表于 2018-10-9 20:32 | 顯示全部樓層
ZF0604 發(fā)表于 2018-10-7 00:09
void System_Init(void)
{
        BTN1=1;

INT0應(yīng)該改為IE0;INT1改為IE1
回復(fù)

使用道具 舉報(bào)

ID:127421 發(fā)表于 2018-10-27 08:38 | 顯示全部樓層
冒似還不錯,容易看懂。
回復(fù)

使用道具 舉報(bào)

ID:389667 發(fā)表于 2018-10-27 15:18 | 顯示全部樓層
無法下載
回復(fù)

使用道具 舉報(bào)

ID:246741 發(fā)表于 2018-11-4 12:53 | 顯示全部樓層
ZF0604 發(fā)表于 2018-10-7 00:30
INT0什么意思,各位大神

單片機(jī)外部中斷
回復(fù)

使用道具 舉報(bào)

25#
無效樓層,該帖已經(jīng)被刪除
ID:413742 發(fā)表于 2018-11-16 10:52 | 顯示全部樓層
printy123 發(fā)表于 2018-10-8 16:15
我看資料都是0.35us 0.7us 的傳輸速度 是不是12T 單片機(jī)控制不了

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

使用道具 舉報(bào)

ID:460919 發(fā)表于 2019-1-3 14:05 | 顯示全部樓層
這個支持一下~~~~
回復(fù)

使用道具 舉報(bào)

28#
無效樓層,該帖已經(jīng)被刪除
ID:91669 發(fā)表于 2019-1-8 19:47 | 顯示全部樓層
好好學(xué)習(xí) 天天向上
回復(fù)

使用道具 舉報(bào)

ID:469932 發(fā)表于 2019-1-18 23:42 | 顯示全部樓層
學(xué)習(xí)學(xué)習(xí)!頂一下!
回復(fù)

使用道具 舉報(bào)

ID:121806 發(fā)表于 2019-3-2 13:48 | 顯示全部樓層
下載下來好好研究
回復(fù)

使用道具 舉報(bào)

ID:385912 發(fā)表于 2019-3-30 10:05 | 顯示全部樓層
感謝大神分享下載來學(xué)習(xí)一下,謝謝
回復(fù)

使用道具 舉報(bào)

ID:499661 發(fā)表于 2019-5-12 09:46 | 顯示全部樓層
資料好好
回復(fù)

使用道具 舉報(bào)

ID:46475 發(fā)表于 2019-5-24 13:09 | 顯示全部樓層
好東西感謝分享
回復(fù)

使用道具 舉報(bào)

ID:561518 發(fā)表于 2019-6-14 16:01 | 顯示全部樓層
折騰了好久還是沒實(shí)現(xiàn)功能
回復(fù)

使用道具 舉報(bào)

ID:561518 發(fā)表于 2019-6-17 09:18 | 顯示全部樓層
下載后怎么不能解壓縮? 郁悶
回復(fù)

使用道具 舉報(bào)

ID:572907 發(fā)表于 2019-6-26 20:38 | 顯示全部樓層
正在調(diào)試2812,非常希望能參考一下。謝謝
回復(fù)

使用道具 舉報(bào)

ID:578082 發(fā)表于 2019-7-4 19:28 | 顯示全部樓層
共享資料的黑幣獎勵!
回復(fù)

使用道具 舉報(bào)

ID:136900 發(fā)表于 2019-7-20 12:28 | 顯示全部樓層

謝謝樓主。!
回復(fù)

使用道具 舉報(bào)

40#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表