【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

相关文章

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地