当前位置: 首页 > news >正文

stm32番外-----0.96寸OLED播放电影《你的名字》

 目录

前言 

OLED播放视频 

1.简述

2.现象 

3.电路连接图​编辑

4.项目主要文件

5.代码

6.注意事项


前言 

        刚好前面学习了USART串口通信,本期咱们来玩个有意思的,就是去通过USART实现视频的播放,本期内容程序是来自江协科技的,本人只是进行了修改。(视频链接:用0.96寸OLED播放知名艺人打篮球视频 *附赠程序*_哔哩哔哩_bilibili)

 本期的程序我上传到了我的百度网盘,可自行下载,外赠电影《你的名字》

程序百度网盘链接:https://pan.baidu.com/s/1JrS3HKkahkoysIOKe59xOA?pwd=0721 
提取码:0721

《你的名字》百度网盘链接:https://pan.baidu.com/s/1HMWtIzKgrOqGW8ScZ0XNRQ

提取码:ndmz

OLED播放视频 

1.简述

其实原理很简单,本质上是串口传输数据,分为两部分,第一部分是stm32的本身作为接收方,是对接收到的数据进行处理的操作,另外一个就是电脑作为发送方,将处理好的视频图像一帧一帧发送给stm32,然后stm32读取显示即可。

2.现象 

OLED毕竟是一个很小的屏幕,而且并不是彩屏的,所以播放效果基本上非常模糊,下面是OLED的现象:

OLED播放《你的名字》

3.电路连接图

4.项目主要文件

5.代码

Seial.c文件代码:

#include "stm32f10x.h"                  // Device headervoid Serial_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);USART_InitTypeDef USART_InitStructure;USART_InitStructure.USART_BaudRate = 921600;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_Init(USART1, &USART_InitStructure);USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVIC_InitStructure);USART_Cmd(USART1, ENABLE);
}/*声明OLED模块中的显存数组*/
extern uint8_t OLED_DisplayBuf[8][128];void USART1_IRQHandler(void)
{static uint8_t p0 = 0, p1 = 0;if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET){/*接收一个字节数据*/uint8_t RxData = USART_ReceiveData(USART1);/*将一个字节放到OLED显存数组的指定位置*/OLED_DisplayBuf[p0][p1] = RxData;/*位置自增*/p1 ++;if (p1 >= 128){p1 = 0;p0 ++;if (p0 >= 8){p0 = 0;}}USART_ClearITPendingBit(USART1, USART_IT_RXNE);}
}

Serial.h文件代码:

#ifndef __SERIAL_H
#define __SERIAL_Hvoid Serial_Init(void);
void Serial_SendByte(uint8_t Byte);#endif

主文件main.c代码:

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "Serial.h"
#include "OLED.h"int main(void)
{/*OLED初始化*/OLED_Init();/*串口初始化*/Serial_Init();/*显示初始字符串*/OLED_Clear();OLED_ShowString(40, 24, "START", OLED_8X16);OLED_Update();while (1){OLED_Update();	//不断将OLED显存数组的内容刷新到OLED屏幕}
}

6.注意事项

步骤:
1.按照接线图连接好硬件
2.把Keil工程的代码下载到STM32中
3.运行Python代码,通过串口把处理后的数据发送给STM32进行显示

注意:
1.Python需要预先安装依赖包,可以执行以下命令进行安装:
    pip install numpy
    pip install opencv-python
    pip install pyserial
2.打开串口时,串口号需要根据自己的设备进行指定,可以打开设备管理器查看
3.打开视频的文件可以自行指定
4.播放视频时,按q键退出
5.串口收发部分并没有帧同步的操作,所以需要保证每次收发都是一个完整的数据帧,如果显示中途被打断,最好把STM32复位一下,避免帧数据错位

以上就是本期的全部内容了,我们下次见!

今日壁纸:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue、react前端框架实现TodoList页面案例
  • HTTP模块(二)
  • “论大数据处理架构及其应用”写作框架,软考高级论文,系统架构设计师论文
  • HTML常见标签——超链接a标签
  • 10 VUE Element
  • 【概率论】-2-概率论公理(Axioms of Probability)
  • pyqt designer使用spliter
  • NumpyPandas:Pandas库(50%-100%)
  • 微信小程序配置访问服务器失败所发现的问题及解决方案
  • 接入百度文心一言API教程
  • Godot入门 05收集物品
  • Windows 端口占用 Port 端口占用 如何发现端口占用并且强杀?
  • 【七】Hadoop3.3.4基于ubuntu24的分布式集群安装
  • 在生信分析中大家需要特别注意的事情​
  • C++ | Leetcode C++题解之第295题数据流的中位数
  • docker-consul
  • DOM的那些事
  • express如何解决request entity too large问题
  • IDEA 插件开发入门教程
  • Javascript弹出层-初探
  • Java到底能干嘛?
  • Linux快速复制或删除大量小文件
  • maven工程打包jar以及java jar命令的classpath使用
  • 半理解系列--Promise的进化史
  • 诡异!React stopPropagation失灵
  • 欢迎参加第二届中国游戏开发者大会
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 每天一个设计模式之命令模式
  • 前端之React实战:创建跨平台的项目架构
  • 浅谈web中前端模板引擎的使用
  • 使用API自动生成工具优化前端工作流
  • 推荐一个React的管理后台框架
  • 微信开源mars源码分析1—上层samples分析
  • 移动端解决方案学习记录
  • 怎么把视频里的音乐提取出来
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 安徽锐锋科技IDMS系统简介
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #传输# #传输数据判断#
  • (11)MSP430F5529 定时器B
  • (6)设计一个TimeMap
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (void) (_x == _y)的作用
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)VirtualBox安装增强功能
  • (转)http协议
  • (转)可以带来幸福的一本书
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)Linux网络编程入门
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .htaccess配置重写url引擎