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

2023-11-13


文章基于适用于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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 时间序列-异常检测(Anomaly Detection)(一):时间序列的特征工程

    一 介绍 异常检测 Anomaly detection 是目前时序数据分析最成熟的应用之一 定义是从正常的时间序列中识别不正常的事件或行为的过程 有效的异常检测被广泛用于现实世界的很多领域 例如量化交易 网络安全检测 自动驾驶汽车和大型工业
  • word保存为高分辨率图片(word2016)

    word保存为高分辨率图片 word2016 word和ppt转存为jpg或者png等格式的图片时 默认是标准压缩 那么如何实现高分辨率图片保存呢 可按照一下几个步骤来做 亲测有效 第一步 转存为高分辨率pdf 注意要在另存为对话框的选项里
  • python自动化测试教程-最新python版selenium3自动化测试使用说明教程详解

    selenium主要是用来做自动化测试 支持多种浏览器 爬虫中主要用来解决JavaScript渲染问题 模拟浏览器进行网页加载 当requests urllib无法正常获取网页内容的时候 一 声明浏览器对象 注意点一 Python文件名或者
  • 关于ASP.NET MVC与.NET CORE 的区别--小结

    简述关于ASP NET MVC与 NET CORE的区别 1 关于ASP NET 关于MVC 刚开始接触这个技术的时候我经常不理解他们的名字 我相信许多学ASP NET开发人员开始接触MVC应该也和我一样产生很多为什么 也会误认为认为MVC

随机推荐