前段时间做了个88颗灯珠的原形灯板,分别用stm8s003和n76e003写了底层驱动,

根据手册要求代码如下:

STM8S003

#include "fy_ws2812b.h"/*此代码针对stm8s003平台 @16M灯的性质决定,需要一次性刷新,比如16个灯就必须一次性刷新16个,
而不能一个一个中间有间隔的刷新,这样就只有一地个灯亮,
如果需要花样把不需要亮的灯设置为不亮0x000000即可*//*以下定义如果没有需要自行定义*/
//#define BYTE_0(n)                 ((u8)((n) & (u8)0xFF))        /*!< Returns the low color of the 32-bit value */
//#define BYTE_1(n)                 ((u8)(BYTE_0((n) >> (u8)8)))  /*!< Returns the second color of the 32-bit value */
//#define BYTE_2(n)                 ((u8)(BYTE_0((n) >> (u8)16))) /*!< Returns the third color of the 32-bit value */
//#define BYTE_3(n)                 ((u8)(BYTE_0((n) >> (u8)24)))
//#define enableInterrupts()    EA=1
//#define disableInterrupts()   EA=0//根据平台定义
#define _nop_() asm("nop")#define delay1NOP() _nop_();
#define delay2NOP() delay1NOP();_nop_();
#define delay3NOP() delay2NOP();_nop_();
#define delay4NOP() delay3NOP();_nop_();
#define delay5NOP() delay4NOP();_nop_();
#define delay6NOP() delay5NOP();_nop_();
#define delay7NOP() delay6NOP();_nop_();
#define delay8NOP() delay7NOP();_nop_();
#define delay9NOP() delay8NOP();_nop_();
#define delay10NOP()    delay9NOP();_nop_();
#define delay11NOP()    delay10NOP();_nop_();
#define delay12NOP()    delay11NOP();_nop_();
#define delay13NOP()    delay12NOP();_nop_();
#define delay14NOP()    delay13NOP();_nop_();
#define delay15NOP()    delay14NOP();_nop_();//引脚
#define RGB_PIN_H() GPIOD->ODR |= (uint8_t)GPIO_PIN_5;
#define RGB_PIN_L() GPIOD->ODR &= (uint8_t)(~GPIO_PIN_5)void Ws2812b_Configuration(void)
{GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST);RGB_PIN_L();
}
#if 0
static void Ws2812b_Write0(void)
{RGB_PIN_H();delay6NOP();RGB_PIN_L();
}static void Ws2812b_Write1(void)
{RGB_PIN_H();delay12NOP();RGB_PIN_L();
}static void Ws2812b_WriteByte(u8 color)
{if(color & 0x80)Ws2812b_Write1();elseWs2812b_Write0();if(color & 0x40) Ws2812b_Write1();elseWs2812b_Write0();if(color & 0x20)Ws2812b_Write1();elseWs2812b_Write0();if(color & 0x10)Ws2812b_Write1();elseWs2812b_Write0();if(color & 0x8)Ws2812b_Write1();elseWs2812b_Write0();if(color & 0x4)         Ws2812b_Write1();elseWs2812b_Write0();if(color & 0x2)         Ws2812b_Write1();elseWs2812b_Write0();if(color & 0x1)         Ws2812b_Write1();elseWs2812b_Write0();
}
#else
/*程序进出都需要耗时的,用下面的方法替代上面更佳*/
static void Ws2812b_WriteByte(u8 color)
{if(color & 0x80){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}    if(color & 0x40){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x20){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x10){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x8) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x4) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x2) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x1) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}
}#endif
void Ws2812b_Write(u32 color)
{
#if 0Ws2812b_WriteByte(BYTE_1(color));//greenWs2812b_WriteByte(BYTE_2(color));//redWs2812b_WriteByte(BYTE_0(color));//blue
#else
/*同理*/    //greenif(color & 0x8000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}  if(color & 0x4000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}   if(color & 0x2000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}   if(color & 0x1000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}   if(color & 0x800) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}   if(color & 0x400) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}   if(color & 0x200) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}   if(color & 0x100) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}//redif(color & 0x800000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}   if(color & 0x400000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x200000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x100000){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x80000) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x40000) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x20000) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x10000) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}//blueif(color & 0x80){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();}    if(color & 0x40){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x20){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x10){RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x8) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x4) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x2) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay7NOP();} if(color & 0x1) {RGB_PIN_H();delay12NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay6NOP();RGB_PIN_L();delay2NOP();/*程序进出会有延时*///delay7NOP();}
#endif
}/*********************************************以上为底层***********************************************///设置灯的颜色
//color:颜色(包含亮度)
//num  :总共的led数量
void RGB_Refresh(u32 color,u8 num){disableInterrupts();//关闭所有中断避免打扰while(num--){Ws2812b_Write(color);}enableInterrupts();
}//颜色流水灯
//color:颜色(包含亮度)
//num  :总共的led数量
//speed:延时(单位ms)
void RGB_Cycle(u32 color,u8 num,u16 speed)
{u8 i;for(i=1;i<=num;i++){       //设置颜色      RGB_Refresh(color,i);Delay_ms(speed);}for(i=1;i<=num;i++){       //灭RGB_Refresh(0,i);Delay_ms(speed);}
}//颜色呼吸灯
//color:颜色(包含亮度)
//num  :总共的led数量
//speed:延时(单位ms)
void RGB_Wave(u32 color,u8 num,u16 speed)
{u32 color_step=0;u32 color_temp = color;color_step |= (BYTE_2(color)?0x010000:0x000000);color_step |= (BYTE_1(color)?0x000100:0x000000);color_step |= (BYTE_0(color)?0x000001:0x000000);while(//先把颜色的亮度见到最小BYTE_2(color_temp)>=BYTE_2(color_step) &&BYTE_1(color_temp)>=BYTE_1(color_step) &&BYTE_0(color_temp)>=BYTE_0(color_step)){color_temp-=color_step;}while(      //缓慢变亮  BYTE_2(color_temp)<0xff &&BYTE_1(color_temp)<0xff &&BYTE_0(color_temp)<0xff)   {color_temp+=color_step;RGB_Refresh(color_temp,num);Delay_ms(speed);} while(//缓慢变暗BYTE_2(color_temp)>=BYTE_2(color_step) &&BYTE_1(color_temp)>=BYTE_1(color_step) &&BYTE_0(color_temp)>=BYTE_0(color_step)){color_temp-=color_step;RGB_Refresh(color_temp,num);Delay_ms(speed);}RGB_Refresh(0,num);
}
//颜色流水灯
//color:颜色(包含亮度)
//num  :总共的led数量
//speed:延时(单位ms)
//cnt  :闪烁次数
void RGB_Flash(u32 color,u8 num,u16 speed,u8 cnt)
{while(cnt--){RGB_Refresh(color,num);Delay_ms(speed);RGB_Refresh(0,num);Delay_ms(speed);}
}/*********************************************END OF FILE**********************************************/

N76E003:

#include "fy_ws2812b.h"/*此代码针对n76e003平台 @16M1个nop         占用87nswhile(1)  占用194ns函数调用     占用570ns灯的性质决定,需要一次性刷新,比如16个灯就必须一次性刷新16个,
而不能一个一个中间有间隔的刷新,这样就只有一地个灯亮*//*以下定义如果没有需要自行定义*/
//#define BYTE_0(n)                 ((u8)((n) & (u8)0xFF))        /*!< Returns the low byte of the 32-bit value */
//#define BYTE_1(n)                 ((u8)(BYTE_0((n) >> (u8)8)))  /*!< Returns the second byte of the 32-bit value */
//#define BYTE_2(n)                 ((u8)(BYTE_0((n) >> (u8)16))) /*!< Returns the third byte of the 32-bit value */
//#define BYTE_3(n)                 ((u8)(BYTE_0((n) >> (u8)24)))
//#define enableInterrupts()    EA=1
//#define disableInterrupts()   EA=0#define delay1NOP()    _nop_();
#define delay2NOP() delay1NOP();_nop_();
#define delay3NOP() delay2NOP();_nop_();
#define delay4NOP() delay3NOP();_nop_();
#define delay5NOP() delay4NOP();_nop_();
#define delay6NOP() delay5NOP();_nop_();
#define delay7NOP() delay6NOP();_nop_();
#define delay8NOP() delay7NOP();_nop_();
#define delay9NOP() delay8NOP();_nop_();
#define delay10NOP()    delay9NOP();_nop_();
#define delay11NOP()    delay10NOP();_nop_();
#define delay12NOP()    delay11NOP();_nop_();
#define delay13NOP()    delay12NOP();_nop_();
#define delay14NOP()    delay13NOP();_nop_();
#define delay15NOP()    delay14NOP();_nop_();#define RGB_PIN_H() P06 = 1
#define RGB_PIN_L() P06 = 0void Ws2812b_Configuration(void)
{P0M1 &= ~(1<<6);P0M2 |= (1<<6);RGB_PIN_L();
}#if 0
static void Ws2812b_Write0(void)
{RGB_PIN_H();delay6NOP();RGB_PIN_L();}static void Ws2812b_Write1(void)
{RGB_PIN_H();delay12NOP();RGB_PIN_L();
}static void Ws2812b_WriteByte(u8 byte)
{if(byte & 0x80)Ws2812b_Write1();elseWs2812b_Write0();if(byte & 0x40) Ws2812b_Write1();elseWs2812b_Write0();if(byte & 0x20)Ws2812b_Write1();elseWs2812b_Write0();if(byte & 0x10)Ws2812b_Write1();elseWs2812b_Write0();if(byte & 0x8)Ws2812b_Write1();elseWs2812b_Write0();if(byte & 0x4)         Ws2812b_Write1();elseWs2812b_Write0();if(byte & 0x2)         Ws2812b_Write1();elseWs2812b_Write0();if(byte & 0x1)         Ws2812b_Write1();elseWs2812b_Write0();
}
#else
static void Ws2812b_WriteByte(u8 byte)
{if(byte & 0x80){RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();} if(byte & 0x40){RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();}  if(byte & 0x20){RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();}  if(byte & 0x10){RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();}  if(byte & 0x8) {RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();}  if(byte & 0x4) {RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();}  if(byte & 0x2) {RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();}  if(byte & 0x1) {RGB_PIN_H();delay10NOP();RGB_PIN_L();}else{      RGB_PIN_H();delay4NOP();RGB_PIN_L();delay4NOP();}
}#endifvoid Ws2812b_Write(u32 color)
{Ws2812b_WriteByte(BYTE_1(color));//greenWs2812b_WriteByte(BYTE_2(color));//redWs2812b_WriteByte(BYTE_0(color));//blue
}/*********************************************以上为底层***********************************************///设置灯的颜色
//color:颜色(包含亮度)
//num  :总共的led数量
void RGB_Refresh(u32 color,u8 num){disableInterrupts();while(num--){Ws2812b_Write(color);}enableInterrupts();
}//颜色流水灯
//color:颜色(包含亮度)
//num  :总共的led数量
//speed:延时(单位ms)
void RGB_Cycle(u32 color,u8 num,u16 speed)
{u8 i;for(i=1;i<=num;i++){       //设置颜色      RGB_Refresh(color,i);Delay_ms(speed);}for(i=1;i<=num;i++){       //灭RGB_Refresh(0,i);Delay_ms(speed);}
}//颜色呼吸灯
//color:颜色(包含亮度)
//num  :总共的led数量
//speed:延时(单位ms)
void RGB_Wave(u32 color,u8 num,u16 speed)
{u32 color_step=0;u32 color_temp = color;color_step |= (BYTE_2(color)?0x010000:0x000000);color_step |= (BYTE_1(color)?0x000100:0x000000);color_step |= (BYTE_0(color)?0x000001:0x000000);while(//先把颜色的亮度见到最小BYTE_2(color_temp)>=BYTE_2(color_step) &&BYTE_1(color_temp)>=BYTE_1(color_step) &&BYTE_0(color_temp)>=BYTE_0(color_step)){color_temp-=color_step;}while(      //缓慢变亮  BYTE_2(color_temp)<0xff &&BYTE_1(color_temp)<0xff &&BYTE_0(color_temp)<0xff)   {color_temp+=color_step;RGB_Refresh(color_temp,num);Delay_ms(speed);} while(//缓慢变暗BYTE_2(color_temp)>=BYTE_2(color_step) &&BYTE_1(color_temp)>=BYTE_1(color_step) &&BYTE_0(color_temp)>=BYTE_0(color_step)){color_temp-=color_step;RGB_Refresh(color_temp,num);Delay_ms(speed);}RGB_Refresh(0,num);
}
//颜色流水灯
//color:颜色(包含亮度)
//num  :总共的led数量
//speed:延时(单位ms)
//cnt  :闪烁次数
void RGB_Flash(u32 color,u8 num,u16 speed,u8 cnt)
{while(cnt--){RGB_Refresh(color,num);Delay_ms(speed);RGB_Refresh(0,num);Delay_ms(speed);}
}/*********************************************END OF FILE**********************************************/

头文件:

#ifndef __FY_WS2812B_H
#define __FY_WS2812B_H#include "fy_includes.h"/*颜色宏定义*/                               /*R G B*/
#define COLOR_LIGHTPINK                     0xFFB6C1    //  浅粉红
#define COLOR_PINK                          0xFFC0CB    //  粉红
#define COLOR_CRIMSON                       0xDC143C    //  猩红
#define COLOR_LAVENDERBLUSH                 0xFFF0F5    //  脸红的淡紫色
#define COLOR_PALEVIOLETRED                 0xDB7093    //  苍白的紫罗兰红色
#define COLOR_HOTPINK                       0xFF69B4    //  热情的粉红
#define COLOR_DEEPPINK                      0xFF1493    //  深粉色
#define COLOR_MEDIUMVIOLETRED               0xC71585    //  适中的紫罗兰红色
#define COLOR_ORCHID                        0xDA70D6    //  兰花的紫色
#define COLOR_THISTLE                       0xD8BFD8    //  蓟
#define COLOR_PLUM                          0xDDA0DD    //  李子
#define COLOR_VIOLET                        0xEE82EE    //  紫罗兰
#define COLOR_MAGENTA                       0xFF00FF    //  洋红
#define COLOR_FUCHSIA                       0xFF00FF    //  灯笼海棠(紫红色)
#define COLOR_DARKMAGENTA                   0x8B008B    //  深洋红色
#define COLOR_PURPLE                        0x800080    //  紫色
#define COLOR_MEDIUMORCHID                  0xBA55D3    //  适中的兰花紫
#define COLOR_DARKVOILET                    0x9400D3    //  深紫罗兰色
#define COLOR_DARKORCHID                    0x9932CC    //  深兰花紫
#define COLOR_INDIGO                        0x4B0082    //  靛青
#define COLOR_BLUEVIOLET                    0x8A2BE2    //  深紫罗兰的蓝色
#define COLOR_MEDIUMPURPLE                  0x9370DB    //  适中的紫色
#define COLOR_MEDIUMSLATEBLUE               0x7B68EE    //  适中的板岩暗蓝灰色
#define COLOR_SLATEBLUE                     0x6A5ACD    //  板岩暗蓝灰色
#define COLOR_DARKSLATEBLUE                 0x483D8B    //  深岩暗蓝灰色
#define COLOR_LAVENDER                      0xE6E6FA    //  熏衣草花的淡紫色
#define COLOR_GHOSTWHITE                    0xF8F8FF    //  幽灵的白色
#define COLOR_BLUE                          0x0000FF    //  纯蓝
#define COLOR_MEDIUMBLUE                    0x0000CD    //  适中的蓝色
#define COLOR_MIDNIGHTBLUE                  0x191970    //  午夜的蓝色
#define COLOR_DARKBLUE                      0x00008B    //  深蓝色
#define COLOR_NAVY                          0x000080    //  海军蓝
#define COLOR_ROYALBLUE                     0x4169E1    //  皇家蓝
#define COLOR_CORNFLOWERBLUE                0x6495ED    //  矢车菊的蓝色
#define COLOR_LIGHTSTEELBLUE                0xB0C4DE    //  淡钢蓝
#define COLOR_LIGHTSLATEGRAY                0x778899    //  浅石板灰
#define COLOR_SLATEGRAY                     0x708090    //  石板灰
#define COLOR_DODERBLUE                     0x1E90FF    //  道奇蓝
#define COLOR_ALICEBLUE                     0xF0F8FF    //  爱丽丝蓝
#define COLOR_STEELBLUE                     0x4682B4    //  钢蓝
#define COLOR_LIGHTSKYBLUE                  0x87CEFA    //  淡蓝色
#define COLOR_SKYBLUE                       0x87CEEB    //  天蓝色
#define COLOR_DEEPSKYBLUE                   0x00BFFF    //  深天蓝
#define COLOR_LIGHTBLUE                     0xADD8E6    //  淡蓝
#define COLOR_POWDERBLUE                    0xB0E0E6    //  火药蓝
#define COLOR_CADETBLUE                     0x5F9EA0    //  军校蓝
#define COLOR_AZURE                         0xF0FFFF    //  蔚蓝色
#define COLOR_LIGHTCYAN                     0xE1FFFF    //  淡青色
#define COLOR_PALETURQUOISE                 0xAFEEEE    //  苍白的绿宝石
#define COLOR_CYAN                          0x00FFFF    //  青色
#define COLOR_AQUA                          0x00FFFF    //  水绿色
#define COLOR_DARKTURQUOISE                 0x00CED1    //  深绿宝石
#define COLOR_DARKSLATEGRAY                 0x2F4F4F    //  深石板灰
#define COLOR_DARKCYAN                      0x008B8B    //  深青色
#define COLOR_TEAL                          0x008080    //  水鸭色
#define COLOR_MEDIUMTURQUOISE               0x48D1CC    //  适中的绿宝石
#define COLOR_LIGHTSEAGREEN                 0x20B2AA    //  浅海洋绿
#define COLOR_TURQUOISE                     0x40E0D0    //  绿宝石
#define COLOR_AUQAMARIN                     0x7FFFAA    //  绿玉\碧绿色
#define COLOR_MEDIUMAQUAMARINE              0x00FA9A    //  适中的碧绿色
#define COLOR_MEDIUMSPRINGGREEN             0x00FF7F    //  适中的春天的绿色
#define COLOR_MINTCREAM                     0xF5FFFA    //  薄荷奶油
#define COLOR_SPRINGGREEN                   0x3CB371    //  春天的绿色
#define COLOR_SEAGREEN                      0x2E8B57    //  海洋绿
#define COLOR_HONEYDEW                      0xF0FFF0    //  蜂蜜
#define COLOR_LIGHTGREEN                    0x90EE90    //  淡绿色
#define COLOR_PALEGREEN                     0x98FB98    //  苍白的绿色
#define COLOR_DARKSEAGREEN                  0x8FBC8F    //  深海洋绿
#define COLOR_LIMEGREEN                     0x32CD32    //  酸橙绿
#define COLOR_LIME                          0x00FF00    //  酸橙色
#define COLOR_FORESTGREEN                   0x228B22    //  森林绿
#define COLOR_GREEN                         0x008000    //  纯绿
#define COLOR_DARKGREEN                     0x006400    //  深绿色
#define COLOR_CHARTREUSE                    0x7FFF00    //  查特酒绿
#define COLOR_LAWNGREEN                     0x7CFC00    //  草坪绿
#define COLOR_GREENYELLOW                   0xADFF2F    //  绿黄色
#define COLOR_OLIVEDRAB                     0x556B2F    //  橄榄土褐色
#define COLOR_BEIGE                         0xF5F5DC    //  米色(浅褐色)
#define COLOR_LIGHTGOLDENRODYELLOW          0xFAFAD2    //  浅秋麒麟黄
#define COLOR_IVORY                         0xFFFFF0    //  象牙
#define COLOR_LIGHTYELLOW                   0xFFFFE0    //  浅黄色
#define COLOR_YELLOW                        0xFFFF00    //  纯黄
#define COLOR_OLIVE                         0x808000    //  橄榄
#define COLOR_DARKKHAKI                     0xBDB76B    //  深卡其布
#define COLOR_LEMONCHIFFON                  0xFFFACD    //  柠檬薄纱
#define COLOR_PALEGODENROD                  0xEEE8AA    //  灰秋麒麟
#define COLOR_KHAKI                         0xF0E68C    //  卡其布
#define COLOR_GOLD                          0xFFD700    //  金
#define COLOR_CORNISLK                      0xFFF8DC    //  玉米色
#define COLOR_GOLDENROD                     0xDAA520    //  秋麒麟
#define COLOR_FLORALWHITE                   0xFFFAF0    //  花的白色
#define COLOR_OLDLACE                       0xFDF5E6    //  老饰带
#define COLOR_WHEAT                         0xF5DEB3    //  小麦色
#define COLOR_MOCCASIN                      0xFFE4B5    //  鹿皮鞋
#define COLOR_ORANGE                        0xFFA500    //  橙色
#define COLOR_PAPAYAWHIP                    0xFFEFD5    //  番木瓜
#define COLOR_BLANCHEDALMOND                0xFFEBCD    //  漂白的杏仁
#define COLOR_NAVAJOWHITE                   0xFFDEAD    //  纳瓦霍白
#define COLOR_ANTIQUEWHITE                  0xFAEBD7    //  古代的白色
#define COLOR_TAN                           0xD2B48C    //  晒黑
#define COLOR_BRULYWOOD                     0xDEB887    //  结实的树
#define COLOR_BISQUE                        0xFFE4C4    //  (浓汤)乳脂,番茄等
#define COLOR_DARKORANGE                    0xFF8C00    //  深橙色
#define COLOR_LINEN                         0xFAF0E6    //  亚麻布
#define COLOR_PERU                          0xCD853F    //  秘鲁
#define COLOR_PEACHPUFF                     0xFFDAB9    //  桃色
#define COLOR_SANDYBROWN                    0xF4A460    //  沙棕色
#define COLOR_CHOCOLATE                     0xD2691E    //  巧克力
#define COLOR_SADDLEBROWN                   0x8B4513    //  马鞍棕色
#define COLOR_SEASHELL                      0xFFF5EE    //  海贝壳
#define COLOR_SIENNA                        0xA0522D    //  黄土赭色
#define COLOR_LIGHTSALMON                   0xFFA07A    //  浅鲜肉(鲑鱼)色
#define COLOR_CORAL                         0xFF7F50    //  珊瑚
#define COLOR_ORANGERED                     0xFF4500    //  橙红色
#define COLOR_DARKSALMON                    0xE9967A    //  深鲜肉(鲑鱼)色
#define COLOR_TOMATO                        0xFF6347    //  番茄
#define COLOR_MISTYROSE                     0xFFE4E1    //  薄雾玫瑰
#define COLOR_SALMON                        0xFA8072    //  鲜肉(鲑鱼)色
#define COLOR_SNOW                          0xFFFAFA    //  雪
#define COLOR_LIGHTCORAL                    0xF08080    //  淡珊瑚色
#define COLOR_ROSYBROWN                     0xBC8F8F    //  玫瑰棕色
#define COLOR_INDIANRED                     0xCD5C5C    //  印度红
#define COLOR_RED                           0xFF0000    //  纯红
#define COLOR_BROWN                         0xA52A2A    //  棕色
#define COLOR_FIREBRICK                     0xB22222    //  耐火砖
#define COLOR_DARKRED                       0x8B0000    //  深红色
#define COLOR_MAROON                        0x800000    //  栗色
#define COLOR_WHITE                         0xFFFFFF    //  纯白
#define COLOR_WHITESMOKE                    0xF5F5F5    //  白烟
#define COLOR_GAINSBORO                     0xDCDCDC    //  亮灰色
#define COLOR_LIGHTGREY                     0xD3D3D3    //  浅灰色
#define COLOR_SILVER                        0xC0C0C0    //  银白色
#define COLOR_DARKGRAY                      0xA9A9A9    //  深灰色
#define COLOR_GRAY                          0x808080    //  灰色
#define COLOR_DIMGRAY                       0x696969    //  暗淡的灰色
#define COLOR_BLACK                         0x000000    //  纯黑//声明功能函数
void Ws2812b_Configuration(void);
void Ws2812b_Write(u32 color);void RGB_Refresh(u32 color,u8 num);
void RGB_Cycle(u32 color,u8 num,u16 speed);
void RGB_Wave(u32 color,u8 num,u16 speed);
void RGB_Flash(u32 color,u8 num,u16 speed,u8 cnt);#endif

两者代码大同小异,关键是高低电平时间,这个是我用示波器慢慢测试出来的,亲测能用,最高支持整个灯板(88颗灯珠),在调试和测试结果上看STM8优于N76E003。

完整代码可以加QQ群下载:733945348

By Urien 2019年8月11日 14:25:04

【单片机笔记】关于RGB彩灯WS2812B的驱动相关推荐

  1. 【单片机笔记】OLED控制器SSD1306及驱动代码

    前言: 很长一段时间内用OLED的机会都很少,即使用了也是参考的大牛的代码,最近迫不得已又仔细研究了一遍.记下来省的忘记. 手头上用到的是0.61寸的OLED分辨率是96*16,也就是横向有96个点, ...

  2. STM32驱动WS2812B-2020 RGB彩灯(一)

    STM32驱动WS2812B-2020RGB彩灯(一) 最近搞飞控,看到有些飞控上都使用的RGB彩灯,够酷炫,所以尝试着自己搞一个. 手上的硬件有一块自制的STM32F103最小系统板,一个同事焊好的 ...

  3. STM32单片机手机APP蓝牙高亮RGB彩灯控制板任意颜色亮度调光

    实践制作DIY- GC0044-RGB彩灯呼吸灯流水灯 一.功能说明: 基于STM32单片机设计-RGB彩灯呼吸灯流水灯 二.功能介绍: STM32F103C系列最小系统板+5VUSB电源+12个灯珠 ...

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

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

  5. 【Verilog】FPGA控制RGB灯WS2812B

    [Verilog]FPGA控制RGB灯WS2812B 最近学业繁忙,因此好久没有更新博客,今日闲来无事,准备开始整理一下最近写的东西 今天先更新一下短学期做的东西吧--FPGA控制RGB灯WS2812 ...

  6. 单片机彩灯移动实验_单片机动态控制64个彩灯实验报告

    目录 一.课题名称---------------------3 二.设计目的---------------------3 三.系统原理图--------------------3 四.方案论证---- ...

  7. ESP8266开发之旅 应用篇① 局域网应用 ——炫酷RGB彩灯

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... 共同学习成长QQ群 622368884,不喜勿 ...

  8. 单片机:STM32F4x HAL库软硬SPI驱动ST7735s 1.8寸LCD屏幕

    单片机:STM32F4x HAL库软硬SPI驱动ST7735s 1.8寸LCD屏幕 说明:此篇为学习记录.可能存在错误或者不足.如有问题请指出. 硬件环境 主控芯片:STM32F411CEU6 主控开 ...

  9. STM32C8T6+RGB彩灯(驱动芯片WS28811、PWM两种调试方法)

    RGB彩灯总结: 整个RGB彩灯的调试,应该花了不少于两个星期,中间遇到了很多让我很难受甚至很想放弃的problems,但是自己最终还是弄了下来,不能说是坚持了先来,但是至少能实现RGB彩灯的基本功能 ...

最新文章

  1. 了解下C# 类(Class)
  2. 《WinForm开发系列之控件篇》Item28 LinkView(暂无)
  3. JavaScript装逼指南
  4. 超图桌面版制作分段专题图学习
  5. oracle数据库连接 ORA-12638:身份证明检索失败
  6. python做一副54扑克牌发牌技巧_德州扑克讲堂:高级技巧 胜率之摊牌胜率的算法...
  7. java 泛型的类型擦除和桥方法
  8. js封装倒计时函数实现倒计时效果
  9. 时域技术在天线测量中的应用
  10. web前端面试(1) 前端缓存怎么做?
  11. CTWAP下程序崩溃
  12. 华中农业大学计算机专业考研,2020华中农业大学计算机专业课改考408
  13. Android App 冷启动优化方案--黑白屏
  14. 发光环绕文字特效怎么做?教程来了
  15. Java 线上问题排查思路与工具使用
  16. phxqueue java_微信开源PhxQueue:高可用、高可靠、高性能的分布式队列的几个问题...
  17. 瑞芯微RK3328硬件设计指南
  18. Ubuntu安装常用Linux桌面系统
  19. 产品经理(助理)任职要求
  20. 刺激战场android闪退,《绝地求生刺激战场》老是闪退怎么办 老是闪退解决方法介绍...

热门文章

  1. 【GIS教程】在谷歌地图中快速导出区域地形图
  2. 企业应如何选择服务器,既能节省成本又保证性能
  3. 【推荐系统】RippleNet——基于知识图谱偏好传播的推荐系统
  4. 【单片机】Proteus安装、MDK5安装、Proteus与Keil联合仿真教程
  5. 今日NFT/数字藏品热点
  6. 正余弦函数的matlab仿真,实现正余弦信号的算法比较
  7. OPENCV CV_64FC1含义
  8. 换掉 Java 8 Java 1718 新特性真香
  9. C语言 计算x的n次幂
  10. 新一代智慧医疗整体解决方案