STM32单片机(四)第一节:OLED调试工具
❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v
本学习过程参考:https://space.bilibili.com/383400717
STM3单片机安装软件、各种资料以及源码的路径:
链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取码:asdf
链接里压缩包的解压密码:32
本大节主要学习OLED调试工具,包含两部分,第一小节主要学习OLED的基础知识,第二小节是写一个简单的程序进行练习,即OLED显示屏,最终提供一个OLED显示屏的驱动函数模块,可以在OLED上显示我们需要的调试信息;
本小节主要是对OLED的基础知识进行学习。
文章目录
- 1 单片机常用调试方式
- 2 OLED简介
- 3 硬件电路
- 4 OLED驱动函数
1 单片机常用调试方式
对于我们的单片机变成而言,经常会遇到的一个很大的问题就是程序调试,因为单片机不像电脑,电脑有一个很大的屏幕,想看什么变量、参数,都可以直接打印大屏幕上;单片机不一样很多时候由于成本和电路结构的限制,它并不会有一个像电脑屏幕那样强大的显示屏,这就对我们的调试造成了困难;
目前常用的程序调试方式有以下几种:

- 串口调试方式是非常常见的,就是用串口将单片机连接到电脑,相当于把电脑的屏幕挂在单片机上,方便单片机显示调试信息;一般我们涉及PCB电路板的时候都会使用串口调试;串口调试的弊端当然就是调试的时候需要拖着电脑;
- 显示屏调试的方式比较直接,也非常方便;其优势是对于不断变化的数据,可以覆盖刷新显示;而且显示屏可以始终接在单片机上,显示方式很直接;还有一般我们做一些稍微复杂的东西,都需要有一个人机交互的界面,这样就可以把显示屏当做产品的一部分,还是非常好用的;显示屏的弊端就是屏幕太小,显示内容有限;
这三种方式各有利弊,可以根据不同的场景选择不同的调试方法;本节我们主要使用OLED的方式进行调试;
2 OLED简介

- OLED是(Organic Light Emitting Diode)的缩写,意思是有机发光二极管;
- OLED显示屏就是使用OLED做出来的显示屏;
- 宽视角是指OLED屏幕上是自发光的,所以无论从哪个角度看,显示内容都是清晰的;
上图中的最底下列出了四种OLED的外观和种类;
- 其中第一种是我们此次学习使用的,总共有4个针脚,像素是白色的;使用I2C的通信协议
- 第二种是7针脚版本的,需要占用的IO口多一些;使用SPI的通信协议;
- 第三种支持蓝色的像素;
- 第四种,支持黄蓝双色的版本,其中上面四分之一固定是黄色,下面四分之三固定是蓝色;这种屏幕适合用作需要显示标题行的界面;
以上四种不同的显示屏,其驱动方式都是一样的;
3 硬件电路
OLED的硬件电路如下图所示:

- 左边是4针脚版本的OLED电路;GND接GND;VCC接3.3V,给OLED供电;然后剩下的SCL和SDA是I2C的通信引脚;需要接在单片机的I2C通信引脚上;(备注,本课程实现的驱动函数模块用的是GPIO口模拟的I2C通信,所以这两个端口就可以接在任意的GPIO口上)
- 右边是7针脚版本的OLED电路;也是一样,GND接GND;VCC接3.3V,给OLED供电;剩下的引脚是SPI通信协议的引脚;(如果是GPIO口模拟的通信协议,那也是支持接在任意的GPIO口的)
4 OLED驱动函数

最后先来预先看一下本节实现的驱动函数模块都包含哪些接口;
如上图所示, 从表里可以看到提供的所有驱动函数;
右上角是OLED实物图和屏幕坐标图;
屏幕坐标图包含4行16列的小区块,从左上开始,向下依次是第1行、第2行、第3行、第4行;向右依次是第1列、第2列、第3列、一直到第16列;
- OLED_Init()函数是OLED的初始化函数,在使用OLED之前需要先调用一下这个函数,对OLED进行初始化,然后就可以正常使用了;
- OLED_Clear()函数是清屏函数,调用这个函数,屏幕就会清空;
- 下面的函数就是OLED的显示函数了,具体显示的内容在右侧作用中有写;
下一节将演示如何对这些驱动函数进行使用。
相关文章:
STM32单片机(四)第一节:OLED调试工具
❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…...
自用的一些网址,码住!
京东羚珑智能抠图网站https://ling.jd.com/live/fm#all:主要用于商品抠图,而且还有多种直播背景设计,非常方便。国外的免费抠图网站https://www.remove.bg/zh/upload:有一个魔法棒的设计,可以自己选择抠图的范围和形状…...
银行vr元宇宙全景虚拟展馆提供更加真实、立体、高效的数字资产交易场景
为了贯彻国家普惠金融政策,使金融如无惠及广大群体,宇宙技术在金融行业中的应用将进一步提升金融消费体验感觉和金融管理水平。打造元宇宙金融服务平台,构建虚实结构的金融服务世界,培育和管理好数字机器人员工队伍,提升金融业务各…...
C++ 泛型编程 类型萃取器的运用
C 泛型编程 类型萃取器的运用 一、C类型萃取器的基本概念与应用(Type Traits in C)1.1 类型萃取器的定义与作用(Definition and Role of Type Traits)1.2 类型萃取器的分类与特性(Classification and Characteristics …...
C++ String类(上篇)
绪论 放弃时间的人,时间也会放弃他。——莎士比亚 ; 本篇章是关于string类内一些函数的介绍以及使用方法,都是我们编程必须掌握的基础! 全文共7000字左右. 话不多说安全带系好,发车啦(建议电脑观看&…...
nested exception is java.lang.NoClassDefFoundError
出现这种问题,一般都是jar有问题,排查是哪个jar包,重新导入maven仓库一下就行了,有的时候需要把原来仓库里的包删掉,重新打包,有的时候要切换分支,到其他分支打包。 打包时候没有打进去…...
科普:python怎么使用Pyinstaller模块打包成可执行文件
目录 1. 使用conda创建虚拟环境2. 列出所有虚拟环境查看是否创建成功3. 激活虚拟环境4. 安装Pyinstaller模块5. Pyinstaller模块常用参数6. 例子:Windows打包成单个文件并可使用命令行窗口并自定义文件logo 1. 使用conda创建虚拟环境 创建个虚拟环境来打包…...
企业级应用高性能可扩展架构设计
前言 马上又要618了,每年到了这个时候,商家就开始促销,价格低会吸引来超多用户,对系统来说就是更多的流量,技术上如何确保网站稳定运行,且不被超卖,同时还要让用户有个良好的购物体验。 12306…...
【安全架构】
概念 安全是产品的属性,安全的目标是保障产品里信息资产的保密性(Confidentiality)、完整性(Integrity)和可用性(Availability),简记为CIA。 保密性: 保障信息资产不被未…...
RabbitMq-高级
参考:https://blog.csdn.net/dingd1234/article/details/125032383 1 TTL TTL QUEUE 声明args TTL MESSAGE postmessage中设置 区别:过期消息会直接删除消息,过期队列若配置死信队列会移到死信队列 ps:同时配置两个已小的为准 2…...
iOS App的打包和上架流程
转载:iOS App的打包和上架流程 - 掘金 1. 创建账号 苹果开发者账号几种开发者账号类型 个人开发者账号 费用:99 美元/年(688.00元)协作人数:仅限开发者自己不需要填写公司的邓百氏编码( D-U-N-S Number…...
Net6中遇到的一个很奇葩的问题
先来看一段代码,是控制台应用程序 internal class Program{static void Main(string[] args){Test().Wait();}private static async Task Test(){await Task.Run(() >{Debug.WriteLine("线程内输出");});Debug.WriteLine("线程外输出");}}执…...
2940. 花坛的最小改变次数
Powered by:NEFU AB-IN Link 文章目录 2940. 花坛的最小改变次数题意思路代码 2940. 花坛的最小改变次数 题意 略 思路 首先需要区间查询gcd,想到st表 其次思路,固定左端点,二分右端点,找gcd与区间长度相等的右端点,个…...
安装源代码 QT 4.8.7
在centos7.9.2009 (Core)操作系统上,安装qt 4.8.7 查看centos版本:cat /etc/centos-release 安装g:sudo yum install gcc gcc-c g版本查看(gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)):g -v 先安装…...
PINN学习与实验之拟合sin(x)
首先给出数学上的知识。 1. 2. 3. 其次给出PINN最基础的理解与应用说明。 1.PINN中的MLP多层感知机的作用? 答:目的是用来拟合出我们需要的那个 常微分方程,即函数逼近器。 2.PINN中物理信息的作用? 答:用于约束MLP反向…...
Java中进制转换的两种方法你知道吗?
目录 十进制转其他进制 其他进制转十进制 实战: A进制转B进制 关于大数运算可以参考躲不掉的高精度计算,蓝桥杯必考_高精度算法在哪些比赛考_无忧#的博客-CSDN博客 十进制转其他进制 使用 Integer.toString(int n,int radix) 方法,该方法…...
Qemu搭建ARM Vexpress开发环境
Qemu搭建ARM Vexpress开发环境 文章目录 Qemu搭建ARM Vexpress开发环境Qemu简介QEMU安装前的准备工作QEMU 安装的两种方式通过网络在线安装源码编译安装源码获取QEMU依赖库安装编译安装 命令选项qemu的标准选项qemu显示选项网络属性相关选项kvm的网络模型 Ubuntu 双网卡&#x…...
JMM如何实现volatile写/读的内存语义
内存屏障类型表 StoreLoad Barriers是一个“全能型”的屏障,它同时具有其他3个屏障的效果。现代的多处理器大多支持该屏障(其他类型的屏障不一定被所有处理器支持)。执行该屏障开销会很昂贵,因为当前处理器通常要把写缓冲区中的数…...
Smali的使用技巧:快速定位Android应用程序中的关键代码
简述 Smali是一种Android应用程序的Dalvik虚拟机指令集汇编语言,用于编写和修改应用程序的DEX文件。通过编写和修改Smali代码,可以实现对Android应用程序的定制化和逆向分析。Smali语言类似于汇编语言,直接操作Dalvik虚拟机指令集。 Smali代…...
04_两种常见的网页反爬措施及应对方法
一、封禁IP地址反爬 1、应对思路: 理解这种反爬方法的含义:当我们用自己电脑的ip地址短时间,高频率访问某个具有此类反爬设置的网站,这种网站就会把我们的ip地址封禁,一般都是封24小时或者其他时间。解决方案:通过代理ip访问,这种方式只不过就是让你有了重新访问网页的…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...
深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
LTR-381RGB-01RGB+环境光检测应用场景及客户类型主要有哪些?
RGB环境光检测 功能,在应用场景及客户类型: 1. 可应用的儿童玩具类型 (1) 智能互动玩具 功能:通过检测环境光或物体颜色触发互动(如颜色识别积木、光感音乐盒)。 客户参考: LEGO(乐高&#x…...
