STM32Cubemx——IIC驱动0.96寸OLED

文章目录

  • 一、使用工具
  • 二、前置知识
    • 1.12864OLED
    • 2.IIC通信
  • 三、STM32Cubemx配置
    • 1.新建工程配置基本
    • 2.时钟树配置
    • 3.开启IIC并配置
    • 4.生成工程
  • 三、Keil代码移植
    • 1.生成工程,并将本工程中APP文件夹复制进自己的工程
    • 2.打开Keil,添加分组APP,将文件APP的内容添加进分组
    • 3.添加头文件地址
    • 4.在oled.h内将OLED管脚定义修改为自己所用的管脚,并修改为自己的单片机型号
    • 5.主函数内初始化OLED
    • 6.显示汉字示例
  • 五、 工程下载地址

一、使用工具

四针OLED
如图
STM32Cubemx——IIC驱动0.96寸OLED_第1张图片
STM32F407VE核心板
ST-Link
STM32Cubemx 版本 6.0.1
Keil 版本 5.31

二、前置知识

1.12864OLED

0.96 寸 OLED 有黄蓝,白,蓝三种颜色可选;其中黄蓝是屏上 1/4 部分为黄光,下 3/4 为蓝;而且是固定区域显示固定颜色,颜色和显示区域均不能修改;白光则为纯白,也就是黑底白字;蓝色则为纯蓝,也就是黑底蓝字。四针OLED仅支持IIC通信,七针OLED可支持SPI通信和IIC通信。

2.IIC通信

IIC:两线式串行总线,它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbs以上。

IIC通信仅需要两条线:
时钟线SCL:在通信过程起到控制作用。
数据线SDA:用来一位一位的传送数据。

IIC分为软件IIC和硬件IIC
软件IIC:软件IIC通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。
硬件IIC:一块硬件电路,硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件(固件)I2C是直接调用内部寄存器。

IIC是半双工通信方式,硬件IIC效率要远高于软件IIC。我们本教程使用硬件IIC通信。

三、STM32Cubemx配置

1.新建工程配置基本

STM32Cubemx——IIC驱动0.96寸OLED_第2张图片
STM32Cubemx——IIC驱动0.96寸OLED_第3张图片

STM32Cubemx——IIC驱动0.96寸OLED_第4张图片

2.时钟树配置

STM32Cubemx——IIC驱动0.96寸OLED_第5张图片

3.开启IIC并配置

STM32Cubemx——IIC驱动0.96寸OLED_第6张图片
并且配置为高速模式,将相应引脚与OLED连接。

4.生成工程

STM32Cubemx——IIC驱动0.96寸OLED_第7张图片
STM32Cubemx——IIC驱动0.96寸OLED_第8张图片

三、Keil代码移植

1.生成工程,并将本工程中APP文件夹复制进自己的工程

STM32Cubemx——IIC驱动0.96寸OLED_第9张图片

2.打开Keil,添加分组APP,将文件APP的内容添加进分组

STM32Cubemx——IIC驱动0.96寸OLED_第10张图片

3.添加头文件地址

STM32Cubemx——IIC驱动0.96寸OLED_第11张图片

4.在oled.h内将OLED管脚定义修改为自己所用的管脚,并修改为自己的单片机型号

STM32Cubemx——IIC驱动0.96寸OLED_第12张图片

比如我使用的是STM32F407VE,那么我就修改为stm32f4xx_hal.h,并且我开启的IIC管脚是PB6和PB7那么我就修改为这两个管脚。

5.主函数内初始化OLED

(1)首先引入库

/* USER CODE BEGIN Includes */
#include "oled.h"
/* USER CODE END Includes */

(2)初始化

  /* USER CODE BEGIN 2 */
    OLED_Init();
    OLED_Clear();
  /* USER CODE END 2 */

(3)显示一个数字试试

    /* USER CODE BEGIN 3 */
     OLED_ShowNum(0,0,20,2,16);

  }
  /* USER CODE END 3 */

效果如图
STM32Cubemx——IIC驱动0.96寸OLED_第13张图片

6.显示汉字示例

(1)打开汉字取模软件
STM32Cubemx——IIC驱动0.96寸OLED_第14张图片
(2)配置如下
STM32Cubemx——IIC驱动0.96寸OLED_第15张图片

(3)汉字取模
STM32Cubemx——IIC驱动0.96寸OLED_第16张图片

(4)将生成数组存入Keil内
打开oledfont.h文件,将内容复制进入Hzk[][32]数组内,如下
STM32Cubemx——IIC驱动0.96寸OLED_第17张图片
(5)主函数打印出汉字

    /* USER CODE BEGIN 3 */
     OLED_ShowNum(0,0,20,2,16);
     OLED_ShowCHinese(0,2,0);  //打印平
      OLED_ShowCHinese(16,2,1);//打印陆
      OLED_ShowCHinese(32,2,2);//打印成
      OLED_ShowCHinese(48,2,3);//打印江
      OLED_ShowCHinese(64,2,4);//打印,
      //此OLED为128*64,x取值为0-128,y取值为0,1,2,3,4,5,6,7一共分八页,一个汉字需要16*16的位置,
      //即x需要加16,y需要加2才能不重叠,一个尺寸为16的数字占的位置为8*16

  }
  /* USER CODE END 3 */

若需显示其他汉字,需要从取模软件内得到数组存入程序才可。
效果如图
STM32Cubemx——IIC驱动0.96寸OLED_第18张图片

五、 工程下载地址

链接:https://pan.baidu.com/s/150M1XtDEUoWVOzNvKhwrYQ
提取码:bst4

你可能感兴趣的:(stm32,单片机,程序人生)