【STM32标准库】【自制库】0.96寸OLED显示屏(SSD1306)(1)满屏图像显示

2023-11-21 13:50

本文主要是介绍【STM32标准库】【自制库】0.96寸OLED显示屏(SSD1306)(1)满屏图像显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 链接
  • 需求分析
  • 取模
    • 1.处理图片
    • 2.打开软件
    • 3.设置图形模式
    • 4.打开BMP图像
    • 3.设置参数
    • 4.生成
  • 显示图片
  • 成品

文章基于适用于STM32F4系列,作者使用STM32F401CCU6开发板。
本文章基于此系列和开发板展开讨论。

本系列以SSD1306为主控芯片的I2C接口的0.96寸OLED屏幕为例介绍
内容较多,分节进行

链接

基础命令和寻址方法
IIC(I2C)协议

  1. OLED初始化,软件I2C实现,基础数据发送
  2. 满屏图像显示
  3. 全屏动画显示
  4. 显示字母和数字,汉字
  5. 画指定的点
  6. 指定两点画线段
  7. 指定圆心和半径画圆
  8. 指定圆心半径角度画圆弧

需求分析

本节解决的问题是在OLED屏幕上显示出一个满屏图片
解决步骤为

  1. 取模
  2. 显示图片

取模

这里使用的软件为PCtoLCD2002,百度搜索有很多,这里提供作者常用的版本
链接:百度网盘
提取码:qn62

1.处理图片

本OLED屏幕是128 * 64的分辨率,也就是有128 * 64个像素点,剪裁图片使用PS等软件即可,另外需要将其二值化,保存为BMP格式

本文不介绍了。请读者自行百度

2.打开软件

在这里插入图片描述

3.设置图形模式

在这里插入图片描述

4.打开BMP图像

在这里插入图片描述
在这里插入图片描述

3.设置参数

在这里插入图片描述
在这里插入图片描述
之前说过OLED编码规则,这里根据规则设置即可,传送门

4.生成

在这里插入图片描述
之后复制数据即可

显示图片

因为显示的是整张图片,因此使用水平寻址模式较为方便

这边需要注意,输出出来的数组第一维是页,第二维是列,因此是[8][128]的数组,扫描调用时先扫描页,在一页中扫描列即可

废话不多说,直接上代码,原理之前介绍过,传送门

C文件(OLED.C)

void OLED_Picture(const uint8_t Array)
{//使用水平寻址模式模式OLED_Write_Ctrl_Start();I2C_SendByte(0x20); //设置寻址模式 (0x00水平/0x01垂直/0x02页)I2C_SendByte(0x00); //水平寻址模式I2C_SendByte(0x21); //设置列地址I2C_SendByte(0x00);I2C_SendByte(0x7f);I2C_SendByte(0x22); //设置页地址I2C_SendByte(0x00);I2C_SendByte(0x07);I2C_End();OLED_Write_Data_Start();for (int i = 0; i < 8; i++) //扫描页{for (int j = 0; j < 128; j++) //扫描列I2C_SendByte(Array[i][j]);}I2C_End();
}

注意:保存图画数据,需要使用const,来将内容保存到ROM,避免过多占用RAM
uc8就是const uunsigned char

uc8 t1[8][128]={};

成品

在这里插入图片描述
CSDN

链接:百度网盘
提取码:ierk

这篇关于【STM32标准库】【自制库】0.96寸OLED显示屏(SSD1306)(1)满屏图像显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/402708

相关文章

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

go rate 原生标准限速库的使用

《gorate原生标准限速库的使用》本文主要介绍了Go标准库golang.org/x/time/rate实现限流,采用令牌桶算法控制请求速率,提供Allow/Reserve/Wait方法,具有一定... 目录介绍安装API介绍rate.NewLimiter:创建限流器limiter.Allow():请求是否

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB