基于STM32F1自写移植代码分享系列之0.96寸OLED模块

基于STM32F1自写移植代码分享系列之0.96寸OLED模块


作者QQ:758727101
代码有BUG可以向我反馈以便我可以对代码进行更新。

原创不易,转载请注明出处

OLED模块体积小巧,使用方便,是一个很优秀的显示器。在我们调试代码中是一个很方便的使用的模块,在我们每次创建一个新的工程,都需要从商家给的oled模块驱动代码添加进我们的工程,商家提供的代码我们使用起来并不方便,所以作者从方便调用的角度出发,为了应对对于不同的使用环境,尽可能的对源码做较少修改就能驱动并使用oled模块,所以自写了oled模块的移植代码,方便大家使用。

文件获取

二话不说,先提供代码文件。
链接:https://pan.baidu.com/s/1Q7ppKRy5eIw9EB9BwYmN9g
提取码:r17q

把文件解压后,可以看见这么一个文件夹
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
文件夹中总共有6个文件,3个.c文件,和3个.h文件
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
使用方法很简单,把文件添加入要使用的工程即可。
文件添加到工程里后就是这样子的
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
三个.c文件都需要添加进去,添加完后别忘了添加文件路径。

文件使用方法

文件都添加好后,现在我们来介绍一下这个代码如何使用。
在工程中双击打开oled.c文件
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
然后我们再进入oled.h文件
基于STM32F1自写移植代码分享系列之0.96寸OLED模块

参数配置

我们只需要配置好oled.h文件里的参数,再调用函数就可以很方便的使用oled模块了
首先,我们先看第一个需要配置的参数
第一个参数配置,接口类型
常用的oled模块有两种接口,一种是IIC接口,另一种是SPI接口,IIC接口好处是使用的IO引脚少,除去VCC和GND引脚,我们只需要2个IO口就能驱动OLED模块;而SPI接口的需要5个IO口控制,若将使能端口CS接GND也还是需要4个IO口才能驱动OLED模块。但是,SPI接口的好处是有复位端口RES,在单片机重新上电的时候,模块可能会不工作,需要复位单片机后才能正常工作,IIC接口的没有复位端口,必须复位单片机,而SPI接口的有复位端口,可以通过复位端口使OLED模块在不复位单片机的情况下正常工作。
如图,我们通过改变宏定义的数值使代码与我们实际使用的oled模块的接口对应起来。
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
第二个参数配置,显示模式:
显示模式就是选择白字黑底,还是黑字白底,选择白字黑底的功耗会稍微低一些,而黑字白底更接近于我们现实中在白纸上写字,故在不考虑功耗的情况下建议选择感觉比较友好的黑字白底。设置方法和上面一样,通过改变宏定义的数值来设定。
第三个参数配置,是否使用IO口作为OLED模块电源:
因为OLED模块的驱动电流小,故我们可以使用IO口来给模块供电。
参数配置成1,我们使用IO口作为电源,2则不使用。
基于STM32F1自写移植代码分享系列之0.96寸OLED模块

引脚配置

三个参数配置完成后,我们开始配置模块的IO引脚
接口类型我们选择IIC接口的话,我们只需要配置2个引脚,每个引脚需要配置3处地方,引脚时钟,组别,还有引脚号
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
接口类型我们选择SPI接口的话,我们需要配置全部5个引脚,每个引脚需要配置3处地方,引脚时钟,组别,还有引脚号基于STM32F1自写移植代码分享系列之0.96寸OLED模块
如果我们配置了使用IO口给模块供电,则我们需要配置作为VCC和GND的引脚
基于STM32F1自写移植代码分享系列之0.96寸OLED模块

函数介绍

参数配置和引脚配置完毕后,我们就快乐的可以调用函数来使用OLED模块了
下面是可以调用的函数
包含一个必须调用的初始化函数和6个功能函数
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
接下来我们来依次讲解这些函数如何使用

函数说明

第一个函数
OLED模块的初始化函数
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
该函数主要是配置IO引脚和调用OLED模块的驱动代码,所以是必须调用的。
例如这样调用
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
第二个函数
OLED清屏函数,调用此函数后,OLED模块会根据显示模式设置来将屏幕清屏为全白或全黑
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
第三个函数
在指定位置显示一个字符英文字符,详情看注释即可
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
第四个函数
在指定位置显示整数数字,数字可以为负数,详情看注释即可
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
第五个函数
在指定区域显示图片,图片的大小要和选择的区域一致,否则会出错,详情看注释即可
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
第六个函数
显示一个12864大小的图片,因为在平时使用中,我们显示图片一般都是12864大小的,所以为了加方便的调用图片显示函数,所以我专门为显示12864大小的图片单独写了一个函数。
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
第七个函数
字符串显示函数,这个函数最常使用,所以我们重点介绍。
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
前两个参数是设置显示的起点,第三个参数是一个字符串指针,我们需要把要显示的字符串的地址写进去即可,第四个参数是设置字符串的字体大小,支持8
6和1616字体,我们86字体填8,16*16字体填16。
重点来了,这个函数是支持显示汉字的,只要要显示的汉字在oled_font.c文件里有登记,就可以显示出来。
我们打开oled_font.c文件,文件里最下面可以看见已经登记了的汉字。
基于STM32F1自写移植代码分享系列之0.96寸OLED模块

汉字登记方法

关于登记汉字的方法,这里使用的是PCtoLCD2002软件,这个软件单片机资料的软件里都会放有,这里我也提供一下资源
链接:https://pan.baidu.com/s/15rqqVBmQcZOGLnaKEE6r8Q
提取码:21pc
打开软件,先把模式改为字符模式,然后我们再配置选项基于STM32F1自写移植代码分享系列之0.96寸OLED模块
配置说在oled_font.c文件的最上面写有
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
配置完成后,生成字模的左边框里写入汉字,然后点击生成字模即可。基于STM32F1自写移植代码分享系列之0.96寸OLED模块
将生成的字模中除了第一行外的代码复制到登记汉字的数组里即可
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
这里我们可以调整一下格式,这样更加美观。至此汉字已经登记完毕了。

代码测试

接下来我们实际测试一下代码,使用测试图片1来测试OLED模块能不能正常工作。我们把这段代码下载到单片机里,这里我们使用IO口给模块供电,总共使用了PB3-PB9七个引脚,大家使用时请确保IO口是可以正常控制的,如果某些模块用到的IO口不能正常控制的话,模块可能会无法工作,检查方法将IO设置为高低电平然后用万用表测一下引脚电压就可以知道这个IO口能不能正常控制了。
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
效果是这样的
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
接下来测试字符串函数
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
实际效果是这样的
基于STM32F1自写移植代码分享系列之0.96寸OLED模块
至此,测试完毕,大家可以尽情的使用OLED模块来调试程序了。
关于带参数的字符串的使用方法参考oled.h文件里的PS说明。