appfan 发表于 2018-5-8 21:01:18

挑战AVR的极限驱动72个WS2812B灯珠!!!

本帖最后由 appfan 于 2018-5-8 21:01 编辑

WS2812B七彩LED只用一根数据线传输信号,使用极其方便,但是800K的数据速率,让好多网友困扰。看到网上有SPI+DMA方式驱动、PWM+DMA方式,但是要求单片机苛刻。
另外有些网友使用IO直接驱动,有需要主频高的单片机,而且十分耗费内存空间。今天有空使用最普通的Atmega16,主频8M,直接驱动72个WS2812灯珠
(因为手边只有72个,实际代码能驱动约300多个)

-->WS2812灯带细节<--



-->Atmega16单片机细节<--



-->WS2812截图细节<--



-->WS2812动态细节<--

jlhgold 发表于 2018-5-8 21:45:31

看起来不错哦

baimawangzi 发表于 2018-5-8 22:03:24

效果很不错,适合做广告牌。

appfan 发表于 2018-5-8 22:18:37

关键这货就只需要:Vcc/Data/Gnd 三根线,省事!!!
https://img-blog.csdn.net/20170125183428598?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem9vbWR5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

我被蜗牛欺负了 发表于 2018-5-8 22:28:16

看起来不错,给楼主顶起。

haiyu 发表于 2018-5-9 08:04:52

顶起现在个个玩灯带都出神入化了 好多变化

xuhai777 发表于 2018-5-9 08:37:18

效果不错+1

xiaoxu191 发表于 2018-5-9 09:00:32

炫耀贴。我用8MHz的Tiny85传得好好的。

amazing030 发表于 2018-5-9 09:02:14

楼主渐变的程序放上来看看

amazing030 发表于 2018-5-9 09:03:58

另外用SPI驱动就可以啊,不用DMA,3-4MHZ左右的SPI脉冲时间刚好,8和E 4位分别代表0、1

zhongsandaoren 发表于 2018-5-9 09:34:34

不明觉厉啊

zhutr99 发表于 2018-5-9 09:56:51

我用的是STM32的DMA驱动,在办公室驱动稳定,到了灯具上就受干扰导致2812接收到乱码。原装的驱动器就不会,人家用的还他妈是8脚的STC单片机呢!

zjrenyu 发表于 2018-5-9 10:30:14

那有资料,整个玩玩{:titter:}

zhutr99 发表于 2018-5-9 10:32:42

cc2666 发表于 2018-5-9 10:19
驱动电压有问题?

话说现在流水灯都这么玩啦,感觉落伍了

驱动电压应该没有问题,我加了个TI的电平转换芯片了。

bias 发表于 2018-5-9 10:33:44

WS2812B七彩LED
有意思
才知道有这种集成了驱动的灯带

juncheng88 发表于 2018-5-9 10:37:13

avr这么强,效果不错。

liujinhan 发表于 2018-5-9 10:41:51

支持下,放在自行车或者摩托上应该不错。就是费电~~~

CoolBird007 发表于 2018-5-9 10:45:32

见识了。。。自带驱动芯片的灯带??

sharehej 发表于 2018-5-9 11:13:04

CoolBird007 发表于 2018-5-9 10:45
见识了。。。自带驱动芯片的灯带??

自带芯片的RGB灯珠,然后级联,除了VCC、GND,只要一根线,还贼便宜!

Excellence 发表于 2018-5-9 11:15:45

好玩。。。。。。。。。。。。

makathy 发表于 2018-5-9 11:22:18

可以装家里了

CoolBird007 发表于 2018-5-9 11:27:09

sharehej 发表于 2018-5-9 11:13
自带芯片的RGB灯珠,然后级联,除了VCC、GND,只要一根线,还贼便宜! ...

单根数据线,刷新够不够快吗?一串几百个的话。

HYLG 发表于 2018-5-9 11:43:43

8M晶振能这样不错。

sunnyqd 发表于 2018-5-9 11:45:33

推荐WS2812C,亮度低一些。另外,可以看一下WS2812D,直插5mm、8mm封装都有

19711972f 发表于 2018-5-9 12:03:29

楼主做的不错

stewen 发表于 2018-5-9 14:25:46

用Arduino吧,有很多现成库驱动这个,变化可眼花缭乱。

weare 发表于 2018-5-9 14:37:56

给人家做项目,用的STM32驱动,是不是有点浪费资源了!!哈哈

go2deathward 发表于 2018-5-9 14:43:34

原来还有这种灯带

wudicgi 发表于 2018-5-9 15:01:02

WS2812B 一般 I2S+DMA 驱动最方便吧,SPI+DMA 应该也差不多

t3486784401 发表于 2018-5-9 15:55:50

感觉就我闲得慌买了 Arduino 灯板,用 C/汇编 混合调通以后就吃灰去了。

这个是 ATMEGA328P @16MHz

jlhgold 发表于 2018-5-9 20:35:00

t3486784401 发表于 2018-5-9 15:55
感觉就我闲得慌买了 Arduino 灯板,用 C/汇编 混合调通以后就吃灰去了。

这个是 ATMEGA328P @16MHz


博士还是比较啊

appfan 发表于 2018-5-9 21:06:13

本人使用的是c与汇编混编,SPI不是不行,但是占空间大,时序不准,自己汇编的一个灯就用三字节就好了,要不Atmega16是驱动不了这么多的灯珠的!!!

appfan 发表于 2018-5-9 21:06:56

32楼的灯板确实看着华丽多了

appfan 发表于 2018-5-9 21:10:12

@t3486784401 对了,你写AVR的iap程序不错,之前看过呢!

zhanan 发表于 2018-5-9 22:48:09

WS2812对时序要求严格,时序如何控制的?
如果mcu只用来驱动灯,不能干别的,那没啥实用价值吧。

appfan 发表于 2018-5-9 23:33:33


1. 时序是根据汇编的指令周期,再加上示波器对的,理论上一个循环正好10个周期。
分成3个周期+7个周期,约为375ns和875ns,与手册的400ns和850ns基本一致。
T=实际周期为T=1.235us,可能由于示波器或者晶振原因有所误差,影响不大。
(8M晶振,每周期125ns,3T=375ns,7T=875ns实际相差25ns在150ns范围内)

2. 当然可以做别的啦,rom和ram只用了一小部分,需要显示了mcu只需要刷新一下,
然后就可以干别的了,不需要一直刷新,这是WS2812灯带的特性!

kenshudemayi 发表于 2018-5-10 03:26:36

本帖最后由 kenshudemayi 于 2018-5-10 03:30 编辑

我连说自己是一灯大师的资格都没了

t3486784401 发表于 2018-5-10 03:37:07

appfan 发表于 2018-5-9 23:33
1. 时序是根据汇编的指令周期,再加上示波器对的,理论上一个循环正好10个周期。
分成3个周期+7个周期,约 ...

英雄所见略同。

我之前用7.3M的mega8带过这个灯条,也发过帖子,用的是9T循环,汇编凑出来的。

t3486784401 发表于 2018-5-10 03:38:03

appfan 发表于 2018-5-9 21:10
@t3486784401 对了,你写AVR的iap程序不错,之前看过呢!

过奖,自己用着顺才是顺

zyw19987 发表于 2018-5-10 07:05:56

手上有8S003做的控制器,红外遥控。控制512颗灯

korren 发表于 2018-5-10 07:19:50

SM16726可见接1024个灯珠,串口通讯,最高30M串行速度。控制非常方便。

sdlibin007 发表于 2018-5-10 07:57:16

挺好,不过我们已经用来驱动16*16的WS2812点阵了{:lol:}

AllEle 发表于 2018-5-10 16:38:07

做的可真漂亮

1066950103 发表于 2018-5-11 08:40:13

这灯都有些什么行业应用呢?拿来显示led显示器用咋样?

bad_fpga 发表于 2018-5-11 21:42:35

WS2812 不错的资料,学习了

zxq6 发表于 2018-5-11 21:52:52

为啥不用硬件 spi呢?

t3486784401 发表于 2018-5-11 22:10:09

1066950103 发表于 2018-5-11 08:40
这灯都有些什么行业应用呢?拿来显示led显示器用咋样?

街边全彩的发光字,就是类似的玩意。每个灯一个控制器(我看有 SOP16 方案的,记不起是啥型号了),数据线一个个插过去。

不过我家门口的 KTV 天天坏,一整就是全白或者全黑,平均个把月抽风一次,看来可靠性不咋滴

t3486784401 发表于 2018-5-11 22:14:54

zxq6 发表于 2018-5-11 21:52
为啥不用硬件 spi呢?

没有 dma 的 spi 对于运算核的时间占用差不多。

结果还不如省个 spi 硬件端口.

hanweng2012 发表于 2018-5-13 08:02:02

SOP16估计是HC595,或者163

SNOOKER 发表于 2018-5-13 09:48:45

appfan 发表于 2018-5-8 22:18
关键这货就只需要:Vcc/Data/Gnd 三根线,省事!!!

这个省IO,哪里买的,可以装汽车大灯上当流水灯用

Feeling_MCU 发表于 2018-5-13 10:18:50

用三毛钱8脚单片机做过, 简单的显示效果没啥问题,如果来些花样就I不好搞了,速度不够。

leolong03 发表于 2018-5-13 13:30:06

好东西,还可以这样操作

cdwess 发表于 2018-5-13 15:48:04

以前没了解过,没想到这个灯带对单片机速度要求这么高,顶楼主

appfan 发表于 2018-5-15 07:29:18

SNOOKER 发表于 2018-5-13 09:48
这个省IO,哪里买的,可以装汽车大灯上当流水灯用

TB上搜索“WS2812灯带”就行,根据显示密度购买对应灯带!

appfan 发表于 2018-5-15 07:31:03

cdwess 发表于 2018-5-13 15:48
以前没了解过,没想到这个灯带对单片机速度要求这么高,顶楼主

要想使用低端低频(8M)单片机基本上就只能汇编算指令周期了!!

appfan 发表于 2018-5-15 07:33:44

Feeling_MCU 发表于 2018-5-13 10:18
用三毛钱8脚单片机做过, 简单的显示效果没啥问题,如果来些花样就I不好搞了,速度不够。 ...

三毛钱的单片机,你说的是台湾出的吧,自己用过最便宜的也八毛钱了!

appfan 发表于 2018-5-15 07:34:47

1066950103 发表于 2018-5-11 08:40
这灯都有些什么行业应用呢?拿来显示led显示器用咋样?

那真心不便宜,还不如买个点阵的LED拼接屏呢!

amazing030 发表于 2018-5-17 14:55:10

appfan 发表于 2018-5-15 07:34
那真心不便宜,还不如买个点阵的LED拼接屏呢!

流水灯的部分能发出来看看不,我觉得我做着玩的颜色太难看了{:sad:}

liang16888 发表于 2018-5-17 15:08:33

挑战极限不错 有前途

mypc16888 发表于 2018-5-20 08:29:02

长见识了,感谢,灯珠

liyang0727 发表于 2018-5-23 19:52:11

厉害厉害

sirriam 发表于 2018-5-24 11:25:57

汇编部分的程序能发出来看看不,感觉时序上有点困难

unnormal 发表于 2018-5-26 21:29:59

欣赏一下{:handshake:}{:handshake:}

adslmorisong 发表于 2018-5-26 23:35:54

历害。。。。。

zengboys 发表于 2018-5-26 23:36:07

还有这种灯带,了解下

jiangshaoyatui 发表于 2018-5-27 08:13:20

好玩的东东    看看先

liyang0727 发表于 2018-5-28 16:40:28

彩色灯带

clesun 发表于 2018-5-28 19:02:54

korren 发表于 2018-5-10 07:19
SM16726可见接1024个灯珠,串口通讯,最高30M串行速度。控制非常方便。

供电得隔一段加个5V吧,B型的电流还是蛮大的,接近17mA。这么多灯后边的颜色一致性也是个事。

sunnyqd 发表于 2018-5-28 20:05:19

clesun 发表于 2018-5-28 19:02
供电得隔一段加个5V吧,B型的电流还是蛮大的,接近17mA。这么多灯后边的颜色一致性也是个事。 ...

可以用WS2812C,电流小很多,适合室内用

titan0731avr 发表于 2018-5-31 01:44:00

800k 光是跑中斷,AVR就快喘不過來了,引腳剩再多都沒什麼用

bjc55 发表于 2018-5-31 16:49:48

限量还可以的 多就好像不太行哦。

gmyu 发表于 2018-8-10 17:05:38

arduino的也用avr。各种花样,我用示波器看了两个上升沿之间大约1.2uS. 也是800k。

天荒 发表于 2018-8-10 17:48:20

赞一个,很不错。

appfan 发表于 2018-8-13 07:05:12

gmyu 发表于 2018-8-10 17:05
arduino的也用avr。各种花样,我用示波器看了两个上升沿之间大约1.2uS. 也是800k。 ...

还是感觉用ICCAVR直接C写代码方便,arduino IDE用着不顺手!

gmyu 发表于 2018-8-13 10:58:08

appfan 发表于 2018-8-13 07:05
还是感觉用ICCAVR直接C写代码方便,arduino IDE用着不顺手!

WS2812FX
53种特效,我现在跑120个灯,托托的。你试试。

pcl 发表于 2018-8-13 13:57:07

历害, 挑战极限,不错...有程序就更好了

xjjiang 发表于 2018-8-15 10:23:27

appfan 发表于 2018-8-13 07:05
还是感觉用ICCAVR直接C写代码方便,arduino IDE用着不顺手!

楼主是否可以公开灯流动刷新那块的源码呢?

chenweigang 发表于 2019-4-10 13:37:53

gmyu 发表于 2018-8-13 10:58
WS2812FX
53种特效,我现在跑120个灯,托托的。你试试。

兄弟用了哪个单片机移植WS2812FX

gmyu 发表于 2019-4-12 10:02:58

chenweigang 发表于 2019-4-10 13:37
兄弟用了哪个单片机移植WS2812FX

stm32f103c8,spi+dma,不用汇编,因为就不走指令延时,直接设置好spi速率。
页: [1]
查看完整版本: 挑战AVR的极限驱动72个WS2812B灯珠!!!