K_A01_001 基于单片机驱动WS2812 点灯流水灯 0-9显示

实物参考链接 直戳跳转

一、资源说明

二、基本参数

这里用的是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,其他默认

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

七、视频效果展示与资料获取

演示视频连接 直戳跳转
资料获取 直戳跳转

实物参考链接 直戳跳转

八、注意事项

VCC GND请勿接反,接反易烧
显示异常时,排除接线接触不良
同程序换开发板不断电直接接其他同类模块建议按单片机复位
同WS2812B模块灯个数不一样的程序都通用
下载后显示如果有异常的时候可以重新上电复位下

九、接线说明

可参考程序main.c最上面接线说明


深圳市咱们电子科技有限公司