IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 0.96寸OLED显示屏标准库移植HAL库(模拟IIC) - 基于STM32 -> 正文阅读

[嵌入式]0.96寸OLED显示屏标准库移植HAL库(模拟IIC) - 基于STM32

**

0.96寸OLED显示屏标准库移植HAL库,使用模拟IIC

**

由于项目的需要使用OLED屏显示,并且现有的项目程序是基于HAL库编写的,而手头能找到的程序是标准库的驱动程序,大概看了一下代码,比较简单,涉及到不同库之间需要改动的代码很少。

代码下载链接:点击此处下载驱动代码

首先去LCDWiKi网站( 链接)下载基于0.96寸OLED屏的IIC驱动代码,这个网站包含了常用显示模块的驱动代码,十分方便,本次我选择的是0.96inch OLED Module SKU:MC096GX
在这里插入图片描述

下载后只需要oled屏的oled.c、oled.h和oledfont.h代码,但是需要改动如下几个地方的代码
首先是oled.c:
1.将oled.c文件中的所有包含“delay_ms”的函数改为HAL库延时函数"HAL_Delay";

2.将oled.c文件中的所有包含“u8”和“u32”的函数改为"uint8_t"和"uint32_t";

3.删除#include "sys.h"和#include “delay.h”,增加#include “stm32g4xx_hal.h”(这里根据自身使用的32芯片定义,我这里用到的是stm32g4系列芯片)。

其次改动oled.h:
1.首先改GPIO定义,原驱动代码的IIC时钟线为PB13,IIC数据线为PB14,我这里用到的是PA11和PA12,所以
将时钟线

#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_13);
#define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_13)

改为

#define OLED_SCLK_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,GPIO_PIN_RESET);
#define OLED_SCLK_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,GPIO_PIN_SET)

将数据线

#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_14)//DIN
#define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pin_14)

改为

#define OLED_SDIN_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET)//DIN
#define OLED_SDIN_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET)

2.同oled.c一样,将oled.h文件中的所有包含“u8”和“u32”的函数改为"uint8_t"和"uint32_t";

3.删除#include “sys.h”,增加#include “stm32g4xx_hal.h”(这里根据自身使用的32芯片定义,我这里用到的是stm32g4系列芯片)。

经过以上步骤,所有移植就完成了,使用CUBEMX创建工程,配置好时钟线和数据线,生成代码,使用keil打开工程,将oled.c放入src文件夹,oled.h文件和oledfont.h文件放入inc文件夹,在主函数main.c中初始化OLED,我的测试函数如下:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */
  OLED_Init();			//初始化OLED  
  OLED_Clear(0)  	; 
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

		OLED_ShowCHinese(6,0,0);//全
		OLED_ShowCHinese(26,0,1);//动
		OLED_ShowCHinese(46,0,2);//电
		OLED_ShowCHinese(66,0,3);//子
		OLED_ShowCHinese(86,0,4);//技
		OLED_ShowCHinese(106,0,5);//术
		OLED_ShowString(6,3,"0.96' OLED TEST",16);
		OLED_ShowString(0,6,"ASCII:",16);  
		OLED_ShowString(63,6,"CODE:",16);  

  }
  /* USER CODE END 3 */
}

最后的显示效果如下,移植成功:

在这里插入图片描述

OLED屏的驱动电路是自己画的,没用到模块,顺便附上原理图:
0.96寸OLED显示屏驱动电路

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-16 21:49:32  更:2022-06-16 21:50:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:41:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码