【STM32】OLED显示屏

1 调试方式

1. 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息

2. 显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上

3. Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能

2 OLED简介

OLED(Organic Light Emitting Diode):有机发光二极管

OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点

0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块

供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64

一般4引脚使用I2C通信;7引脚使用SPI通信。

2.1 硬件电路

SCL和SDA是I2C通信的引脚(这里使用GPIO口模拟I2C通信)

剩下的引脚是SPI通信的引脚。

2.2 驱动函数

函数

作用

OLED_Init();

初始化

OLED_Clear();

清屏

OLED_ShowChar(1, 1, 'A');

显示一个字符

OLED_ShowString(1, 3, "HelloWorld!");

显示字符串

OLED_ShowNum(2, 1, 12345, 5);

显示十进制数字

OLED_ShowSignedNum(2, 7, -66, 2);

显示有符号十进制数字

OLED_ShowHexNum(3, 1, 0xAA55, 4);

显示十六进制数字

OLED_ShowBinNum(4, 1, 0xAA55, 16);

显示二进制数字

实物对照

4行16列

3 OLED显示屏

3.1 接线图

图中右下角,PB6接GND, PB7接VCC,不影响,不初始化这两个口即可(默认浮空输入)

也可以用GPIO口给OLED供电(PB6输出低电平,PB7输出高电平)

3.2 OLED驱动

这里需要和实物对应起来。

其他的先不需要了解。

3.3 OLED显示屏

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"int main()
{OLED_Init();								// 初始化OLEDOLED_ShowChar(1, 1, 'A');					// 显示字符'A'OLED_ShowString(1, 3, "HelloWorld!");   	// 显示字符串OLED_ShowNum(2, 1, 12345, 5);           	// 显示十进制12345,长的话,补0;短的话切掉高位OLED_ShowSignedNum(2, 7, -66, 2);       	// 显示有符号OLED_ShowHexNum(3, 1, 0xAA55, 4);       	// 显示16进制OLED_ShowBinNum(4, 1, 0xAA55, 16);      	// 显示二进制//	OLED_Clear();								// 清屏while (1){}
}

4 Keil的调试模式

换一个LED闪烁的工程

使用硬件在线模仿真。

点击进入调试模式

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

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

相关文章

【精选】VulnHub red 超详细过程思路

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

如何在代码中启动与关闭ROS节点

在ROS开发中,节点的管理是很重要的一部分,其中有一些节点大部分时候用不到,只会在特定情况下被启动(比如建图节点)同时这些节点在使用完后还需要被关闭,因此我们就需要在程序中对这些节点进行启动与关闭的管…

6 Redis缓存设计与性能优化

缓存穿透 缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义…

从0开始学习JavaScript--JavaScript中的解构赋值及使用场景

在现代JavaScript中,解构赋值是一种强大而灵活的语法特性,它允许从数组或对象中提取值并赋给变量。这种语法不仅使代码更简洁,而且提高了可读性。在本篇文章中,将深入探讨JavaScript中解构赋值的基本概念、语法规则以及丰富的使用…

Python接口自动化测试如何设计接口测试用例(详解)

简介 上篇我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作。或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口…

亲子开衫外套 I 真的好温柔好有气质

分享适合宝宝和麻麻 一起穿的开衫外套 包芯纱拼貂毛 软糯亲肤不扎人 上身体验感非常不错 这种面料还不易起球 质感满满,单穿内搭都可!

ChatGPT Plus/GPT4高级数据分析和插件功能详解

ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题,ChatGPT都能为您提供实用且高质量的建议和指导,提高编程效率和准确性。此外,ChatGPT是一位出色的合作伙伴,可以为您提供论文写作的…

智能优化算法应用:基于鸟群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鸟群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鸟群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸟群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Python向Excel写入内容的方法大全

在数据处理和分析中,将Python中的数据写入Excel是一项常见任务。 本文将介绍几种常见的方法,以及如何使用它们向Excel中写入内容。 方法一:使用openpyxl库 openpyxl是一个功能强大的库,用于读写Excel文件。以下是一个简单的使用…

Java数据结构之优先级队列(PriorityQueue)

1、概念 队列:是一种FIFO(First-In-First-Out)先进先出的数据结构,对应于生活中的排队的场景, 排在前面的人总是先通过,依次进行。 优先队列:是特殊的队列,从“优先”一词&#xff…

第20章 多线程

创建线程 继承Thread 类 Thread 类时 java.lang 包中的一个类,从类中实例化的对象代表线程,程序员启动一个新线程需要建立 Thread 实例。 Thread 对象需要一个任务来执行,任务是指线程在启动时执行的工作,start() 方法启动线程&am…

系列十五、BeanDefinition

一、BeanDefinition 1.1、概述 BeanDefinition是一个接口,主要负责存储bean的定义信息,决定bean的生产方式,是一个定义态的bean,类似于说明书。后续BeanFactory就可以根据这些信息生产bean了。比如实例化:可以通过反射…

NTT 的各类优化:Harvey、PtNTT,Intel AVX2、ARM Neon、GPGPU

参考文献: [Har14] Harvey D. Faster arithmetic for number-theoretic transforms[J]. Journal of Symbolic Computation, 2014, 60: 113-119.[Sei18] Seiler G. Faster AVX2 optimized NTT multiplication for Ring-LWE lattice cryptography[J]. Cryptology ePr…

QML Column Row 属性 pyside6

在 QML 中,Column 和 Row 是常用的布局元素,用于水平(Row)和垂直(Column)排列它们的子元素。以下是这两个元素的主要属性列表: Column 属性 spacing: 子元素之间的垂直间隔。width 和 height:…

并查集带权并查集

定义 : 并查集 : 一种数据结构,用于处理一些不相交集合的合并与查询问题; 例题 : 如 : 有n种元素,分属于不同的n个集合; 有两种操作 : 1.给出两个元素的亲属关系,合并两个集合(x与y是亲戚,亲戚的亲戚…

竞赛选题 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…

tcpdump使用心得

参考原文 https://danielmiessler.com/p/tcpdump/ 几个用例 tcpdump -i eth0 显示eth0网卡当前所有的抓包情况eth0是网卡名,可以通过ifconfig获得,也可以通过 tcpdump -D 显示当前可以监听的网卡 -i 参数表示接口,后跟要监听的网卡 tcpdu…

树与二叉树堆:链式二叉树的实现

目录 链式二叉树的实现: 前提须知: 前序: 中序: 后序: 链式二叉树的构建: 定义结构体: 初始化: 构建左右子树的指针指向: 前序遍历的实现: 中序…

LiveData源码分析,粘性事件,数据倒灌

最近面试天天被虐,有个问题问的很频繁,就是 LiveData 的数据倒灌问题怎么解决。 我不知道有多少人连数据倒灌是什么都没听过的,更不要说什么解决方案啦。 我按照我的理解描述一下数据倒灌:就是设置了 LiveData 的数据之后&#…

论文阅读:Distributed Initialization for VVIRO with Position-Unknown UWB Network

前言 Distributed Initialization for Visual-Inertial-Ranging Odometry with Position-Unknown UWB Network这篇论文是发表在ICRA 2023上的一篇文章,本文提出了一种基于位置未知UWB网络的一致性视觉惯性紧耦合优化测距算法( DC-VIRO )的分布式初始化方法。 对于…