首页 > 编程知识 正文

51单片机ws2811驱动程序,ws2811驱动程序

时间:2023-05-04 09:09:03 阅读:228154 作者:287

51驱动WS2812B三色流水灯 WS2812简介模组选型关于WS2812的时序解析发送数据格式解析部分代码功能现象总结

WS2812简介

WS2812B-5050是一个集控制电路与发光电路于一体的智能外控LED光源;其外型采用最新的molding封装工艺,将IC与发光芯片封装在一个5050的封装尺寸中,每个元件即为一个像素点;像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和可编程定电流控制部分,有效保证了像素点光的颜色高度一致。下图为我所采用的25位的WS2812B RGB LED开发板。

点击图片购买

模组选型

主控方面选择STC15系列的STC15W204S,这是一款只有8个引脚的高性能单片机,相对于传统的8051他的时钟速度更快,外围电路不需要太多内部集成了ICR晶振可供选择,在下载时勾选上就好,在驱动WS2812的过程中普通的12T单片机不是很好做到精准控制时序,所以选择次单片机IO口虽然小但是功能够用就好。具体图片如下图所示:

点击图片购买

关于WS2812的时序解析


由此可以看的出来WS2812对时序还是要求比较严格的,需要到ns级别,我们也可以看到发0码的时序和发1码的时序是刚好相反的。

发送数据格式解析


上图中我们可以知道在发送数据时是按照GRB的顺序高位先发的。

部分代码 发送 0,1码时序,此时序由逻辑分析仪拉波形得出,时间上准确无误。 void WS2812_bit(bit data_bit){if(data_bit){LED=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LED=0;}else{LED=1;_nop_();_nop_();_nop_();_nop_();LED=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}} 发送24位数据分开解析,封装此函数,能更容易移植改变灯的颜色直接根据RGB值设置就好 void WS2812_rand_color(unsigned char R,unsigned char G,unsigned char B){WS2812_bit(G&0X80);WS2812_bit(G&0X40);WS2812_bit(G&0X20);WS2812_bit(G&0X10);WS2812_bit(G&0X08);WS2812_bit(G&0X04);WS2812_bit(G&0X02);WS2812_bit(G&0X01);WS2812_bit(R&0X80);WS2812_bit(R&0X40);WS2812_bit(R&0X20);WS2812_bit(R&0X10);WS2812_bit(R&0X08);WS2812_bit(R&0X04);WS2812_bit(R&0X02);WS2812_bit(R&0X01);WS2812_bit(B&0X80);WS2812_bit(B&0X40);WS2812_bit(B&0X20);WS2812_bit(B&0X10);WS2812_bit(B&0X08);WS2812_bit(B&0X04);WS2812_bit(B&0X02);WS2812_bit(B&0X01);} 功能现象

可以参考下图亮灯效果:

总结

长期发布此类文章,谢谢大家的关注与喜欢,代码有需求的留言再评论区邮箱获取哦。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。