熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2021-2-20 16:07
正文摘要:示例采用HC89S003F4單片機(jī)和7燈Ws2812燈帶。HC89S003F4是1T增強(qiáng)型51單片機(jī),如用其他51單片機(jī),需調(diào)整晶振頻率。示例僅進(jìn)行7燈的單次驅(qū)動(dòng),可在聲明和數(shù)組中改變燈珠數(shù)量和數(shù)據(jù),主函數(shù)中修改后可實(shí)現(xiàn)流水燈效果。 ... |
xdata那里我用的時(shí)候他總說(shuō)前面少了個(gè)分號(hào),咋回事 |
xxd0708 發(fā)表于 2021-5-13 07:01 好的謝謝作者! |
xxd0708 發(fā)表于 2021-5-13 07:00 搜索“51單片機(jī)(12MHz@12T)驅(qū)動(dòng)WS2812B” |
tungkin 發(fā)表于 2021-5-12 19:16 8M4T每個(gè)指令周期0.5uS,置位或清零引腳為2個(gè)指令周期即1uS,顯然不能直接驅(qū)動(dòng)。但可以用RC電路延時(shí)解決,參看我的另一個(gè)貼子 |
8M4T的片子有方法驅(qū)動(dòng)嗎?樓主可以提供一下思路嗎謝謝。 |
xxd0708 發(fā)表于 2021-3-30 09:20 雖然這個(gè)單片機(jī)沒(méi)用過(guò),我就大概猜一下邏輯,也就是說(shuō)再while(i)里面,就先直接將IO口拉高,這里有一個(gè)時(shí)間,然后把CY(也就是左移后的高位給IO口),如果是1,那么就是高位持續(xù)了2個(gè)時(shí)間,如果是0,那么高位就持續(xù)了1個(gè)時(shí)間,如果WS2812_IO = 1;這個(gè)時(shí)間是0.45us,2個(gè)時(shí)間就是*2 =0.9us, 一個(gè)時(shí)間就是0.45us。 就是CY是1的話,就是高0.9us +_nop_();+WS2812_IO = 0;就是符合了W2812的時(shí)序 |
xxd0708 發(fā)表于 2021-3-30 09:20 哦,這個(gè)單片機(jī)沒(méi)用過(guò) |
johnspen 發(fā)表于 2021-3-30 00:40 1,CY就是進(jìn)位標(biāo)志C,51單片機(jī)頭文件中有定義,在C語(yǔ)言中用CY直接調(diào)用; 2,左移data后,最高位移入CY; 3,函數(shù)中,將CY值寫至引腳的作用,CY=0比CY=1提前拉低,體現(xiàn)為高電平的脈寬變化。 |
你的CY定義在哪里? 還有ws2812_write_byte 函數(shù)中 data<1逐個(gè)發(fā)送過(guò)程中,在while(i)里面怎么區(qū)分data的0,1? 如果是0,那么時(shí)間要小于0.45us,如果是1要大于0.45,這在函數(shù)中沒(méi)有體現(xiàn)? |
Levent 發(fā)表于 2021-2-23 16:22 我的另一個(gè)貼子里有普通51單片機(jī)驅(qū)動(dòng)ws2812b的例子,對(duì)晶振頻率要求低一些。參看http://www.zg4o1577.cn/bbs/forum.php?mod=viewthread&tid=202899&extra=page%3D1&mobile=no |
Levent 發(fā)表于 2021-2-23 16:22 如圖中實(shí)物連有三條線,兩條是電源VCC GND,另一條是數(shù)據(jù)線。 電源可與單片機(jī)共用,燈珠數(shù)量多時(shí)最好單獨(dú)供電,但要與單片機(jī)共地,電壓5V(USB)至3.7V(鋰電池)都可以,3.3V有點(diǎn)閃。每個(gè)(或每?jī)蓚(gè))燈珠的電源處要并一個(gè)小電容(0.1uF)。 單片機(jī)IO上拉輸出或推挽輸出,與燈帶數(shù)據(jù)輸入(DIN)間最好加一個(gè)小電阻(100歐)防沖擊,實(shí)驗(yàn)時(shí)不加也可以。燈帶還有個(gè)輸出線DOUT,可以級(jí)聯(lián)下一燈帶的DIN。 單總線方式,驅(qū)動(dòng)較簡(jiǎn)單,兩種狀態(tài):復(fù)位(較長(zhǎng)時(shí)間的低電平)或位傳送。位0或位1取決于高電平脈寬,低電平寬度要求不高,小于復(fù)位就行。(三樓有具體說(shuō)明) 應(yīng)用挺方便的,動(dòng)手試試。需要注意的是,因位傳送時(shí)高電平的脈寬均在uS級(jí)以下,單片機(jī)頻率要適當(dāng)提高些。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
Levent 發(fā)表于 2021-2-23 16:22 普通IO口 串聯(lián)100歐電阻 連過(guò)去就行了 必須能夠輸出5V電平。不能3.3V |
樓主你好,新手求教,燈帶和單片機(jī)的接口該怎么連接呢? |
89C52驅(qū)動(dòng)WS2812 http://www.zg4o1577.cn/bbs/dpj-170855-1.html |
Powered by 單片機(jī)教程網(wǎng)