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

编程入门 行业动态 更新时间:2024-10-26 22:21:41

【STM32标准库】【自制库】0.96寸OLED<a href=https://www.elefans.com/category/jswz/34/1767780.html style=显示屏(SSD1306)(1)满屏图像显示"/>

【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)满屏图像显示

本文发布于:2024-02-11 16:50:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1682098.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:显示屏   图像   标准   OLED

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!