WS2812B燈帶STC驅(qū)動參考模板_第1頁
WS2812B燈帶STC驅(qū)動參考模板_第2頁
WS2812B燈帶STC驅(qū)動參考模板_第3頁
WS2812B燈帶STC驅(qū)動參考模板_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、關(guān)于WS2812B我就不多說了,規(guī)格說明書講的很詳細(xì)。目前網(wǎng)上分享的2812驅(qū)動比較少,而且說明不詳,使用起來不是很方便,本著共同進(jìn)步的精神在這里和大家分享一下我的調(diào)試經(jīng)驗。MCU:STC12C5A08S2晶振:24M/經(jīng)驗:2812時序要求還是比較嚴(yán),對傳統(tǒng)51來說實現(xiàn)真的有難度,之前網(wǎng)上共享的STC89C52的驅(qū)動,即使真的點亮了燈帶,估計也達(dá)不到我們的控制要求。因為1T的51加上24M的晶振,我在調(diào)試時也有點勉強,一次IO的翻轉(zhuǎn)就要300ns。下面是燈帶的驅(qū)動程序,可直接用:sbit Din = P32;uint8 bdata LED_DAT;/可位操作的數(shù)據(jù)發(fā)送暫存變量聲明sbit b

2、it0 = LED_DAT0; /被發(fā)送的數(shù)據(jù)各位定義sbit bit1 = LED_DAT1;sbit bit2 = LED_DAT2;sbit bit3 = LED_DAT3;sbit bit4 = LED_DAT4;sbit bit5 = LED_DAT5;sbit bit6 = LED_DAT6;sbit bit7 = LED_DAT7;/復(fù)位碼:低電平>50usvoid Reset()uint8 i;Din = 0;for(i = 0; i < 50; i+) ; /=/發(fā)送RGB數(shù)據(jù),一個nop為40ns, 刷新一次32*24*1.25us=960us/=/1碼 高電平

3、850ns,低電平400ns實測863,424#define CODE1Din = 1;_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_(); Din = 0;_nop_();_nop_();/0碼 高電平400ns,低電平850ns實測343,704#define CODE0Din = 1;_nop_();_nop_();_nop_();_nop_(); Din = 0;

4、_nop_();_nop_();_nop_();_nop_();_nop_();1 / 4 _nop_();_nop_();_nop_();_nop_(); void SendData(uint8 *dat) /數(shù)據(jù)格式G7-G0-R7-R0-B7-B0 LED_DAT = *dat+; if(bit7=1) CODE1 else CODE0 if(bit6=1) CODE1 else CODE0 if(bit5=1) CODE1 else CODE0 if(bit4=1) CODE1 else CODE0 if(bit3=1) CODE1 else CODE0 if(bit2=1) CODE

5、1 else CODE0 if(bit1=1) CODE1 else CODE0 if(bit0=1) CODE1 else CODE0 LED_DAT = *dat+; if(bit7=1) CODE1 else CODE0 if(bit6=1) CODE1 else CODE0 if(bit5=1) CODE1 else CODE0 if(bit4=1) CODE1 else CODE0 if(bit3=1) CODE1 else CODE0 if(bit2=1) CODE1 else CODE0 if(bit1=1) CODE1 else CODE0 if(bit0=1) CODE1 e

6、lse CODE0 LED_DAT = *dat; if(bit7=1) CODE1 else CODE0 if(bit6=1) CODE1 else CODE0 if(bit5=1) CODE1 else CODE0 if(bit4=1) CODE1 else CODE0 if(bit3=1) CODE1 else CODE0 if(bit2=1) CODE1 else CODE0 if(bit1=1) CODE1 else CODE0 if(bit0=1) CODE1 else CODE0/經(jīng)驗:SendData的傳入?yún)?shù),我用的是數(shù)組uint8 GRBData323; 分別對應(yīng)32顆燈的

7、GRB數(shù)據(jù)。這里有兩點需要注意:1 、別用結(jié)構(gòu)體。雖然結(jié)構(gòu)體看起來用起來很直觀方便,但是結(jié)構(gòu)體的尋址方式時間比數(shù)組長很多,哪怕你傳入后用指針也不行。typedef struct uint8 G;uint8 R;uint8 B;COLOUR;2 、編譯方式Memory Model 只能選擇Small。此時局部變量是放在0x00-0x7f的128個RAM里面執(zhí)行的,速度也是最快的;選其他模式,則會放到xdata 里,這樣讀取速度慢了,我們的時序也會變。下面是STM32的驅(qū)動(聲明:這是網(wǎng)友給我的,用不起別找我)#include "led_register.h"#include

8、"stm32f0xx.h"#define LED_ON (GPIOA->BSRR = 0x00000040)#define LED_OFF (GPIOA->BSRR = 0x00400000)void LED_GPIO_Init() RCC->AHBENR |= 0x00020000 ; /enable the clock of PORTA GPIOA->MODER |= 0x00001000 ; / PA6 out GPIOA->OTYPER &= 0x00000000 ; /pull out GPIOA->OSPEEDR |=

9、 0x00003000 ; / high speed 50MHZ GPIOA->PUPDR |= 0x00002000 ; / PUPD = DOWN GPIOA->BSRR |= 0x00400000 ; / reset PA5 void Send_8bits(uint8_t dat) uint8_t a; for(a=0;a<8;a+) LED_ON; if(dat & 0x80) asm("nop");asm("nop");asm("nop");asm("nop");asm(&quo

10、t;nop");asm("nop"); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("n

11、op");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("nop");asm("nop");asm("nop&q

12、uot;);asm("nop");asm("nop");asm("nop"); dat=dat<<1; LED_OFF; asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); else asm("nop");asm("nop");asm("nop");asm(&quo

13、t;nop");asm("nop");asm("nop"); dat=dat<<1; LED_OFF; asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("nop");asm("nop");asm("nop");asm("nop");asm(&q

14、uot;nop");asm("nop"); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); asm("nop");asm("nop");asm("nop");as

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論