WS2812B 是内置芯片控制各种颜色
具体信息应该都可以 查到,这里不详细说了
还是上面的表 是时间表
通过实验 其实并不严格
89c52rc 指令是STC-Y1 也就是大部分指令 都要12 或者 24 个周期 才能完成(指定IO端口高低电平是12)
而WS2812B最短间隔0.4微妙(400ns)根据150ns 偏差 这个值在250-550ns之间
1s=1000ms=1,000,000us=1,000,000,000ns
计算得到1s/250ns12=48,000,000=48Mhz
1s/550ns12=21.818,172=21.818,172Mhz
计算速度是这样的 但实际电路中24Mhz 一条指令500ns 灯是只能显示白色
所以最好还是按400算 就是30MZ(双倍为15Mhz) 电路中 32Mhz 12T 可以正常驱动
上面计算好了 下面 就说一下驱动过程吧
为方便计算我们就以24M 6T 运行 大概就是相当于48Mhz 元件电路不好 其实 运行 也就是 47.9hz
短周期指令 计算大概是250ns 其实是大于这个的 但根据上面250-550 之间【250-400】是可行
sbit Send_Dat=P2^7;//先定义下IO口
发送一位0时
Send_Dat=1 //250ns
Send_Dat=0 //250ns
_nop_(); //250ns
_nop_(); // 250ns
//根据上面够了
发送1时 //850 +/-150 为 【600-1000】
Send_Dat=1 //250ns
_nop_(); //250ns
_nop_(); //250ns
Send_Dat=0 //250ns
具体代码为:
void send0()//24Mhz 6T
{
Send_Dat=1; //250ns
_nop_(); //250ns
_nop_(); //250ns
Send_Dat=0; //250ns
}
void send1