# ws2812b_array_display **Repository Path**: crazy-geeker/ws2812b_array_display ## Basic Information - **Project Name**: ws2812b_array_display - **Description**: WS2812B Array Display - **Primary Language**: 其他 - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 4 - **Created**: 2021-12-13 - **Last Updated**: 2025-02-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: ws2812, CH32V103 ## README # ws2812b_array_display #### 一、介绍   基于CH32V103R8开发板与WS2812B点阵模块实现的一个点阵屏,同CH343G高速USB转串口与电脑连接,可以实时显示上位机软件播放的视频内容。 #### 二、硬件说明   CH32V103RB开发板+WS2812B+CH343G高速USB转串口,CH343G高速USB转串口串口的最大波特率可以达到6Mbps, WS2812B组成的屏幕分辨率为48x48, 可以显示一个低分辨率的视频图像。   WS2812B的连接方式为首先由8x8个LED组成一个最小单元,再由3x3个(8x8)LED单元组成一个中单元,最后由4个中单元最后组成一个48x48的大单元。 #### 三、下位机 CH32V103R8 1. 初始化串口 串口使用USART1, 引脚为PA9, PA10采用DMA的方式(DMA1_Channel5)接收上位机软件发送过来的数据。 波特率设置1Mbps 8 N 1,传输速率为100000Bytes/S, 48x48点阵屏一帧数据大小为48x48x3(RGB888)= 6912Bytes , 100000Bytes/S的传输速度可以满足播放视频的最大帧率为100000/6912>14帧,带宽足够满足视频14帧 /S的播放速度。 2. 初始化定时器,WS2812B采用定时器PWM+DMA的方式驱动显示。 使用DMA1_Channel3. 使用TIM3_CH1(PA6),TIM3_CH2(PA7),TIM3_CH3(PB0),TIM3_CH4(PB1)来分别驱动WS2812B的四个中单元。 #### 四、上位机 VideoPixelPicker   VideoPixelPicker的功能是对视频文件进行采样,将采样后的像素数据发送到下位机进行显示。   VideoPixelPicker使用C# WinForm开发,用OpenCVSharp解码视频文件,使用指定采样分辨率和采样间隔对视频图像进行采样,然后将采样的RGB数据进行打包,之后通过串口发送到下位机进行处理显示。像素数据发送时分块进行发送,并且可以更改像素块的发送顺序。方便下位机将不同的像素块发送到不同通道的WS2812B子屏上。   VideoPixelPicker与下位机传输的像素数据具有两种格式RGB888和RGB565。使用RGB565可有效降低帧数据量,提高传输速度,适应更高分辨率的WS2812B点阵屏。   VideoPixelPicker可修改采样分辨率,以适应不同分辨率的WS2812点阵屏。可修改帧率,以改变播放速度。可修改串口波特率适应不同的传输速率。在播放时可以显示采样点,可以方便查看,对哪些位置进行采样的。   VideoPixelPicker支持多种视频格式文件,并且支持Gif图片文件播放。