xdata那里我用的时候他总说前面少了个分号,咋回事 |
xxd0708 发表于 2021-5-13 07:01 好的谢谢作者! |
xxd0708 发表于 2021-5-13 07:00 搜索“51单片机(12MHz@12T)驱动WS2812B” |
tungkin 发表于 2021-5-12 19:16 8M4T每个指令周期0.5uS,置位或清零引脚为2个指令周期即1uS,显然不能直接驱动。但可以用RC电路延时解决,参看我的另一个贴子 |
8M4T的片子有方法驱动吗?楼主可以提供一下思路吗谢谢。 |
xxd0708 发表于 2021-3-30 09:20 虽然这个单片机没用过,我就大概猜一下逻辑,也就是说再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的时序 |
xxd0708 发表于 2021-3-30 09:20 哦,这个单片机没用过 |
johnspen 发表于 2021-3-30 00:40 1,CY就是进位标志C,51单片机头文件中有定义,在C语言中用CY直接调用; 2,左移data后,最高位移入CY; 3,函数中,将CY值写至引脚的作用,CY=0比CY=1提前拉低,体现为高电平的脉宽变化。 |
你的CY定义在哪里? 还有ws2812_write_byte 函数中 data<1逐个发送过程中,在while(i)里面怎么区分data的0,1? 如果是0,那么时间要小于0.45us,如果是1要大于0.45,这在函数中没有体现? |
Levent 发表于 2021-2-23 16:22 我的另一个贴子里有普通51单片机驱动ws2812b的例子,对晶振频率要求低一些。参看http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=202899&extra=page%3D1&mobile=no |
Levent 发表于 2021-2-23 16:22 如图中实物连有三条线,两条是电源VCC GND,另一条是数据线。 电源可与单片机共用,灯珠数量多时最好单独供电,但要与单片机共地,电压5V(USB)至3.7V(锂电池)都可以,3.3V有点闪。每个(或每两个)灯珠的电源处要并一个小电容(0.1uF)。 单片机IO上拉输出或推挽输出,与灯带数据输入(DIN)间最好加一个小电阻(100欧)防冲击,实验时不加也可以。灯带还有个输出线DOUT,可以级联下一灯带的DIN。 单总线方式,驱动较简单,两种状态:复位(较长时间的低电平)或位传送。位0或位1取决于高电平脉宽,低电平宽度要求不高,小于复位就行。(三楼有具体说明) 应用挺方便的,动手试试。需要注意的是,因位传送时高电平的脉宽均在uS级以下,单片机频率要适当提高些。 |
Levent 发表于 2021-2-23 16:22 普通IO口 串联100欧电阻 连过去就行了 必须能够输出5V电平。不能3.3V |
楼主你好,新手求教,灯带和单片机的接口该怎么连接呢? |
89C52驱动WS2812 http://www.51hei.com/bbs/dpj-170855-1.html |