【9】基于STM32CubeMX-STM32OLED开发
我的学记|刘航宇的博客

【9】基于STM32CubeMX-STM32OLED开发

刘航宇
3年前发布 /已收录
温馨提示:
本文最后更新于2022年11月29日,已超过854天没有更新,若内容或图片失效,请留言反馈。

目录

必备文件

OLED文件-SPI版
来源:默认网盘

OLED I2C版4脚
来源:默认网盘

关于OLED的概述

OLED:Organic Light-Emitting Display,有机发光显示。
OLED具备自发光、厚度薄、视角广、功耗低、对比度高、响应速度快、可用于挠曲性面板、使用温度范围广、构造及其制作过程较简单等优异特性,并认为是一种比液晶显示更为先进的新一代平板显示技术。以目前的技术,OLED的尺寸还难以大型化,但是分辨率却可以做得很高。

基于STM32的OLED应用,要做那些事情:
【1】移植OLED的底层驱动函数库。
【2】准备需要的中文字符和图片等数据。
【3】调用OLED驱动库中的底层函数进行应用开发。
图片[1] - 【9】基于STM32CubeMX-STM32OLED开发 - 我的学记|刘航宇的博客

OLED开发相关资源下载

基于STM32CubeMX的OLED屏驱动程序库(内含4个文件)
【1】XMF_OLED_STM32Cube.c:驱动程序的源文件。
【2】XMF_OLED_STM32Cube.h:驱动程序的头文件。
【3】XMF_OLED_Font.h:字库数据文件。
【4】XMF_OLED_BMP.h:图片数据文件。

基于STM32CubeMX的OLED底层驱动函数移植

【1】将4个驱动文件拷贝到工程文件中,和main.c放在同一目录,并将XMF_OLED_STM32Cube.c添加到工程代码文件中,并在main.c中引入头文件XMF_OLED_STM32Cube.h。
【2】根据所选用的芯片型号,修改XMF_OLED_STM32Cube.h头文件中所以用的芯片头文件。
【3】根据硬件电路原理图中,修改XMF_OLED_STM32Cube.h中OLED的引脚定义。
【4】查看OLED_Initvoidvoid初始化函数的源码,根据电路接口和应用需要进行修改。
图片[2] - 【9】基于STM32CubeMX-STM32OLED开发 - 我的学记|刘航宇的博客

OLED驱动库中常用的函数

void OLED_Init(void);          //OLED初始化函数
void OLED_Clear(void);         //OLED清屏函数
//显示英文字符串函数
void OLED_ShowString(unsigned char x,unsigned char y,unsigned char *p);

参数1:x,起点列坐标,0127
参数2:y,起点行坐标,07
参数3*p,字符串指针
返回值:void,无。
//显示中文字符函数
void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no);

参数1:x,起点列坐标,0127
参数2:y,起点行坐标,07
参数3:no,待显示中文字符在数组Hzk[][32]中的位置。
返回值:void,无。
//显示图片函数
void OLED_DrawBMP( unsigned char x0, unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);

参数1:x0,起点列坐标,0127
参数2:y0,起点行坐标,07
参数3:x1,图片的列范围,1128
参数4:y1,图片的行范围,18
参数5:BMP[],待显示图片数据的数组。
返回值:void,无。

实训案例:STM32控制OLED显示

要点
图片[3] - 【9】基于STM32CubeMX-STM32OLED开发 - 我的学记|刘航宇的博客
字库软件中行前后缀不需要括号
在XMF07A或XMF07C开发板上,利用STM32CubeMX和Keil5协同开发,完成以下的功能:
【1】用取字模软件生产一张图片数据,作为开机界面在OLED上显示。
【2】0.5秒后进入信息界面, 第1行显示网址“sciarm.com”, 第2行显示中文“小蜜蜂笔记”,第3行显示日期“2022-02-18”。
图片[4] - 【9】基于STM32CubeMX-STM32OLED开发 - 我的学记|刘航宇的博客

//用取字模软件生成开机LOGO图片数据,并拷贝到XMF_OLED_BMP.h的数组中。
const unsigned char BMP1[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    //此处省略64×62个字节元素
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//用取字模软件生成所需中文字符数据,保持到XMF_OLED_Font.h中的Hzk[]数组。
const unsigned char Hzk[][32]={
{0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x20,0x40,0x80,0x00,0x00},
{0x08,0x04,0x03,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x01,0x0E,0x00},/*"小",0*/
/* (16 X 16 , 宋体 )*/
{0x10,0x4C,0x24,0x04,0xF4,0x84,0x8D,0x56,0x44,0x24,0x14,0xC4,0x24,0x54,0x0C,0x00},
{0x00,0x41,0x5D,0x55,0x54,0x55,0x55,0x7F,0x55,0x55,0x55,0x55,0x7C,0xC0,0x00,0x00},/*"蜜",1*/
/* (16 X 16 , 宋体 )*/
{0x00,0xF8,0x08,0xFF,0x08,0xF8,0x80,0x90,0x4C,0x57,0xA4,0x54,0x4C,0x84,0x80,0x00},
{0x20,0x63,0x21,0x1F,0x11,0x39,0x10,0x10,0x15,0x15,0xFF,0x15,0x15,0x10,0x10,0x00},/*"蜂",2*/
/* (16 X 16 , 宋体 )*/
{0x10,0x08,0x44,0x47,0x4C,0x54,0x44,0xD4,0x28,0x27,0x24,0x2C,0x34,0x04,0x04,0x00},
{0x00,0x10,0x12,0x12,0x12,0x12,0x12,0x7F,0x89,0x89,0x89,0x89,0x89,0x88,0xF0,0x00},/*"笔",3*/
/* (16 X 16 , 宋体 )*/
{0x40,0x40,0x42,0xCC,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x84,0xFC,0x00,0x00,0x00},
{0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x3F,0x40,0x40,0x40,0x40,0x41,0x40,0x70,0x00},/*"记",4*/
/* (16 X 16 , 宋体 )*/
};
extern unsigned char BMP1[];

void OLED_display_pic()
{
    OLED_Clear();
    OLED_DrawBMP(0,0,128,8,BMP1);
}
void OLED_display_info()
{
    OLED_Clear();
    OLED_ShowString(6,0,(uint8_t *)"sciarm.com");
    
    OLED_ShowCHinese(10,3,0);        //小
    OLED_ShowCHinese(28,3,1);        //蜜
    OLED_ShowCHinese(46,3,2);        //蜂
    OLED_ShowCHinese(64,3,3);        //笔
    OLED_ShowCHinese(82,3,4);        //记
    
    OLED_ShowString(24,6,(uint8_t *)"2022-02-18");
}
//在mian()函数中添加下面的代码:
/* USER CODE BEGIN 2 */
OLED_Init();              //OLED初始化
OLED_display_pic();       //显示图片
HAL_Delay(500);           //延时0.5秒
OLED_display_info();      //显示信息
  /* USER CODE END 2 */
© 版权声明
THE END
喜欢就支持一下吧
点赞 14 分享 赞赏
严谨、务实和求真
评论 共17条
OωO
  • 惊讶
  • 撇嘴
  • 色
  • 发呆
  • 得意
  • 流泪
  • 害羞
  • 闭嘴
  • 睡
  • 大哭
  • 尴尬
  • 发怒
  • 调皮
  • 呲牙
  • 微笑
  • 难过
  • 酷
  • 抓狂
  • 吐
  • 偷笑
  • 可爱
  • 白眼
  • 傲慢
  • 饥饿
  • 困
  • 惊恐
  • 流汗
  • 憨笑
  • 悠闲
  • 奋斗
  • 咒骂
  • 疑问
  • 嘘
  • 晕
  • 折磨
  • 衰
  • 骷髅
  • 敲打
  • 再见
  • 发抖
  • 爱情
  • 跳跳
  • 猪头
  • 拥抱
  • 蛋糕
  • 炸弹
  • 刀
  • 便便
  • 咖啡
  • 玫瑰
  • 凋谢
  • 爱心
  • 心碎
  • 太阳
  • 月亮
  • 赞
  • 踩
  • 握手
  • 胜利
  • 飞吻
  • 怄火
  • 西瓜
  • 冷汗
  • 擦汗
  • 抠鼻
  • 鼓掌
  • 糗大了
  • 坏笑
  • 左哼哼
  • 右哼哼
  • 哈欠
  • 鄙视
  • 委屈
  • 快哭了
  • 阴险
  • 左亲亲
  • 吓
  • 可怜
  • 菜刀
  • 篮球
  • 示爱
  • 抱拳
  • 勾引
  • 拳头
  • 差劲
  • 爱你
  • NO
  • OK
  • 转圈
  • 挥手
  • 鞭炮
  • 喝彩
  • 爆筋
  • 棒棒糖
  • 喝奶
  • 手枪
  • 茶
  • 眨眼睛
  • 泪奔
  • 无奈
  • 卖萌
  • 小纠结
  • 喷血
  • 斜眼笑
  • doge
  • 惊喜
  • 戳一戳
  • 笑哭
  • 我最美
  • 羊驼
  • 幽灵
  • 大笑
  • 不开心
  • 呃
  • 求求
  • 点赞
  • 无聊
  • 托脸
  • 吃
  • 害怕
  • 飙泪
  • 我不看
  • 托腮
  • 啵啵
  • 糊脸
  • 拍头
  • 扯一扯
  • 舔一舔
  • 蹭一蹭
  • 顶呱呱
  • 抱抱
  • 暴击
  • 开枪
  • 撩一撩
  • 拍桌
  • 拍手
  • 干杯
  • 嘲讽
  • 哼
  • 佛系
  • 掐一掐
  • 颤抖
  • 偷看
  • 扇脸
  • 原谅
  • 喷脸
  • 生日快乐
  • 甩头
  • 扔狗
  • 脑阔疼
  • 沧桑
  • 捂脸
  • 辣眼睛
  • 哦哟
  • 头秃
  • 问号脸
  • 暗中观察
  • emm
  • 吃瓜
  • 呵呵哒
  • 我酸了
  • 汪汪
  • 汗
  • 无眼笑
  • 敬礼
  • 狂笑
  • 面无表情
  • 摸鱼
  • 魔鬼笑
  • 哦
  • 请
  • 睁眼
  • 敲开心
  • 让我康康
  • 摸锦鲤
  • 期待
  • 拿到红包
  • 拜谢
  • 元宝
  • 牛啊
  • 胖三斤
  • 好闪
  • 左拜年
  • 右拜年
  • 右亲亲
  • 牛气冲天
  • 喵喵
  • 打call
  • 变形
  • 仔细分析
  • 菜汪
  • 崇拜
  • 比心
  • 庆祝
  • 拒绝
  • 嫌弃
  • 吃糖
  • 惊吓
  • 生气
  • 举牌牌
  • 烟花
  • 虎虎生威
  • 豹富
  • 花朵脸
  • 我想开了
  • 舔屏
  • 打招呼
  • 酸Q
  • 我方了
  • 大怨种
  • 红包多多
  • 你真棒棒
  • 大展宏兔
  • 福萝卜
  • 坚强
  • 贴贴
  • 敲敲
  • 咦
  • 拜托
  • 尊嘟假嘟
  • 耶
  • 666
  • 裂开
  • 骰子
  • 包剪锤
  • 亲亲
  • 狗狗笑哭
  • 好兄弟
  • 狗狗可怜
  • 超级赞
  • 狗狗生气
  • 芒狗
  • 狗狗疑问
  • 奥特笑哭
  • 彩虹
  • 祝贺
  • 冒泡
  • 气呼呼
  • 忙
  • 波波流泪
  • 超级鼓掌
  • 跺脚
  • 嗨
  • 企鹅笑哭
  • 企鹅流泪
  • 真棒
  • 路过
  • emo
  • 企鹅爱心
  • 晚安
  • 太气了
  • 呜呜呜
  • 太好笑
  • 太头疼
  • 太赞了
  • 太头秃
  • 太沧桑
  • 龙年快乐
  • 新年中龙
  • 新年大龙
  • 略略略
  • 狼狗
  • 抛媚眼
  • 超级ok
  • tui
  • 快乐
  • 超级转圈
  • 别说话
  • 出去玩
  • 闪亮登场
  • 好运来
  • 姐是女王
  • 我听听
  • 臭美
  • 送你花花
  • 么么哒
  • 一起嗨
  • 开心
  • 摇起来
  • 划龙舟
经典
emoji
泡泡
阿鲁
颜文字
取消
  1. 头像
    32
     · 
    回复

    这个的I2C是怎么接哪个扣的,谢谢?

    1. 头像
      32
       · 
      回复

      @32

      1. 头像
        刘航宇 作者
         · 
        回复

        @32

        直接看一下代码,代码里面有

  2. 头像
    32
     · 
    回复

    OLED的SPI版文件那个网页打不开了,能重新发一下吗:$(抱拳)

    1. 头像
      刘航宇 作者
       · 
      回复

      @32

      我这边移动网的可以打开https://wwu.lanzoub.com/iCqK302ybokh,换其他运营商网络试试!

      1. 头像
        32
         · 
        回复

        @刘航宇

        谢谢作者大大这个可以正常打开.:$(抱拳)

  3. 头像
    UM23
     · 
    回复

    OLED的SPI版文件那个网页打不开了:$(流泪)

    1. 头像
      刘航宇 作者
       · 
      回复

      @UM23

      我这边移动网的可以打开https://wwu.lanzoub.com/iCqK302ybokh,换其他运营商网络试试!

      1. 头像
        UM23
         · 
        回复

        @刘航宇

        十分感谢

    2. 头像
      32
       · 
      回复

      @UM23

      哥怎么样解决了吗

      1. 头像
        UM23
         · 
        回复

        @32

        解决了,换个网络就行

  4. 头像
    LX
     · 
    回复

    画图

    1. 头像
      LX
       · 
      回复

      @LX

      为啥我的不显示呢刘老师

      1. 头像
        刘航宇 作者
         · 
        回复

        @LX

        检查驱动程序库与是否OLED初始化

  5. 头像
    dd
     · 
    回复

    刘老师您好,请问STM32与OLED的开发课程中OLED在proteus中仿真是用的哪个元件?

    1. 头像
      刘航宇 作者
       · 
      回复

      @dd

      本博客第一课网页提供了protues仿真文件

      1. 头像
        STM小白
         · 
        回复

        @刘航宇

        本博客第一课网页提供了protues仿真文件,找不到这个文件,刘老师能发一下链接吗?