找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机驱动WS2812B灯演示程序

查看数: 15509 | 评论数: 16 | 收藏 8
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-2-20 16:07

正文摘要:

示例采用HC89S003F4单片机和7灯Ws2812灯带。HC89S003F4是1T增强型51单片机,如用其他51单片机,需调整晶振频率。示例仅进行7灯的单次驱动,可在声明和数组中改变灯珠数量和数据,主函数中修改后可实现流水灯效果。 ...

回复

ID:991413 发表于 2021-12-12 21:20
xdata那里我用的时候他总说前面少了个分号,咋回事
ID:920224 发表于 2021-5-13 09:15
xxd0708 发表于 2021-5-13 07:01
搜索“51单片机(12MHz@12T)驱动WS2812B”

好的谢谢作者!
ID:885138 发表于 2021-5-13 07:01
xxd0708 发表于 2021-5-13 07:00
8M4T每个指令周期0.5uS,置位或清零引脚为2个指令周期即1uS,显然不能直接驱动。但可以用RC电路延时解决 ...

搜索“51单片机(12MHz@12T)驱动WS2812B”
ID:885138 发表于 2021-5-13 07:00
tungkin 发表于 2021-5-12 19:16
8M4T的片子有方法驱动吗?楼主可以提供一下思路吗谢谢。

8M4T每个指令周期0.5uS,置位或清零引脚为2个指令周期即1uS,显然不能直接驱动。但可以用RC电路延时解决,参看我的另一个贴子
ID:920224 发表于 2021-5-12 19:16
8M4T的片子有方法驱动吗?楼主可以提供一下思路吗谢谢。
ID:611155 发表于 2021-3-30 14:28
xxd0708 发表于 2021-3-30 09:20
1,CY就是进位标志C,51单片机头文件中有定义,在C语言中用CY直接调用;
2,左移data后,最高位移入CY; ...

虽然这个单片机没用过,我就大概猜一下逻辑,也就是说再while(i)里面,就先直接将IO口拉高,这里有一个时间,然后把CY(也就是左移后的高位给IO口),如果是1,那么就是高位持续了2个时间,如果是0,那么高位就持续了1个时间,如果WS2812_IO = 1;这个时间是0.45us,2个时间就是*2 =0.9us, 一个时间就是0.45us。
就是CY是1的话,就是高0.9us +_nop_();+WS2812_IO = 0;就是符合了W2812的时序
ID:611155 发表于 2021-3-30 14:20
xxd0708 发表于 2021-3-30 09:20
1,CY就是进位标志C,51单片机头文件中有定义,在C语言中用CY直接调用;
2,左移data后,最高位移入CY; ...

哦,这个单片机没用过
ID:885138 发表于 2021-3-30 09:20
johnspen 发表于 2021-3-30 00:40
你的CY定义在哪里? 还有ws2812_write_byte 函数中 data

1,CY就是进位标志C,51单片机头文件中有定义,在C语言中用CY直接调用;
2,左移data后,最高位移入CY;
3,函数中,将CY值写至引脚的作用,CY=0比CY=1提前拉低,体现为高电平的脉宽变化。
ID:611155 发表于 2021-3-30 00:40
你的CY定义在哪里? 还有ws2812_write_byte 函数中 data<1逐个发送过程中,在while(i)里面怎么区分data的0,1? 如果是0,那么时间要小于0.45us,如果是1要大于0.45,这在函数中没有体现?
ID:885138 发表于 2021-2-25 08:31
Levent 发表于 2021-2-23 16:22
楼主你好,新手求教,灯带和单片机的接口该怎么连接呢?

我的另一个贴子里有普通51单片机驱动ws2812b的例子,对晶振频率要求低一些。参看http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=202899&extra=page%3D1&mobile=no
ID:885138 发表于 2021-2-24 00:07
Levent 发表于 2021-2-23 16:22
楼主你好,新手求教,灯带和单片机的接口该怎么连接呢?

如图中实物连有三条线,两条是电源VCC GND,另一条是数据线。
电源可与单片机共用,灯珠数量多时最好单独供电,但要与单片机共地,电压5V(USB)至3.7V(锂电池)都可以,3.3V有点闪。每个(或每两个)灯珠的电源处要并一个小电容(0.1uF)。
单片机IO上拉输出或推挽输出,与灯带数据输入(DIN)间最好加一个小电阻(100欧)防冲击,实验时不加也可以。灯带还有个输出线DOUT,可以级联下一灯带的DIN。
单总线方式,驱动较简单,两种状态:复位(较长时间的低电平)或位传送。位0或位1取决于高电平脉宽,低电平宽度要求不高,小于复位就行。(三楼有具体说明)
应用挺方便的,动手试试。需要注意的是,因位传送时高电平的脉宽均在uS级以下,单片机频率要适当提高些。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:390416 发表于 2021-2-23 16:55
Levent 发表于 2021-2-23 16:22
楼主你好,新手求教,灯带和单片机的接口该怎么连接呢?

普通IO口 串联100欧电阻 连过去就行了  必须能够输出5V电平。不能3.3V
ID:885879 发表于 2021-2-23 16:22
楼主你好,新手求教,灯带和单片机的接口该怎么连接呢?
ID:390416 发表于 2021-2-22 20:05

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表