STM32入门教程-2023版【4-2】OLED显示屏简介

关注 + 点赞  不错过精彩内容

图片

大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 

本小结学习一下如何使用OLED显示屏的函数驱动模块

一、OLED显示屏简介

(1)搭建面包板电路

  • 根据接线图接线,这里把OLED插在了面包板的右下方,以后我们就一直把这个屏幕插在这里,需要用的时候随时可以使用,而且放在右下角也不是很占地方

  • 我们使用的是4针脚的OLED屏幕,我们可以在OLED的下面(也就是最右下角的这张图片上),用跳线先插上两根线,把OLED屏幕的GND引到负极供电孔,VCC引到正极供电孔。

  • 此时这个供电孔也会同时接到stm32的PB6和PB7两个引脚,有的同学可能会问,这两个引脚不是电源引脚,可以这样接吗?

  • 其实这个也是没关系的,后面写代码我们直接不初始化这两个引脚就行了,如果不初始化,默认是浮空输入的模式,此时引脚不会输出电平,所以不会有什么影响 。

  • 另外还有一种办法给OLED显示屏供电,你可以不接这两根跳线,直接让PB6口输出低电平,PB7口输出高电平,用GPIO口直接给OLED供电,这个也是没问题的,因为这个OLED功率很小,所以也是可以驱动的,不过这种用GPIO口供电不是很规范,自己玩玩的时候用就行了,要做实际项目的话最好还是用电源供电。

  • 那插好这两个供电跳线之后,再把OLED插到PB6到PB9这四个口,这样OLED就接好了,此时OLED的SCL接到PB8,SDA接到PB9

图片

(2)新建工程

文档这里直接复制之前搭建好的3-4 按键控制LED的工程文件夹,起名为4-1 OLED屏幕,

图片

  • 回到工程文件夹中,在\STM32入门教程资料\程序源码\STM32Project\中有一个1-4 OLED驱动函数模块文件夹,里面有已经准备好的OLED驱动函数模块,可以下载程序源码查看。

  • 打开这个文件夹,里面有两个版本,一个是4针脚I2C版本,另一个是7针脚SPI版本,我们这里用的是4针脚的版本。直接打开这个文件夹,将这三个文件全部选中,Ctrl+C复制到刚刚创建的OLED显示屏工程文件夹中的Hardware文件夹中

图片

图片

图片

之后打开Keil,在Hardware处右键,添加已经存在的OLED文件,按佳Ctrl键选中这三个文件,Add

图片

这样就把OLED的文件添加到工程里来了

图片

  • 打开这三个文件,现在OLED.c里面就是函数的主体代码了,可以看到这个文件包括了引脚配置、引脚初始化、I2C通信的基本时序和OLED用户调用的代码等,这些函数都已经写好了,我们需要更改的就只有引脚配置、引脚初始化的代码。

  • 引脚配置这部分可以更改选择硬件电路上把SCL和SDA这两个引脚接在哪两个端口,比如我们现在SCL接在了PB8,那我们的代码就可以改成#define OLED_W_SCL(x)    GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))

  • 如果接到了PA6上,就可以改成#define OLED_W_SCL(x)    GPIO_WriteBit(GPIOA, GPIO_Pin_6, (BitAction)(x))

  • 同理SDA的引脚配置也是一样的。

图片

  • 与此同时还要更改下引脚初始化函数对应端口,这里面就是把SCL和SDA的两个引脚都初始化为开漏输出的模式

  • 这部分代码和上一节GPIO类似,还不熟悉可以回头看下GPIO的那一节复习下

  • 具体更改就是,使用到的GPIO外设都先用RCC开启一下时钟,再初始化下GPIOB的Pin8、Pin9,所以对于这个模块来说,源代码中默认用的是SCL接PB8,SDA接PB9

图片

如果你想修改成别的GPIO口,那就要把引脚配置、引脚初始化都改一下,剩下的都不需要修改,就可以直接使用这个OLED驱动函数模块了

在OLED.h中,就是外部可调用函数的声明

图片

  • 最后是OLED_Font.h文件,这里存的是OLED的字库数据

  • 因为这个OLED显示屏是不带字库的,想要显示字符图形,还得先定义字符的点阵数据,OLED.c文件的显示函数会用到这些数据,所以我们需要将这个文件一同复制到工程文件中,这里的字库不需要自己修改,如果想加一些别的图形或字符,可以用别人的代码或一些其他的取模软件,这部分可以自行上网搜索了解。

图片

最后清理下main.c的代码,编译下载测试一下,没有问题,现在这就是完整的OLED显示屏的工程了

图片

作 者 :硬核王同学

------- END --------

关注公众号回复“加群”按规则加入技术交流群  回复“1024”查看更多内容

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/342391.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车网络架构与常用总线汇总

汽车CAN总线简述 CAN 是控制器局域网Controller Area Network 的缩写,1986年,由德国Bosch公司为汽车开发的网络技术,主要用于汽车的监测与控制,目的为适应汽车“减少线束的数量”“通过多个网络进行大量数据的高速传输”的需求。…

栈--顺序栈的基本操作(对小白友好)

文章目录 栈的基本操作栈的定义栈的初始化栈的判空进栈出栈读取栈顶元素销毁栈全部源码 栈的基本操作 以下代码中,默认初始化的top为-1。 栈的定义 #define MaxSize 50 //定义栈中元素最大个数typedef struct {int data[MaxSize]; //存放栈中元素int top; //栈顶指针…

Linux基本常用命令大全(二)

五、查找命令 5.1 grep grep命令是一种强大的文本搜索工具 使用实例: ps -ef | grep sshd 查找指定ssh服务进程 ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除gerp身 ps -ef | grep sshd -c 查找指定进程个数 5.2 find find命令在目录…

IOS-生命周期-Swift

目录 App生命周期应用状态未运行——Not running未激活——Inactive激活——Active后台——Backgroud挂起——Suspended 关系图生命周期方法相关方法注意在其他地方监听 ViewController生命周期UIView生命周期 App生命周期 应用状态 App主要有五种状态,分别是&…

从CNN ,LSTM 到Transformer的综述

前情提要:文本大量参照了以下的博客,本文创作的初衷是为了分享博主自己的学习和理解。对于刚开始接触NLP的同学来说,可以结合唐宇迪老师的B站视频【【NLP精华版教程】强推!不愧是的最完整的NLP教程和学习路线图从原理构成开始学&a…

【C++杂货铺】三分钟彻底搞懂函数重载

目录 🌈前言 📁 缺省参数 📂概念 📂分类 📂 注意事项 📁 函数重载 📂概念 📂实现原理 📁 总结 🌈前言 欢迎收看本期【C杂货铺】,这期内容…

[亲测有效]CentOS7下安装mysql5.7

前言 近期项目需要搭配mysql一起存储相关数据,但对mysql的版本有要求,于是在服务器搭建了mysql5.7,顺便记录一下搭建步骤和踩坑解决步骤。 目录 前言 一、清除旧安装包 二、安装YUM 三、使用yum命令即可完成安装 四、重新设置密码 五、…

gradle打包分离依赖jar

正常打包的jar是包含项目所依赖的jar包资源,而且大多数场景下的依赖资源是不会频繁的变更的,所以实际把项目自身jar和其所依赖的资源分离可以实现jar包瘦身,减小上传的jar包总大小,能实现加速部署的效果 一 原本结构 二 配置buil…

基于Python实现人脸识别相似度对比

目录 引言背景介绍目的和意义 人脸识别的原理人脸图像获取人脸检测与定位人脸特征提取相似度计算 基于Python的人脸相似度对比实现数据集准备人脸图像预处理特征提取相似度计算 引言 背景介绍 人脸识别技术是一种通过计算机对人脸图像进行分析和处理,从而实现自动识…

UML中的实现关系

在UML(统一建模语言)中,“实现”关系是指一个类(实现类)实现一个接口或抽象类的方法的情况。这种关系通常用于指定类如何实现某个特定的接口规范。 UML中的实现关系 在UML类图中,实现关系用一条带有空心箭…

学生公寓智能控电管理的功能和管理意义

石家庄光大远通电气有限公司学生公寓智能控电管理系统是由硬件和软件组成的系统,用于控制和管理学生公寓中的电力使用。 一、用户管理 智能控电管理系统具备用户管理功能,可以对学生的个人信息进行统一管理。系统会记录学生的姓名、学号、宿舍号等基本信…

MySQL InnoDB 底层数据存储

InnoDB 页记录Page Directory记录迁移 页 是内存与磁盘交互的基本单位,16kb。 比如,查询的时候,并不是只从磁盘读取某条记录,而是记录所在的页 记录 记录的物理插入是随机的,就是在磁盘上的位置是无序的。但是在页中…

Yuliverse:引领区块链游戏新篇章!

数据源:Yuliverse Dashboard 作者:lesleyfootprint.network 什么是 Yuliverse Yuliverse 是一款元宇宙游戏的先锋,是一款主打 Explore to earn 和 Social to earn 的链游。 这是一款能让你边玩边赚钱的免费区块链游戏,得到 LI…

前端开发如何在自己项目中引用iconfont图标

前端开发如何在自己项目中引用iconfont图标!下面展示一下,详细的引入步骤。 第一步,您需要注册一个会员账号登录进入。创建一个项目。 可以使用其他的平台账号登录,我选了是微信登录,不过他们还会要求你输入手机号&am…

牛客网-----跳石头

题目描述: 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中&#xff0…

网络防御保护1

网络防御保护 第一章 网络安全概述 网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断 随着数…

Oracle Linux 8.9 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任,图解仅供参考,请悉知!本次安装图解是在一个全新的演示环境下进行的,演示环境中没有任何有价值的数据,但这并不代表摆在你面前的环境也是如此。生产环境…

Linux下软件安装的命令【RPM,YUM】及常用服务安装【JDK,Tomcat,MySQL】

Linux下软件安装的命令 源码安装 以源代码安装软件,每次都需要配置操作系统、配置编译参数、实际编译,最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。 RPM软件包管理 RPM安装软件的默认路径: 注意: /etc 配置文件放置目录…

精益生产咨询背后的秘密:企业如何实现价值最大化

精益生产,起源于丰田生产系统,是一种集中于削减浪费、优化流程、提升顾客价值的生产方法。它的核心在于确保每一步生产过程都能为顾客创造价值。以下是实现精益生产咨询的详细步骤: 1.确定客户价值 一切从顾客需求出发。企业需深入理解顾客…

x-cmd pkg | dasel - JSON、YAML、TOML、XML、CSV 数据的查询和修改工具

目录 简介首次用户快速实验指南基本功能性能特点竞品进一步探索 简介 dasel,是数据(data)和 选择器(selector)的简写,该工具使用选择器查询和修改数据结构。 支持 JSON,YAML,TOML&…