基于STC8的WS2812b全彩灯实现

  • 一、WS2812B概述及驱动原理
    • 1、产品概述
    • 2、主要特点
    • 3、主要应用领域
    • 4、实物与引脚
    • 5、驱动原理
  • 二、软件实现
    • 1、原理图分析
    • 2、源码

WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。可做成长条灯带,普通用于房屋装饰,婚庆现场装饰,舞台装饰等,所以掌握WS2812BLED的驱动还是非常重要的,这里以最基本的51内核的STC8单片机为例来驱动WS2812BLED


一、WS2812B概述及驱动原理

1、产品概述

WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每
个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内
部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。
数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先
送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路
整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素
点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。
LED具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。将控制电
路集成于LED上面,电路变得更加简单,体积小,安装更加简便。

2、主要特点

● IC控制电路与LED点光源公用一个电源。
● 控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。
● 内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。
● 内置上电复位和掉电复位电路。
● 每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于
400Hz/s。
● 串行级联接口,能通过一根信号线完成数据的接收与解码。
● 任意两点传传输距离在不超过3米时无需增加任何电路。
● 当刷新速率30帧/秒时,级联数不小于1024点。
● 数据发送速度可达800Kbps。
● 光的颜色高度一致,性价比高。

3、主要应用领域

● LED全彩发光字灯串,LED全彩软灯条硬灯条,LED护栏管。
● LED点光源,LED像素屏,LED异形屏,各种电子产品,电器设备跑马灯。

4、实物与引脚


ws2812b如果要形成灯带,是串连在一起的,即DIN是连接在DO(或者DOU)引脚上的,连接如下图,模块内部有控制芯片的,会将芯片控制的颜色按位进行传输到对应的LED上。

模块引脚说明

5、驱动原理

每一个LED都需要24bit数据,形成RGB,RGB的数据格式如下

在这里需要注意的是发送时发送GRB,所以到时在写程序时特别要注意的了。
颜色的RGB码,大家都懂吧,不懂的请看下面操作

每一个LED都需要24bit数据,那么一位要么是1,要么是0了,如何表示数据0或者1的呢,请看官方资料


详细分析,可知,如果要发送1bit的数据0,那么要发送高电平并持续220ns420ns之间再发送低电平750ns1.6us之间。如果要发送1bit的数据1,那么要发送高电平并持续220ns420ns之间再发送低电平750ns1.6us之间。ws2812b内部有控制芯片,能够识别不同的电平宽度,这点很赞。

二、软件实现

1、原理图分析

本次的测试使用两个ws2812b全彩LED灯,下面是原理图与实物图,由图可知全彩灯连接在P54引脚上。

2、源码

Ws2812.c代码

sbit RGB_Data=P5^4;void Ws2812_Init(void)
{GPIO_InitTypeDef   GPIO_InitStructure;     //结构定义GPIO_InitStructure.Pin  = GPIO_Pin_4;        //指定要初始化的IO,GPIO_InitStructure.Mode = GPIO_OUT_PP;     //推挽输出  GPIO_Inilize(GPIO_P5,&GPIO_InitStructure);      //初始化   P0表示P0组}void Delay1us(void)     //@12.000MHz
{unsigned char i;i = 2;while (--i);
}//us级别延时
void delay_us(int tm_us)
{while(tm_us--)Delay1us();
}void RGB_SendByte(unsigned char Data) //12MHZ  _nop_()为83ns
{unsigned char i;for(i=0;i<8;i++){//数字1if(Data&(0x80>>i)){RGB_Data = 1;Delay1us();RGB_Data = 0;_nop_();_nop_();_nop_();_nop_();}//数字0else{RGB_Data = 1;//220ns~420ns_nop_();_nop_();_nop_();_nop_();RGB_Data = 0;Delay1us();//750ns~1.6us}}
}//发送24bit一帧数据  G->R->B 顺序发送
void RGB_Send24Bit(unsigned long  RGB)
{RGB_SendByte((unsigned char)((RGB>>8)&0xFF));//先发G 绿色RGB_SendByte((unsigned char)((RGB>>16)&0xFF));//再发R 红色RGB_SendByte((unsigned char)((RGB>>0)&0xFF));//最后发B 蓝色
}//目前开发板只串联了2个RGB灯 void RGB_CtrlColor(unsigned long  RGB1,unsigned long  RGB2){RGB_Send24Bit(RGB1);//延时一会delay_us(30);//不能超过50us  否则只能控制第一个灯,经过测试,这个不能大于50us,不知道是不是手册出错了。RGB_Send24Bit(RGB2);delay_us(300);//根据手册要大于300us} 

在不同的系统里只须知道_nop_();所有的时间,做出相对的修改即可。
主函数main.c

 int i;//全彩LED灯初始化Ws2812_Init();//对全彩LED灯进行硬件稳定for(i=0; i<5; i++){RGB_CtrlColor(0x000000, 0x000000);}//显示颜色测试,输出黄蓝 RGB_CtrlColor(0xFFFF00, 0x0000FF);while(1){}

效果

总结,这个并不是最好的驱动方式,如果需要驱动大量的全彩LED,会占用CPU资源,最优的方法应该是DMA加SPI(波形表示0或1)的方式进行驱动才是最优的方式。后期会再出一期,请期待!!!!!!!!!!!!!!!!!

基于STC8的WS2812b全彩灯实现相关推荐

  1. 乐鑫esp8266学习rtos3.0笔记第7篇:我又来了,基于rtos3.0版本 SDK编程 SPI 驱动 ws2812b 七彩灯,代码全部开源奉献给你们!

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  2. 基于ESP8266和WS2812B的智能炫彩灯牌设计

    一 产品介绍 本产品使用esp8266模块和ws2812b灯珠制作了一款wifi控制的智能家居炫彩灯牌.你还可以结合家中的其他物件,对其进行包装,实现各个灯的颜色变化.比如台灯,手电筒等等,甚至你还把 ...

  3. 单片机节日彩灯实训报告_基于单片机控制的节日彩灯设计.pdf

    ELECTRONICS WORLD 技术 交流 ・ 基于单片机控制的节日彩灯设计 徐州生物工程职业技术学院 魏建玮 [摘要] 为了增添节日气氛,大部分城市都会有节日彩灯,而节日彩灯大部分是单一循环的, ...

  4. B005 – 基于STC8的单片机智能路灯控制系统

    任务详情 基于单片机的智能路灯控制系统 非节能模式下LED灯同时亮灭,凌晨0点--6点为节能模式,该模式下只亮LED灯 中的一部分.当有声响时则开启全部LED灯,延迟1分钟后重新变为一半LED灯处于点 ...

  5. 单片机彩灯c语言程序设计,(定稿)毕业论文基于AT89C51单片机的LED彩灯控制器设计(完整版)...

    <[毕业论文]基于AT89C51单片机的LED彩灯控制器设计.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文基于AT89C51单片机的LED彩灯控制器设计(完整版) ...

  6. 华为鸿蒙系统四大特性:基于微内核,面向全场景,分布式架构

    来源:今日头条 8月9日,在广东东莞召开的华为开发者大会上,华为正式发布了自研操作系统:鸿蒙OS. 据华为消费者业务CEO.华为技术有限公司常务董事余承东介绍,鸿蒙OS是基于微内核的面向全场景的分布式 ...

  7. 普林斯顿大学英伟达Facebook提出基于深度神经网络的全动态推理,助力轻量级网络!...

    关注公众号,发现CV技术之美 ▊ 写在前面 深层神经网络是一种功能强大.应用广泛的模型,能够多级抽象提取任务相关信息.然而,这种成功通常是以计算成本.高内存带宽和长推理延迟为代价的,这使得它们无法部署 ...

  8. 基于jQuery商城网站全屏图片切换代码

    基于jQuery商城网站全屏图片切换代码.这是一款商城网站全屏多张图片滑动切换代码.效果图如下: 在线预览    源码下载 实现的代码. html代码: <div class="sli ...

  9. 一图读懂基于鲲鹏处理器的全栈混合云华为云Stack6.5

    [摘要] 够料的全栈混合云干货信息,速戳! 近日,在2019华为云城市峰会广州站上,华为云发布基于鲲鹏处理器的全栈混合云解决方案HCS 6.5.x86+鲲鹏,双驱动开启云上新架构;云上+本地,双平台无 ...

  10. ios微内核和鸿蒙微内核,华为发布基于微内核、面向全场景的分布式操作系统:鸿蒙OS...

    PingWest品玩8月9日讯,华为消费者业务今天在其全球开发者大会上正式向全球发布其全新的基于微内核的面向全场景的分布式操作系统--鸿蒙OS. 鸿蒙OS将作为华为迎接全场景体验时代到来的产物,发挥其 ...

最新文章

  1. 使用python中的Matplotlib绘图示例
  2. ASP.NET 2.0中如何连接到Mysql(转)
  3. Android日志系统分析之开篇
  4. springmvc.xml 中 url-pattern/url-pattern节点详解
  5. 高等数学上-赵立军-北京大学出版社-题解-练习2.3
  6. python配置pip_Python pip源配置
  7. android已停止三星,急,android离线打包程序三星下总报 程序 已停止
  8. 单片机广告灯实验总结_温州很强的ly51s单片机程序开发公司
  9. 【5】测试用例设计-状态迁移图
  10. IBM GTS部门或有重大调整,最快本周见分晓
  11. qt 中获取摄像头视屏并传输
  12. 2020SpringCloud学习年终总结——第九章-Gateway
  13. 抽象类和接口的区别(之二)
  14. 史上最全因果推断合集-uplift
  15. python基础-文本对齐(居中,左对齐,右对齐)
  16. 输出菱形(C语言,萌新向)
  17. 怎么用命令改变legend在图中的位置
  18. Oracle Partner Levels and Diamond Partners List
  19. 蚂蚁区块链正式升级为蚂蚁链,究竟在下怎样的一盘大棋?
  20. 使用Python对大脑成像数据进行可视化分析

热门文章

  1. 匹配滤波器为何使得输出SNR最大?
  2. 程序员找女朋友都有哪些标准?
  3. TR069协议与商业应用8——移植cwmp到ARM平台运行和测试
  4. mac上文字识别(Tesseract-OCR for mac )
  5. 游戏音效制作的基本步骤
  6. 标准cpci接口定义_cpci接口定义精简
  7. 如何恢复MAC苹果电脑系统数据文件恢复详细教程
  8. Cocos Creator | 导航网格自动寻路:多角色寻路、动态规避障碍物、上/下坡度等
  9. 《女士品茶》与统计检验
  10. 时间的几种格式以及它们之间的相互转换 (js)