



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、關(guān)于WS2812B我就不多說(shuō)了,規(guī)格說(shuō)明書(shū)講的很詳細(xì)。目前網(wǎng)上分享的2812驅(qū)動(dòng)比較少,而且說(shuō)明不詳,使用起來(lái)不是很方便,本著共同進(jìn)步的精神在這里和大家分享一下我的調(diào)試經(jīng)驗(yàn)。MCU:STC12C5A08S2晶振:24M/經(jīng)驗(yàn):2812時(shí)序要求還是比較嚴(yán),對(duì)傳統(tǒng)51來(lái)說(shuō)實(shí)現(xiàn)真的有難度,之前網(wǎng)上共享的STC89C52的驅(qū)動(dòng),即使真的點(diǎn)亮了燈帶,估計(jì)也達(dá)不到我們的控制要求。因?yàn)?T的51加上24M的晶振,我在調(diào)試時(shí)也有點(diǎn)勉強(qiáng),一次IO的翻轉(zhuǎn)就要300ns。下面是燈帶的驅(qū)動(dòng)程序,可直接用: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ù),一個(gè)nop為40ns, 刷新一次32*24*1.25us=960us/=/1碼 高電平
3、850ns,低電平400ns實(shí)測(cè)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實(shí)測(cè)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)驗(yàn):SendData的傳入?yún)?shù),我用的是數(shù)組uint8 GRBData323; 分別對(duì)應(yīng)32顆燈的
7、GRB數(shù)據(jù)。這里有兩點(diǎn)需要注意:1 、別用結(jié)構(gòu)體。雖然結(jié)構(gòu)體看起來(lái)用起來(lái)很直觀方便,但是結(jié)構(gòu)體的尋址方式時(shí)間比數(shù)組長(zhǎng)很多,哪怕你傳入后用指針也不行。typedef struct uint8 G;uint8 R;uint8 B;COLOUR;2 、編譯方式Memory Model 只能選擇Small。此時(shí)局部變量是放在0x00-0x7f的128個(gè)RAM里面執(zhí)行的,速度也是最快的;選其他模式,則會(huì)放到xdata 里,這樣讀取速度慢了,我們的時(shí)序也會(huì)變。下面是STM32的驅(qū)動(dòng)(聲明:這是網(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)養(yǎng)生課件
- 中專紅色文化課件圖片
- 共享共贏汽車租賃合同
- 管理外包合同
- 高端住宅委托代理合同
- 《會(huì)計(jì)信息系統(tǒng)》全套教學(xué)課件
- 塑鋼門窗設(shè)計(jì)與施工合同
- 六安職業(yè)技術(shù)學(xué)院《環(huán)境基礎(chǔ)化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧朝陽(yáng)市普通高中2025屆高三下學(xué)期第二次段考?xì)v史試題試卷含解析
- 山東省青島市58中2025屆高三高考模擬試卷(二)物理試題含解析
- GB/T 4937.11-2018半導(dǎo)體器件機(jī)械和氣候試驗(yàn)方法第11部分:快速溫度變化雙液槽法
- GB/T 3906-20203.6 kV~40.5 kV交流金屬封閉開(kāi)關(guān)設(shè)備和控制設(shè)備
- 跨越學(xué)習(xí)高原期-高中心理健康主題班會(huì)
- 博物館藏品庫(kù)房管理課件
- 電梯井內(nèi)腳手架搭拆施工專項(xiàng)方案
- 涉外商標(biāo)實(shí)務(wù)培訓(xùn)課件
- 2022年2月興業(yè)銀行審計(jì)部招聘人員模擬試題3套(含答案解析)
- 社會(huì)研究方法復(fù)習(xí)資料(風(fēng)笑天版)
- 《青年友誼圓舞曲》音樂(lè)課件
- 博士后出站研究報(bào)告
- 中華人民共和國(guó)海關(guān)進(jìn)出境自用物品申請(qǐng)表
評(píng)論
0/150
提交評(píng)論