目录
一、资源说明
二、基本参数
三、通信协议说明
WS2812时序:
代码:
四、部分代码说明
1、接线说明
2、主函数
五、相关资料链接
六、数字提取格式
七、视频效果展示与资料获取
八、项目所有材料清单
九、注意事项
十、接线表格
一、资源说明
单片机型号 | 测试条件 | 模块名称 | 代码功能 |
STM32F103C8T6 |
| WS2812模块 |
|
二、基本参数
这里用的是8X8 WS2812B RGB灯模块,其他WS2812B 一位,两位,四位灯均一样,其他具体可以看下手册 ,主要参数是引脚定义和时序。
三、通信协议说明
因为直接引脚输出很难做到WS2812时序要求,这里用SPI通信来做数据输出.当RESET时间小于280us时,回继续第一个周期,大于280us时才会重新开始新的周期。
WS2812时序:
代码:
//发一位0
void SPI_WS2812_Send_0()
{
SPI_SendByte(0XE0);
}
//发一位1
void SPI_WS2812_Send_1()
{
SPI_SendByte(0XFC);
}
//发送一个字节
void SPI_WS2812_SendByte(u8 byte)
{
u8 i;
for(i=0;i<8;i++)
{
if (byte>>7)
{
SPI_WS2812_Send_1();
}
else
{
SPI_WS2812_Send_0();
}
byte=byte<<1;
}
}
逻辑分析仪抓取图片分析,符合WS2812时序
四、部分代码说明
1、接线说明
//这里直接接SPI的MOSI引脚,其他引脚可以不配置,但是SPI要配置
//MOSI引脚
#define WS2812_SPI_MOSI_APBxClock_FUN RCC_APB2PeriphClockCmd
#define WS2812_SPI_MOSI_CLK RCC_APB2Periph_GPIOA
#define WS2812_SPI_MOSI_PORT GPIOA
#define WS2812_SPI_MOSI_PIN GPIO_Pin_7
2、主函数
/*
* 函数名:main
* 描述 :主函数
*/
int main(void)
{
uint8_t i=0,Num=0;
DelayInit();
/* 8M串行flash W25Q64初始化 */
SPI_WS2812_Init();
while(1)
{
if(Num>9)
{
Num=0;
}
DIS_Num(Num,RGB_Buf[i%12]);
i++;
Num++;
DelayMs(500);
}
}
五、相关资料链接
- STC89C52RC程序下载 直戳跳转
- STM32F103C8T6程序下载
- 串口下载 直戳跳转
- ST-LINK下载 直戳跳转
- J-LINK下载 直戳跳转
- DAP-LINK下载 直戳跳转
-
字符软件使用 直戳跳转
六、数字提取格式
文字格式:共阴——逐列式——逆向——C51,其他默认
提取字符:新建图像——输入点阵大小——输入字符图形——生成字模——复制数据到程序数组
七、视频效果展示与资料获取
视频连接 直戳跳转
资料获取 直戳跳转
八、项目所有材料清单
STC89C52RC驱动方案 | STM32F103C8T6驱动方案 | 图片 | 备注 K_A01_001 | |
注:STC89C52RC单片机太慢无法达到WS2812B时序要求 | STM32F103C8T6系统板X1 |
| ||
8X8 WS2812B灯模块X1 | ||||
Micro USB线X2 | ||||
母母杜邦线X3 | ||||
J-LINK下载器 |
九、注意事项
- VCC GND请勿接反,接反易烧
- 显示异常时,排除接线接触不良
- 同程序换开发板不断电直接接其他同类模块建议按单片机复位
- 同WS2812B模块灯个数不一样的程序都通用
- 下载后显示如果有异常的时候可以重新上电复位下
十、接线表格
单片机型号 | 模块 | 对应引脚(上:模块引脚 下:单片机引脚) | ||
STM32F103 C8T6 | 8X8 WS2812B灯模块 | V- | V+ | IN |
GND | 5V | PA7 |