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

news2024/11/24 3:30:34

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

图片

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

本小结学习一下如何使用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”查看更多内容

图片

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux切换jdk版本

参考文献:Linux 多个JDK的版本 脚本切换 - C小海 - 博客园 (cnblogs.com)

字符串变换最小字符串 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 给定一个字符串s, 最多只能进行一次变换, 返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则: 交换字符串中任意两个不同位置的字符。 输入描述 一串小写字母组成的字符串s。 输出描…

小型园区组网实例

目录 拓扑需求IP规划路由配置交换机配置NAT配置ACL配置DHCP配置配置过程:配置结果: OSPF配置链路聚合配置配置过程: 网络测试 拓扑 需求 企业网络信息服务平台需实现功能:企业网站服务器、FTP服务器、DNS服务器。企业ip分配地址段…

南阳市学校火灾致13人遇难 富维烟火识别防止悲剧再次发生

近日,南阳市方城县独树镇英才学校不幸发生火灾事故,造成13人遇难,社会各界为此深感悲痛。在这一悲剧发生后,公众对火灾预防的关注度急剧上升。面对这样的情况,北京富维图像公司及时推出了其FIS智能图像识别系统的烟火识…

C++ Primer 第十二章 动态内存 重点解读

文章目录 1 动态内存与智能指针1.1 shared_ptr类1.1.1 shared_ptr的方法1.1.2 make_shared函数 1.2 智能指针和异常1.3 unique_ptr1.3.1 传递unique_ptr参数和返回unique_ptr1.3.2 向unique_ptr传递删除器1.3.3 习题补充 1.4 weak_ptr 2 直接内存管理2.1 new2.2 delete2.4 shar…

电脑文件夹怎么加密?文件夹加密方法介绍

文件夹作为电脑文件管理的重要工具,可以帮助我们有效管理电脑数据。而为了避免数据泄露,我们需要加密文件夹。那么,电脑文件夹该怎么加密呢?下面我们就来了解一下。 方法一:EFS加密 在文件夹上单击鼠标右键&#xff0…

SAP 五个报废率设置简介(上)

通常在生产制造过程中都会面临报废率的问题,生产工艺路线的问题,原材料质量的问题,总会有一些产品在生产过程中被做成报废品,通常报废率的设置有时候会遵循行业的标准设置,亦或者根据工厂生产中统计的历史数据分析后根据不同的产品设置不同的报废率,从而在执行物料的采购…

在Ubuntu上安装pycuda记录

1. 安装CUDA Toolkit 11.8 从MZ小师妹的摸索过程来看,其他版本的会有bug,12.0的版本太高,11.5的太低(感谢小师妹让我少走弯路) 参考网址:CUDA Toolkit 11.8 Downloads | NVIDIA Developer 在命令行输入命…

Whale 帷幄创始人叶生晅荣获亿欧 2023 中国泛人工智能优秀人物 TOP 20

近日,亿欧在 WIM 2023(World Innovators Meet,世界创新者年会)上发布 2023 世界创新奖「2023 中国泛人工智能优秀人物 TOP 20」,表彰那些过去一年中在泛人工智能领域做出突出贡献的领导者、开拓者。「Whale 帷幄」创始…

L1-086 斯德哥尔摩火车上的题(Java)

上图是新浪微博上的一则趣闻&#xff0c;是瑞典斯德哥尔摩火车上的一道题&#xff0c;看上去是段伪代码&#xff1a; s a 1112031584 for (i 1; i < length(a); i) {if (a[i] % 2 a[i-1] % 2) {s max(a[i], a[i-1])} } goto_url(www.multisoft.se/ s) 其中字符串的…

LeetCode 热题 100 | 滑动窗口

目录 1 3. 无重复字符的最长子串 2 438. 找到字符串中所有字母异位词 菜鸟做题第二周&#xff0c;语言是 C 1 3. 无重复字符的最长子串 解题思路&#xff1a; 设置两个指针&#xff0c;左指针和右指针&#xff0c;二者之间形成窗口右指针不断右移&#xff0c;新字母被纳…

用通俗易懂的方式讲解:使用 MongoDB 和 Langchain 构建生成型AI聊天机器人

想象一下&#xff1a;你收到了你梦寐以求的礼物&#xff1a;一台非凡的时光机&#xff0c;可以将你带到任何地方、任何时候。 你只有10分钟让它运行&#xff0c;否则它将消失。你拥有一份2000页的PDF&#xff0c;详细介绍了关于这台时光机的一切&#xff1a;它的历史、创造者、…

【一站解决您的问题】mac 利用命令升级nodejs、npm、安装Nodejs的多版本管理器n、nodejs下载地址

一&#xff1a;下载nodejs 官网地址&#xff0c;点击下载稳定版 https://nodejs.org/en 如果官网下载特别慢&#xff0c;可以点击这个地址下载 点击这里 https://nodejs.cn/download/current/ 安装完成后&#xff0c;就包含了nodejs 和 npm。此时您的版本就是下载安装的版本…

慎用“from pwn import *”!和re库findall方法重名引发的问题

今天搓一个sage脚本遇到一个很无语的问题&#xff0c;经过调试&#xff0c;发现是pwntools库中的findall方法和re库中的findall方法重名导致的。这两个findall方法的用法完全不一样&#xff0c;稍有不慎就会踩坑。 文章目录 区分问题引发如何规避 区分 re 是 Python 中用于处理…

使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等

使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 此自动化脚本将帮助你使用 Python 中的 Android 调试桥 (ADB) 自动化你的智能手机。下面我将展示如何自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 您可以了解有关 ADB 的更多信息,…

C++中的this关键字

2024年1月23日 内容来自 The Cherno:C系列 --------------------------------------------------------------------------------------------------------------------------------- 通过关键字this可以访问成员函数&#xff08;属于某个类的函数&#xff09;&#xff0c;也…

Redis(五)管道

文章目录 官网总结Pipeline与原生批量命令对比Pipeline与事务对比使用Pipeline注意事项 官网 https://redis.io/docs/manual/pipelining/ Pipeline是为了解决RTT往返回时&#xff0c;仅仅是将命令打包一次性发送对整个Redis的执行不造成其它任何影响 总结 Pipeline与原生批量…

从零学习开发一个RISC-V操作系统(四)丨RISC-V汇编语言编程

本篇文章的内容 一、RISC-V汇编语言简介1.1 RISC-V 汇编语言的基本格式1.2 RISC-V 汇编指令操作对象1.3 RISC-V 汇编指令编码格式1.4 RISC-V 汇编指令分类 二、RISC-V汇编语言详解2.1 add 加法指令2.2 sub 减法指令 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习…

Leetcode—216.组合总和III【中等】

2023每日刷题&#xff08;七十八&#xff09; Leetcode—216.组合总和III 算法思想 实现代码 class Solution { public:vector<vector<int>> combinationSum3(int k, int n) {vector<vector<int>> ans;vector<int> path;function<void(int,…

Docker初次体验:WSL+Docker+portanier

文章目录 前言Docker是什么&#xff1f;Docker的优点Docker的使用场景&#xff1a;一件安装 Docker安装开启虚拟化安装wsl下载慢的请看这个下载成功 安装Docker修改Docker安装位置 配置Docker安装portanier&#xff08;可视化的Docker操作页面&#xff09;登录网址 总结 前言 …