STC15控制WS2812 RGB彩灯级联

下面是基于STC15F2K60S2的WS2812RGB彩灯级联测试。

一、WS2812介绍

引脚

工作时序

注意

当我们使用WS2812控制RGB彩灯的时候,每一个彩灯需要发送24bit数据RGB各8BIt控制,如果我们要控制两个则需要连续发送48bit数据,同理当我们要控制N个彩灯的时候,需要发送N*24bit数据。

二、WS2812级联接线

下面是我使用两个WS2812进行级联,WS2812在使用过程中只需要一根控制线就可以了,OUT连接下一块的IN,接多块WS2812同样如此进行连接

三、实验测试

RGB颜色表


代码中的颜色是根据上述的RGB颜色表来写的

1.ws2812.c

#include "ws2812.h"
#include "delay.h"
#include <intrins.h>#include <STC15F2K60S2.H>#define LED_COUNT 8     //控制彩灯的个数
sbit IN = P3^2;        //WS2812输入引脚控制//WS2812发送的顺序是GRB,ledcount表示LED的个数,color表示LED的种类
void RGB_LED_Controal(unsigned char led_count,unsigned char color)
{unsigned char i = 0;for(i=0;i<led_count;i++)  //控制灯的个数{switch(color){//RGB颜色可以网上查看RGB颜色表case 1:Send_24bit(0xc9,0x00,0x57);break;  //翠绿色case 2:Send_24bit(0x20,0xa0,0xF0);break; //紫色case 3:Send_24bit(0x70,0xda,0xd6);break;  //淡紫色case 4:Send_24bit(0x59,0x3d,0xab);break;  //钴色case 5:Send_24bit(0x80,0xfa,0x72);break;  //橙红色case 6:Send_24bit(0x8a,0x80,0x87);break;  //冷灰case 7:Send_24bit(0x80,0x80,0x69);break;  //暖灰色case 8:Send_24bit(0xf0,0xfa,0xe6);break;   //亚麻色case 9:Send_24bit(0x00,0xff,0x00);break;  //红色case 10:Send_24bit(0x30,0xb0,0x60);break;  //栗色case 11:Send_24bit(0xfc,0x7c,0x00);break;  //草地绿case 12:Send_24bit(0xff,0x00,0xff);break;  //青色case 13:Send_24bit(0x2e,0x08,0x54);break;  //靛青case 14:Send_24bit(0x8f,0xbc,0xbf);break;   //玫瑰红case 15:Send_24bit(0x19,0x19,0x70);break;  //孔雀蓝case 16:Send_24bit(0xc7,0x00,0x8c);break;  //土耳其玉色case 17:Send_24bit(0xe6,0xf0,0x8c);break;  //黄褐色case 18:Send_24bit(0xff,0x00,0x7f);break;  //嫩绿色 default:Send_24bit(0x00,0x00,0x00);break;                   }}
}//数据复位 低电平持续300us以上
void ResetData(void)
{unsigned char i = 0;IN = 0;for(i = 0;i<6;i++){Delay50us();}
}void Send_Byte(unsigned char temp)
{unsigned char i = 0;for(i = 0;i<8;i++){if(temp & 0x80)  //从高位开始发送{//发送“1”码IN = 1;   //高电平 持续760ns-1.6us _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();IN = 0;  //低电平 持续时间220ns-420ns_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();            }else{//发送"0"码    IN = 1;//高电平持续时间 220ns-420ns_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();   IN = 0;//低电平持续时间 750ns-1.6us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}temp = (temp << 1);  //次高位}//  Delay10us();
}//发送一帧数据RGB 各八位
void Send_24bit(unsigned char dat1,unsigned char dat2,unsigned char dat3)
{Send_Byte(dat1);Send_Byte(dat2);Send_Byte(dat3);
}//-------------------------------------------------------------------------------

2.ws2812.h

#ifndef _WS2812_H_
#define _WS2812_H_void ResetData(void);
void SendPix(unsigned char *str);
void SendOneFrame(unsigned char *ptr);void Send_Byte(unsigned char temp);
void Send_24bit(unsigned char dat1,unsigned char dat2,unsigned char dat3);
void RGB_LED_Controal(unsigned char led_count,unsigned char color);
#endif

3.main.c

#include <STC15F2K60S2.H>
#include "delay.h"
#include "ws2812.h"void main(void)
{unsigned char i = 0,j =0;P0M0 = 0x00;P0M1 = 0x00;P1M0 = 0x00;P1M1 = 0x00;P3M0 = 0x00;P3M1 = 0x00;P5M0 = 0x00;P5M1 = 0x00;P1 = 0xFF;P3 = 0xFF;P5 = 0xFF;   while(1){   for(i = 0;i<8;i++) //外层控制LED的个数{for(j = 0;j<6;j++) //内层控制LED的颜色种类{RGB_LED_Controal(i,j);ResetData();Delay500ms();}}}
}

实验效果

下图的结果是全部一起控制的现象,大家可以根据自己的展示需求进行不同的操作。

【STC15控制WS2812 RGB彩灯级联】相关推荐

  1. esp32 micropython 控制ws2812 RGB灯带

    ws2812RGB灯带 ==注意:==灯带需要三个线头都接好,然后程序输出控制后才能亮,只是正负极插好不会亮的 连接走线: esp32 RGB灯带 5v引脚 母头电源处 gnd 母头gnd D12引脚 ...

  2. 最简单DIY基于ESP8266的智能彩灯⑦(APP通过彩虹调色板和WIFI控制WS2812彩灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...

  3. 中科蓝讯 AB32VG1 开发板 GPIO 控制RGB彩灯实验

    本篇文章通过 RT-Thread Studio 配置 AB32VG1 片上外设 GPIO 的引脚,控制 RGB 彩灯进行红绿蓝三色的变换. 1. 模块介绍开发板上板载一个三色 RGB 彩灯,电路原理图 ...

  4. 秉火429笔记之五控制RGB彩灯

    1. RGB彩灯混色 RGB彩灯实际上由三盏分别为红.绿.蓝的LED灯组成的,通过控制RGB颜色强度的组合,可以混合出各种彩色. /* 基本混色*/// LED1(R)/ LED2(G)/ LED3( ...

  5. esp8266接入Blinker小爱同学控制WS2812的RGB以及亮度调节

    esp8266接入Blinker小爱同学控制WS2812的RGB以及亮度调节 所需准备的库: Adafruit_NeoPixel Blinker 开发板选择 1.源代码部分: 源代码: //WS281 ...

  6. AB32开发板测评:GPIO控制RGB彩灯

    文章目录 [AB32VG1]开发板测评:RGB彩灯 一.初始准备 1.硬件平台 2.软件平台 二.操作步骤 1.RTT环境生成 2.RTT程序编写 3.程序下载,观察现象 三.心得 [AB32VG1] ...

  7. 利用硬件SPI控制WS2812,驱动1024颗灯珠

    " 简 介: 利用ESP32中的硬件SPI控制WS2812的显示.使用了高频三极管9018 作为输出接口反向器,确定合适的电阻参数,验证了驱动方案的硬件和软件的可行性. 关键词: WS281 ...

  8. Arduino控制WS2812灯带(灯环)

    设计者:STCode(公众号同名) Arduino控制WS2812灯带(灯环) 1) WS2812灯 WS2812灯带 WS2812灯环 WS2812是一个集控制电路与发光电路于一体的智能外空LED光 ...

  9. APT32F102-SIO模块控制WS2812

    1.硬件电路 2.  数据协议采用单线归零码的通讯方式, 像素点在上电复位以后, DIN端接受从控制器传输过来的数据, 首先送过来的24bit数据被第一个像素点提取后, 送到像素点内部的数据锁存器, ...

最新文章

  1. 摄像头模组(CCM)与镀膜
  2. linux run文件夹,Linux下运行run文件
  3. python中使用socket编程实现带有界面的客户端向服务端发送文件和下载文件
  4. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
  5. ie统计报表html,IE中动态添加表格
  6. C++实现树的基本操作,界面友好,操作方便,运行流畅,运用模板
  7. python有道云笔记_你很需要的,一个一键导出「有道云笔记」所有笔记的功能
  8. MFS分布式文件系统搭建
  9. Linux下QT4.7.1静态编译过程
  10. 售前更需要关注客户业务
  11. linux shell 数字计算详解
  12. 发几个iphone助手相关代码,供大家参考
  13. lwj_C#_集合stack栈和queue队列
  14. mtk平台dump系统分区
  15. 可买房摇号,北京市工作居住证全面解读
  16. bitbucket 代码备份
  17. 文献阅读——金属伪影减少MAR问题
  18. ctfshow web78-web81文件包含漏洞 wp
  19. 主wifi旁零距离添加AP路由器
  20. 美团笔试题 淘汰分数

热门文章

  1. 石墨文档 Websocket 百万长连接技术实践
  2. 工作站 linux系统安装win7,Dell T7500工作站 Win7/RHEL5.5双系统启动菜单修复
  3. 前端项目中使用js-beautify格式化、美化js代码
  4. 华为TechWave峰会上主推的分布式云到底什么来头?
  5. studing(来自转载)
  6. 银行账号和身份证号的数据有效性设置
  7. selenium+cookie自动登录新浪微博(二)
  8. android点赞取消赞功能吗,Android 仿微博的点赞功能的实现原理(持续点赞再取消)...
  9. 用计算机谈狂狼,抖音狂狼原唱是谁 抖音狂狼完整版歌词
  10. 什么是淘宝店铺SKU