基于stm32的动画播放器

1  绪论

1.1课题研究背景及意义

动画在现代生活中广泛应用,涵盖了数字标牌、广告牌、信息展示等领域。随着嵌入式系统的发展和普及,将高质量的动画播放引入这些应用领域成为了迫切的需求。然而,由于嵌入式系统资源有限,动画播放面临着一些技术挑战。

嵌入式设备通常具有较小的存储容量和有限的计算能力,因此需要开发出高效的解码算法或者强力外设来实现流畅的动画播放。

其次,存储空间管理也是一个重要方面。动画文件通常具有较大的体积,如何有效地管理存储空间并同时保证良好的播放效果是一个关键问题。

1.2 本文研究的主要思路

动画播放系统以STM32单片机作为主控核心,采用0.96寸OLED屏幕显示。使用电脑将处理过后的数据通过串口传输到STM32主控进行处理。在选定好想要播放的视频之后,通过Potplayer视频播放器内置的视频功能将视频进行连续截图,再使用image2lcd将图片转化为单片机所能识别的文件格式,最后再将该视频在STM32控制的OLED屏幕进行显示播放

2. 方案论证

2.1系统总框图

图1.播放系统总框图

2.2 系统各模块功能分析及其原理图

2.2.1主控芯片:STM32F103C8T6

STM32F103C8T6是一种基于ARM Cortex-M3内核的单片机芯片,广泛应用于各种嵌入式系统,例如工业自动化、智能家居、移动设备、医疗设备等领域。它的高性能、丰富的外设接口和低功耗特性使得开发者能够实现复杂的控制和处理任务,并满足不同应用场景对性能和功耗的需求。

图2.STM32F103C8T6芯片引脚图

该主控芯片具有以下特点:

快速的处理能力:Cortex-M3内核的主频高达72MHz,能够快速处理复杂的控制任务。

强大的外设支持:STM32F103C8T6提供了包括ADC、DAC、I2C、SPI、USART等多种常用外设,能够满足各种应用需求。

可扩展性强:STM32F103C8T6提供了扩展接口,可以扩展更多的外设或者接入外部存储器。

低功耗:STM32F103C8T6提供了多种低功耗模式,可以在保证性能的同时降低功耗。

2.2.2 USB转串口CH340

本次作品中电脑与单片机进行通信我采用的是串口通信,使用到了CH340这款芯片,我们现在的电脑上,已经不存在串口,所以我们一般使用USB转串口芯片,目的就是把电脑的USB口映射为串口使用。

该模块的特点有:

全速 USB 设备接口,兼容 USB V2.0,外围元器件只需要晶体和电容。

仿真标准串口,用于升级原串口外围设备,或者通过 USB 增加额外串口。

计算机端 Windows 操作系统下的串口应用程序完全兼容,无需修改。

硬件全双工串口,内置收发缓冲区,支持通讯波特率 50bps~2Mbps。

支持常用的 MODEM 联络信号 RTS、DTR、DCD、RI、DSR、CTS。

通过外加电平转换器件,提供 RS232、RS485、RS422 等接口。

支持 IrDA 规范 SIR 红外线通讯,支持波特率 2400bps 到 115200bps。

软件兼容 CH341,可以直接使用 CH341 的驱动程序。

支持 5V 电源电压和 3.3V 电源电压。

提供 SSOP-20 和 SOP-16 无铅封装,兼容 RoHS。

图3.USB转串口引脚图

2.2.3 OLED屏幕(iic通信)

OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,并且能够节省电能。

本屏幕的驱动为 SSD1306,SSD1306 的每页包含了128 个字节,总共 8 页,这样刚好是 128*64 的点阵大小。IIC总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。

图4. OLED屏幕电路图

3、系统软件设计及分析

3.1软件设计流程图

本次作品的程序设计分为两个部分,第一部分是将image2lcd转化过来的.c合并在一个文件中,并将此文件使用Python中与串口相关的Serial库完成,实现自动发送数据。第二部分则是STM32中各个外设的设置、串口的接收、OLED的显示。

6 第一部分软件设计流程图

3.2第一模块软件设计及分析

3.2.1 图片截取配置

在找好需要播放的视频之后,就要进行截图了。

视频的截取我采用的是PotPlayer播放器的内置连续截取画面功能。

图7.图片截取设置                           

                                                                                     

3.2.2 image2lcd转化格式以及合并

将截取的完成的图片使用image2lcd批量转换为单片机所要的格式,并用python将每张图转换的文件合并在一起。

图8.图片转化

图9.文件合并代码

3.2.3 Python中Serial库串口发送数据

将合并完成的文件以300000bps的波特率发送给串口的任务也同样是交给python完成,主要是使用Python中与串口相关的Serial库完成,实现自动发送数据。

 

图10.串口发送数据

3.2.4 keil中main主函数设置

(具体代码可转至个人资源查看)

                         

4.芯片以及外设之间连线

如下图所示, 为现实中的实物连线图:

(具体代码可转至个人资源查看)

  • 42
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值