本文主要是介绍【STM32标准库】【自制库】0.96寸OLED显示屏(SSD1306)(1)满屏图像显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 链接
- 需求分析
- 取模
- 1.处理图片
- 2.打开软件
- 3.设置图形模式
- 4.打开BMP图像
- 3.设置参数
- 4.生成
- 显示图片
- 成品
文章基于适用于STM32F4系列,作者使用STM32F401CCU6开发板。
本文章基于此系列和开发板展开讨论。
本系列以SSD1306为主控芯片的I2C接口的0.96寸OLED屏幕为例介绍
内容较多,分节进行
链接
基础命令和寻址方法
IIC(I2C)协议
- OLED初始化,软件I2C实现,基础数据发送
- 满屏图像显示
- 全屏动画显示
- 显示字母和数字,汉字
- 画指定的点
- 指定两点画线段
- 指定圆心和半径画圆
- 指定圆心半径角度画圆弧
需求分析
本节解决的问题是在OLED屏幕上显示出一个满屏图片
解决步骤为
- 取模
- 显示图片
取模
这里使用的软件为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)满屏图像显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!