51驱动WS2812B三色流水灯

  • WS2812简介
    • 模组选型
      • 关于WS2812的时序解析
        • 发送数据格式解析
        • 部分代码
        • 功能现象
        • 总结

原文链接:https://www.yourcee.com/newsinfo/2926373.html

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);
}

功能现象

可以参考下图亮灯效果:

总结

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

51系列驱动WS2812相关推荐

  1. uIP TCP/IP协议栈在51系列单片机上的应用

    uIP 协议栈是一种免费的可实现的极小的TCP/IP协议栈,可以使用于由8位或16位微处理器构建的嵌入式系统.本文分析了uIP协议栈的结构和应用接口,并讨论了如何将其应用到51系列单片机上. 关键字: ...

  2. 51单片机驱动HMI串口屏,串口屏的下载方式

    51单片机驱动HMI串口屏,串口屏的下载方式 串口屏 串口屏的程序下载 51程序 总结 串口屏 串口屏是一个集成了单片机的屏幕模块,采用的是TTL串口协议,可以直接通过对应指令控制屏幕, 本文采用的串 ...

  3. STC15F104W驱动WS2812

    STC15F104W驱动WS2812 提示:学习目标:了解WS2812的驱动原理,写出驱动代码. 内容: 提示:这里可以添加要学的内容 例如: 1. 连接WS2812时序: 2. 基于STC15F10 ...

  4. 51系列中data,idata,xdata,pdata的区别[笔记]

    51系列中data,idata,xdata,pdata的区别 data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. idata:固定指前面0x0 ...

  5. 51单片机除c语言 中断嵌套,关于51系列单片机中断嵌套 - 关于单片机中断嵌套总结...

    关于51系列单片机中断嵌套 说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套.现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了. 在说到 ...

  6. 在51系列中data,idata,xdata,pdata的区别

    单片机keil C中的data, bdata, idata, hdata, pdata, code解释 2016年03月11日 15:12:33 记忆之墙 阅读数:2375 标签: C51dataco ...

  7. 51系列单片机采用脉冲宽度调制(PWM)

    介绍一个51系列单片机采用脉冲宽度调制(PWM)方式控制LED灯亮度的一个程序,大家都知道,51单片机本身是没有pwm接口的,这个程序是 通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的 ...

  8. c语言编程TLC2543AD采集,51单片机驱动12位AD转换TLC2543电路图+程序

    51单片机驱动12位AD转换TLC2543电路图+程序 2015-06-18 16:51:15   来源:51hei void resultvolt() { volt=volt*5000.0/4334 ...

  9. 51单片机驱动——LCD1602

    51单片机驱动--LCD1602 1.描述 51单片机控制LCD1602屏幕显示测量数据.固定字符串等,大家复制过去可以直接使用,相关注释我已标明. 2.子文件 LCD1602.c #include ...

最新文章

  1. 如何建立自信心,不错!
  2. WPF 路由事件初步
  3. Elasticsearch5.X Mapping万能模板
  4. linux下hg无法运行_在 Windows 里也可以访问 Linux 子系统文件了
  5. Android广播机制:Broadcast
  6. 工作闲了觉得无聊,忙了觉得累......
  7. (52)Xilinx差分原语-IBUFGDS与OBUFGDS(第11天)
  8. Luogu2216 [HAOI2007]理想的正方形
  9. uni-app 简易商城制作
  10. win8.1搭建php环境,WIN8.1下搭建PHP5.6环境
  11. 电脑开机左上角只有一个减号一直在闪的解决方案
  12. CVPR2021 最具创造力的那些工作成果!或许这就是计算机视觉的魅力!
  13. M32S 串口摄像头的技术应用
  14. 人工智能到底是什么?AI基础概念深度解析
  15. 关于云计算存储虚拟化技术三个层次上的实现
  16. 沪深A股指数历史分时交易数据API接口(JSON标准格式,Get请求方式)
  17. 金明的预算budget题解
  18. 虚拟机显示网络不可用
  19. php mysql 源码_【完结】php+MySQL实战案例【九】总结及源码分享
  20. 12月16日广州.NET俱乐部下午4点爬白云山活动

热门文章

  1. 更新整理了一大波热门免费可用的API大全
  2. 小程序canvas画画板签字版,touchmove时卡顿的问题(根本原因是因为vue语法中page.data导致视图层和逻辑层的频繁通讯导致)
  3. Fiido Riding苹果app的技术支持网址
  4. 推荐系统常用评价指标:NDCG、Recall、Precision、Hit Rate
  5. mac电脑真正好用且实用的软件(不断积累)
  6. Oracle2021 年度安全警告,8 个安全漏洞需要注意
  7. 联想笔记本X1开机报错0271:Check Date and Time setting,系统无限重启
  8. 标准C语言day03
  9. 教育叙事计算机学科,信息技术教师教育叙事
  10. 【运维】K8S集群部署系列之ETCD集群搭建(二)