当前位置: 首页 > news >正文

【嵌入式软件-STM32】OLED显示屏+调试方法

目录

一、调试方式

1)串口调试

优势

弊端

2)显示屏调试

优势

弊端

3)Keil调试模式

4)点灯调试法

5)注释调试法

6)对照法

二、OLED简介

OLED组件

OLED显示屏

0.96寸OLED模块

OLED外观和种类

各项参数

三、硬件电路

1)四针脚

2)七针脚

四、OLED驱动函数


一、调试方式

1)串口调试

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

        非常常见,就是用串口将单片机连接到电脑,相当于把电脑的屏幕挂在单片机上,方便单片机显示调试信息,但要学会串口通信

        优势

        可借助强大的电脑来调试,电脑的软件不仅可以显示单独的参数,还可以显示曲线、图形、图像等,更甚还可以自行做软件来实现强大的用户交互界面

        弊端

        调试时需要拖着电脑,且通常的串口助手只能以信息流的方式呈现数据,即只能一行一行地打印,如若有很多变化的数据要显示,就只能在电脑上刷屏显示,用起来不太方便

2)显示屏调试

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

        方法比较直接

        优势

        对于不断变化的数据,可以覆盖刷新显示,且显示屏可以始终接在单片机上,显示方式很直接;做复杂东西,需要有人机交互的界面时,可以直接把显示屏当做产品一部分

        弊端

        屏幕太小,显示内容有限,没有电脑软件那么强大功能        

3)Keil调试模式

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

        进入调试模式 

还有很多调试法,如

4)点灯调试法

(当不清楚程序是不是执行到了某个位置,那就可以在该位置放一个点灯的代码,运行到了灯就亮,没运行到,灯就不亮)

5)注释调试法

(源程序是好的,但加了某段程序就死了,可以把新加入的程序全部注释掉,恢复到正常运行的状态,再依次一行一行地解除注释,直到错误出现 或 注释掉一部分来测试另一部分,减少程序运行的部分来定位出问题的程序在哪里)

6)对照法

(找到一个没问题的程序,其执行逻辑没问题,且觉得自身写的逻辑也没问题的话,就可以对照一下,在他的程序逻辑上,逐步替换转换成你的程序逻辑,这样比较容易发现错误在什么地方)

测试程序的基本思想:缩小范围、控制变量、对比测试等

二、OLED简介

OLED,有机发光二极管

OLED组件

OLED显示屏

性能优异的新型显示屏,具有功耗低(OLED每个像素都为单独的发光二极管,每个像素都可以自发光,不像LCD需要有背光,所以OLED屏幕比较省电),响应速度快(使OLED有更高的刷新率,总线时序快,也可以避免阻塞程序)、宽视角(因为自发光,所以在任何角度看,显示的内容都为清晰的,OLED屏幕基本各个视角都可以看清屏幕;而LCD从上或下面斜着看屏幕,屏幕会变黑,难以看清上面内容,二者为可视视角的差别)、轻薄柔韧等特点

0.96寸OLED模块

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

该OLED只有一种颜色,分辨率也比较低,只需几根线和简单的通信协议即可驱动,占用资源比较小

OLED外观和种类

1)四针脚 像素白色

2)七针脚 像素白色 需要占用的IO口多一些

3)蓝色像素

4)黄蓝双色像素(上 1/4像素固定为黄色,下 3/4像素固定为蓝色,适合做需要显示标题行的界面)

各项参数

供电:3~5.5V (3.3V和5V单片机都兼容)       

通信协议:I2C/SPI   (4针脚屏幕,一般用的是I2C通信协议;7针脚屏幕,一般用的是SPI通信协议)

分辨率:128*64

三、硬件电路

1)四针脚

GND接GND

VCC接3.3V,给OLED供电

SCL & SDA 为I2C的通信引脚,需要接在单片机I2C通信的引脚上

(若给的驱动函数模块为GPIO口模拟的I2C通信,则两个端口就可以接在任意的GPIO口上)

2)七针脚

GND

VCC接电源

剩下的引脚为SPI通信协议的引脚

(若给的驱动函数模块为GPIO口模拟的协议,则两个端口就可以接在任意的GPIO口上)

四、OLED驱动函数

解析:

ShowChar(指定起始行,指定起始列,'要显示的字符');

ShowString(指定行,指定列,"要显示的字符串");

ShowNum(指定行,指定列,显示数字,要显示的数字长度);

ShowNum长度参数比数字长度长,则会在前面补0;比数字长度小,就会把高位的数据切掉(前面的位);ShowNum只显示无符号数

ShowSignedNum显示有符号数,正数前自带加号

对于进制转换 ShowHexNum(转十六进制),ShowBinNum(转二进制)而言

因为C语言不能直接写二进制的数,所以这里的显示数字用十六进制来代替(格式内容同ShowNum一样,但长度为转化后进制的长度)

tips:

STM32引脚上电后,如果不初始化,默认是浮空输入的模式(在该模式下,引脚不会输出电平,所以不会有什么影响)

SCL &SDA 两个引脚初始化为开漏输出模式

文件OLED_Font.h:存放OLED的字库数据

要想显示字符图形,还得先定义字符的点阵数据,即字库

相关文章:

【嵌入式软件-STM32】OLED显示屏+调试方法

目录 一、调试方式 1)串口调试 优势 弊端 2)显示屏调试 优势 弊端 3)Keil调试模式 4)点灯调试法 5)注释调试法 6)对照法 二、OLED简介 OLED组件 OLED显示屏 0.96寸OLED模块 OLED外观和种类…...

kubernetes简单入门实战

本章将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其访问 Namespace Namespace是k8s系统中一个非常重要的资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下,k8s集群中的所有的Pod都是可以相…...

Python连接Mysql、Postgre、ClickHouse、Redis常用库及封装方法

博主在这里分享一些常见的python连接数据库或中间件的库和封装方案,希望对大家有用。 Mysql封装 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import pymysql from settings import MYSQL_DB, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_HOST, EN…...

如何修改npm包

前言 开发中遇到一个问题,配置 Element Plus 自定义主题时,添加了 ElementPlusResolver({ importStyle: "sass" }) 后,控制台出现报错,这是因为 Dart Sass 2.0 不再支持使用 !global 来声明新变量,虽然当前…...

Django 2024全栈开发指南(三):数据库模型与ORM操作(上篇)

目录 一、模型的定义二、数据迁移三、数据表关系四、数据表操作4.1 Shell工具4.2 数据新增4.3 数据修改4.4 数据删除4.5 数据查询 Django 对各种数据库提供了很好的支持,包括 PostgreSQL、MySQL、SQLite 和 Oracle,而且为这些数据库提供了统一的 API 方法…...

低代码可视化-uniapp开关选择组件-低码生成器

开关(Switch)选择组件是一种用户界面元素,允许用户在两种状态(通常是开/关、是/否、启用/禁用等)之间进行切换。这种组件在移动应用、桌面软件、网页以及物联网设备中广泛应用。以下是对开关Switch选择组件的详细介绍&…...

【arxiv‘24】Vision-Language Navigation with Continual Learning

论文信息 题目:Vision-Language Navigation with Continual Learning 视觉-语言导航与持续学习 作者:Zhiyuan Li, Yanfeng Lv, Ziqin Tu, Di Shang, Hong Qiao 论文创新点 VLNCL范式:这是一个新颖的框架,它使得智能体能够在适…...

如何在 Ubuntu 上安装 Jupyter Notebook

本篇文章将教你在 Ubuntu 服务器上安装 Jupyter Notebook,并使用 Nginx 和 SSL 证书进行安全配置。 我将带你一步步在云服务器上搭建 Jupyter Notebook 服务器。Jupyter Notebook 在数据科学和机器学习领域被广泛用于交互式编码、可视化和实验。在远程服务器上运行…...

免费申请 Let‘s Encrypt SSL 证书

免费申请 Lets Encrypt SSL 证书 在网络安全日益重要的今天,为网站启用 SSL 证书是保障数据安全和用户信任的关键。Lets Encrypt 提供的免费 SSL 证书是一个很好的选择。下面我们详细介绍如何为网站域名申请该证书。 一、准备工作 域名 确保已注册要使用 SSL 证书的…...

【JAVA】Java基础—面向对象编程:继承—重写父类方法

在Java开发中,重写(Override)是面向对象编程(OOP)中的一个重要概念。它允许子类提供父类方法的具体实现,从而改变或扩展父类的行为。重写是实现多态性的重要手段,使得程序在运行时能够根据对象的…...

【C++初阶】C++入门

1、C第一个程序 C是脱胎于C语言的&#xff0c;所以也包含了C语言绝大多数的内容&#xff0c;C兼容C语言绝大多数的语法,在C语言中能实现的程序在C中也是可以执行的&#xff0c;但需要将定义文件代码的后缀改为.cpp 就比如hello world程序 // test.cpp #include<stdio.h&g…...

自然推理系统:的拒取式的解析

要推导出 **"非A"** 的拒取式 (rejection form)&#xff0c;首先我们要理解逻辑推理中几个基本的概念。 假设我们有以下前提&#xff1a; 1. **A → B** &#xff08;如果A成立&#xff0c;那么B成立&#xff09; 2. **非B** &#xff08;B不成立&#xff09; 我们…...

OceanBase 分区表详解

1、分区表的定义 在OceanBase数据库中&#xff0c;普通的表数据可以根据预设的规则被分割并存储到不同的数据区块中&#xff0c;同一区块的数据是在一个物理存储上。这样被分区块的表被称为分区表&#xff0c;而其中的每一个独立的数据区块则被称为一个分区。 如下图所示&…...

Java中 LinkedList<>,ArrayDeque<>的区别 || Queue和Deque的区别

我是你爹 LinkedList<> 和 ArrayDeque<> 的区别Queue接口 和 Deque接口区别Queue 的用法Deque 的用法 LinkedList<> 和 ArrayDeque<> 的区别 1. 数据结构实现方式&#xff1a; LinkedList&#xff1a; 基于链表结构&#xff0c;是一个双向链表。每个…...

freemarker 读取template.xml ,通过response 输出文件,解决中文乱码问题

采用 try (Writer writer new OutputStreamWriter(os, “UTF-8”)) UTF-8 内容转换 public static void setResponseHeader(HttpServletResponse response, String fileName) {try {// fileName "中文.xls";try {fileName new String(fileName.getBytes(),"…...

arkUI:水果选择与管理:基于 ArkUI 的长按编辑功能实现

水果选择与管理&#xff1a;基于 ArkUI 的长按编辑功能实现 1 主要内容说明2 相关内容2.1 相关内容2.1.1 源码1内容的相关说明2.1.1.1 数据结构与状态管理2.1.1.2 添加水果功能2.1.1.3 水果列表展示2.1.1.4 长按进入编辑模式2.1.1.5 复选框的多选功能2.1.1.6 删除水果功能2.1.1…...

docker使用,docker图形化界面+docker详细命令

DockerUI进入 docker container run --rm --name docker.ui -v /var/run/docker.sock:/var/run/docker.sock -p 8999:8999 joinsunsoft/docker.ui访问8999端口就行&#xff0c;就可以图形化管理Docker了 常规使用 搭建 sudo docker-compose build #有一些需要这条命令 su…...

idea项目运行时 java: 错误: 不支持发行版本 21

java项目运行时&#xff0c;同样的项目别的都是正常运行&#xff0c;单个这个项目一直报 java: 错误: 不支持发行版本 21&#xff0c; 报错的解释 这个错误表明你正在尝试使用Java编译器编译一个类&#xff0c;但是编译器遇到了一个它不支持的版本号&#xff0c;在这个上下文…...

hive alter table add columns 是否使用 cascade 的方案

结论 alter table xxx add columns 时加上 cascade 时&#xff0c;会把所有的分区都加上此字段。如果不加则只有新的分区会加上此字段&#xff0c;旧的分区没有此字段&#xff0c;即便数据文件里有对应的数据&#xff0c;也不能显示内容。 如果分区都是 insert overwrite 生成…...

手机怎么玩steam游戏?随时随地远程串流玩steam游戏教程

喜欢在steam上玩游戏的玩家有没有想过&#xff0c;其实这些游戏也能在手机上玩呢&#xff1f;不管是探索的开放世界游戏&#xff0c;还是紧张刺激的射击游戏&#xff0c;还是丰富剧情的视觉小说等等&#xff0c;这些游戏你都可以通过远程串流软件&#xff0c;来帮你实现在手机上…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...