|
WS2812資料包(含51單片機(jī),arduino平臺(tái)與stm32的各種控制源碼):
0.png (44.06 KB, 下載次數(shù): 167)
下載附件
2018-4-17 02:59 上傳
0.png (14.13 KB, 下載次數(shù): 168)
下載附件
2018-4-17 02:59 上傳
WS2812是一個(gè)集控制電路與發(fā)光電路于一體的智能外控LED光源。其外型與一個(gè)5050LED燈珠相同,每個(gè)元件即為一個(gè)像素點(diǎn)。像素點(diǎn)內(nèi)部包含了智能數(shù)字接口數(shù)據(jù)鎖存信號(hào)整形放大驅(qū)動(dòng)電路,還包含有高精度的內(nèi)部振蕩器和12V高壓可編程定電流控制部分,有效保證了像素點(diǎn)光的顏色高度一致。數(shù)據(jù)協(xié)議采用單線歸零碼的通訊方式,像素點(diǎn)在上電復(fù)位以后,DIN端接受從控制器傳輸過(guò)來(lái)的數(shù)據(jù),首先送過(guò)來(lái)的24bit數(shù)據(jù)被第一個(gè)像素點(diǎn)提取后,送到像素點(diǎn)內(nèi)部的數(shù)據(jù)鎖存器,剩余的數(shù)據(jù)經(jīng)過(guò)內(nèi)部整形處理電路整形放大后通過(guò)DO端口開(kāi)始轉(zhuǎn)發(fā)輸出給下一個(gè)級(jí)聯(lián)的像素點(diǎn),每經(jīng)過(guò)一個(gè)像素點(diǎn)的傳輸,信號(hào)減少24bit。像素點(diǎn)采用自動(dòng)整形轉(zhuǎn)發(fā)技術(shù),使得該像素點(diǎn)的級(jí)聯(lián)個(gè)數(shù)不受信號(hào)傳送的限制,僅僅受限信號(hào)傳輸速度要求。LED具有低電壓驅(qū)動(dòng),環(huán)保節(jié)能,亮度高,散射角度大,一致性好,超低功率,超長(zhǎng)壽命等優(yōu)點(diǎn)。將控制電路集成于LED上面,電路變得更加簡(jiǎn)單,體積小,安裝更加簡(jiǎn)便。
●控制電路與RGB芯片集成在一個(gè)5050封裝的元器件中,構(gòu)成一個(gè)完整的外控像素點(diǎn)。
●內(nèi)置信號(hào)整形電路,任何一個(gè)像素點(diǎn)收到信號(hào)后經(jīng)過(guò)波形整形再輸出,保證線路波形畸變不會(huì)累加。
●內(nèi)置上電復(fù)位和掉電復(fù)位電路。
●每個(gè)像素點(diǎn)的三基色顏色可實(shí)現(xiàn)256級(jí)亮度顯示,完成16777216種顏色的全真色彩顯示,掃描頻率不低于
400Hz/s。
●串行級(jí)聯(lián)接口,能通過(guò)一根信號(hào)線完成數(shù)據(jù)的接收與解碼。
●任意兩點(diǎn)傳傳輸距離在不超過(guò)5米時(shí)無(wú)需增加任何電路。
●當(dāng)刷新速率30幀/秒時(shí),低速模式級(jí)聯(lián)數(shù)不小于512點(diǎn),高速模式不小于1024點(diǎn)。
●數(shù)據(jù)發(fā)送速度可達(dá)800Kbps。
●光的顏色高度一致,性價(jià)比高。
WS2812引腳圖與數(shù)據(jù)手冊(cè)(51hei附件可下載)
0.png (99.03 KB, 下載次數(shù): 155)
下載附件
2018-4-17 02:57 上傳
電路原理圖如下:
0.jpg (27.91 KB, 下載次數(shù): 172)
下載附件
2018-4-17 02:58 上傳
源碼:
RGB LED Cycle Test
RGB LED Cycle 七彩切換效果程序
RGB LED Cycle 七彩漸變效果程序
RGB LED Cycle 七彩覆蓋效果程序
RGB LED Cycle 三色循環(huán)效果程序
RGB LED Cycle 三色覆蓋效果程序
RGB LED Cycle 單個(gè)紅色旋轉(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ū)動(dòng)
帶單片機(jī)8位全彩流水燈程序模板V1.0
帶單片機(jī)8位全彩流水燈程序模板V1.1
stm32
3步打造stm32驅(qū)動(dòng)的ws2812智能燈.zip
NucleoL496智能燈數(shù)據(jù)點(diǎn).zip
51單片機(jī)源程序如下:
- /*----------------------------------------------------------------------------
- * 項(xiàng)目名稱:
- RGB LED驅(qū)動(dòng)程序
- * 功能描述:
- 1、將整個(gè)數(shù)組的數(shù)據(jù)發(fā)送得到LED進(jìn)行顯示
- 2、從指定像素開(kāi)始將整個(gè)數(shù)組的數(shù)據(jù)發(fā)送到LED顯示
- 3、發(fā)送復(fù)位信號(hào)
- * 版權(quán)信息:
- (c) 飛翼電子, 2014.
- * 歷史版本:
- 2014-03-15:
- - 初始版本 V1.0.0;
- * 配置說(shuō)明:
- MCU: STC15W204S
- 晶振: 內(nèi)部晶振:33MHz
- 擴(kuò)展模塊: -
- 軟件: Keil.C51.V9.01
- * 備注:
- ------------------------------------------------------------------------------*/
- #include "STC15W.h"
- #include <intrins.h>
- #include "ws2812.h"
- //-------------------------------------------------------------------------------
- //子程序名稱:IO_Init(void)
- //功能:端口初始化
- //-------------------------------------------------------------------------------
- void IO_Init(void)
- {
- ;
- }
- //-------------------------------------------------------------------------------
- //子程序名稱:ResetDateFlow(void)
- //功能:復(fù)位,為下一次發(fā)送做準(zhǔn)備,
- //說(shuō)明:將DI置位為0后,延時(shí)約65us
- //-------------------------------------------------------------------------------
- void ResetDataFlow(void)
- {
- unsigned char i,j;
- DI=0; //DI置為0后,延時(shí)50us以上,實(shí)現(xiàn)幀復(fù)位
- for(i=0;i<15;i++) //此處33Mhz時(shí)延時(shí)65us
- {
- for(j=0;j<20;j++)
- {
- ;
- }
- }
- }
- //-------------------------------------------------------------------------------
- //子程序名稱:SendOnePix(unsigned char *ptr)
- //功能:發(fā)送一個(gè)像素點(diǎn)的24bit數(shù)據(jù)
- //參數(shù):接收的參數(shù)是一個(gè)指針,此函數(shù)會(huì)將此指針指向的地址的連續(xù)的三個(gè)Byte的數(shù)據(jù)發(fā)送
- //說(shuō)明:在主函數(shù)中直接調(diào)用此函數(shù)時(shí),在整個(gè)幀發(fā)送開(kāi)始前需要先執(zhí)行 ResetDataFlow()
- // 數(shù)據(jù)是按歸零碼的方式發(fā)送,速率為800KBPS
- //-------------------------------------------------------------------------------
- void SendOnePix(unsigned char *ptr)
- {
- unsigned char i,j;
- unsigned char temp;
- for(j=0;j<3;j++)
- {
- temp=ptr[j];
- for(i=0;i<8;i++)
- {
- if(temp&0x80) //從高位開(kāi)始發(fā)送
- {
- DI=1; //發(fā)送“1”碼
- _nop_(); //不可省略的nop(),延時(shí)指定時(shí)間作用,晶振頻率33MHz
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- DI=0;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- else //發(fā)送“0”碼
- {
- DI=1;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- DI=0;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- temp=(temp<<1); //左移位
- }
- }
- }
- //-------------------------------------------------------------------------------
- //子程序名稱:SendOneFrame(unsigned char *ptr)
- //功能:發(fā)送一幀數(shù)據(jù)(即發(fā)送整個(gè)數(shù)組的數(shù)據(jù))
- //參數(shù):接收的參數(shù)是一個(gè)指針,此函數(shù)會(huì)將此指針指向的地址的整個(gè)數(shù)組的數(shù)據(jù)發(fā)送
- //-------------------------------------------------------------------------------
- void SendOneFrame(unsigned char *ptr)
- {
- unsigned char k;
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- for(k=0;k<SNUM;k++) //發(fā)送一幀數(shù)據(jù),SNUM是板子LED的個(gè)數(shù)
- {
- SendOnePix(&ptr[(3*k)]);
- }
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- }
- //-------------------------------------------------------------------------------
- //子程序名稱:SendSameColor(unsigned char *ptr,unsigned char cnt)
- //功能:相同顏色的點(diǎn)發(fā)送cnt次
- //參數(shù):接收的參數(shù)是一個(gè)指針,指向像素點(diǎn)顏色數(shù)組,cnt傳遞發(fā)送個(gè)數(shù)
- //-------------------------------------------------------------------------------
- void SendSameColor(unsigned char *ptr,unsigned char cnt)
- {
- unsigned char k;
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- for(k=0;k<cnt;k++) //發(fā)送一幀數(shù)據(jù),SNUM是板子LED的個(gè)數(shù)
- {
- SendOnePix(&ptr[0]);
- }
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- }
- //-------------------------------------------------------------------------------
- //子程序名稱:SendOneFrameFrom(unsigned char i,unsigned char *ptr)
- //功能:從指定的像素點(diǎn)開(kāi)始發(fā)送一幀數(shù)據(jù)(即發(fā)送整個(gè)數(shù)組的數(shù)據(jù))
- //參數(shù):接收的參數(shù)是一個(gè)指針,此函數(shù)會(huì)將此指針指向的地址的整幀數(shù)據(jù)發(fā)送
- // i:把數(shù)組的第0個(gè)像素?cái)?shù)據(jù)發(fā)送到第i個(gè)像素點(diǎn)(第0個(gè)像素是板上標(biāo)號(hào)為01的像素)
- //說(shuō)明:即原本對(duì)應(yīng)第一個(gè)像素的數(shù)據(jù)會(huì)發(fā)送到第i個(gè)像素點(diǎn)(LED)上
- //-------------------------------------------------------------------------------
- void SendOneFrameFrom(unsigned char i,unsigned char *ptr)
- {
- unsigned char k;
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- for(k=(SNUM-i);k<SNUM;k++) //發(fā)送一幀數(shù)據(jù)
- {
- SendOnePix(&ptr[(3*k)]);
- }
- for(k=0;k<(SNUM-i);k++)
- {
- SendOnePix(&ptr[(3*k)]);
- }
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- }
- //-------------------------------------------------------------------------------
- //子程序名稱:SendOneFrameSince(unsigned char i,unsigned char *ptr)
- //功能:從第i個(gè)像素點(diǎn)的數(shù)據(jù)開(kāi)始發(fā)送一幀數(shù)據(jù)(即發(fā)送整個(gè)數(shù)組的數(shù)據(jù))
- //參數(shù):接收的參數(shù)是一個(gè)指針,此函數(shù)會(huì)將此指針指向的地址的整幀數(shù)據(jù)發(fā)送
- // i:把數(shù)組的第i個(gè)像素?cái)?shù)據(jù)發(fā)送到第1個(gè)像素點(diǎn)
- //說(shuō)明:即原本對(duì)應(yīng)第i像素的數(shù)據(jù)會(huì)發(fā)送到第1個(gè)像素點(diǎn)(LED)上,第i+1個(gè)像素點(diǎn)的數(shù)據(jù)
- // 發(fā)送到第2個(gè)像素上
- //-------------------------------------------------------------------------------
- void SendOneFrameSince(unsigned char i,unsigned char *ptr)
- {
- unsigned char k;
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- for(k=i;k<SNUM;k++) //發(fā)送一幀數(shù)據(jù)
- {
- SendOnePix(&ptr[(3*k)]);
- }
- for(k=0;k<i;k++)
- {
- SendOnePix(&ptr[(3*k)]);
- }
- ResetDataFlow(); //發(fā)送幀復(fù)位信號(hào)
- }
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
ws2812B模塊資料.rar
(12.02 MB, 下載次數(shù): 1180)
2018-4-16 19:49 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|