【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

相关文章

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

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