目录
| 单片机型号 | 测试条件 | 模块名称 | 代码功能 |
| STM32F103C8T6 |
| WS2812模块
|
|
这里用的是8X8 WS2812B RGB灯模块,其他WS2812B 一位,两位,四位灯均一样,其他具体可以看下手册 ,主要参数是引脚定义和时序。

因为直接引脚输出很难做到WS2812时序要求,这里用SPI通信来做数据输出.当RESET时间小于280us时会继续第一个周期,大于280us时才会重新开始新的周期。


- //发一位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时序

- //这里直接接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
- /*
- * 函数名: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);
-
- }
-
- }
字符软件使用 直戳跳转
文字格式:共阴——逐列式——逆向——C51,其他默认

提取字符:新建图像——输入点阵大小——输入字符图形——生成字模——复制数据到程序数组


视频连接 直戳跳转
资料获取 ( 滑到最后添加群号看公告免费获取)
| STC89C52RC驱动方案 | STM32F103C8T6驱动方案 | 图片 | 备注 K_A01_001 | |
| 注:STC89C52RC单片机太慢无法达到WS2812B时序要求 | STM32F103C8T6系统板X1 | |
| |
| 8X8 WS2812B灯模块X1 | | |||
| Micro USB线X2 | | |||
| 母母杜邦线X3 | | |||
| J-LINK下载器 | | |||
| 单片机型号 | 模块 | 对应引脚(上:模块引脚 下:单片机引脚) | ||
| STM32F103 C8T6 | 8X8 WS2812B灯模块 | V- | V+ | IN |
| GND | 5V | PA7 | ||