【STM32教程】第三章 使用OLED屏作为调试工具

news2024/11/25 0:23:09

案例代码及相关资料下载链接:

链接:https://pan.baidu.com/s/1hsIibEmsB91xFclJd-YTYA?pwd=jauj 
提取码:jauj 

1    OLED调试工具

1.1对程序调试的认识与OLED简介

本章节只需要知道怎么调用封装好的驱动函数,用OLED屏幕来做调试工具即可,对于OLED屏幕的原理与函数代码将会在I2C通信之后讲解。

对于单片机编程而言,尤其是STM32这种模块多函数代码复杂的单片机进行编程,程序调试是非常重要的,因为单片机没有像电脑一样有很大的显示屏,想看其中的变量与参数打印到屏幕即可而单片机,由于材料和成本的问题导致对单片机编程的调试有很大的困难,所以对于程序调试的学习非常重要,而目前常用的调试方式有以下几种:

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

优点:通过串口连接电脑,用功能更强大的电脑来协助调试,由于电脑不仅可以显示参数,还可以显示图形,曲线等。

劣势:借助电脑就说明调试需要拖着电脑,并且通常的串口助手只能以信息流的方式呈现数据,需要我们对电脑不停的刷屏所以便捷度不高。

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

优点:对于不断变化的数据可以覆盖刷新显示,而OLED显示屏是始终接在单片机上,显示方式更直接,操作起来也更便捷。

劣势:和电脑相比的话OLED显示屏的屏幕太小,显示内容有限,不能大规模的来调试,而且功能较为单一,调试功能没有电脑强。

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

OLED的简介:

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

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

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

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

对于OLED显示屏通常由四针角和七针脚,两者最明显的区别是:四针脚的OLED显示屏用的是I2C的通信协议,而七针脚的OLED显示屏用的是SPI通信协议。

OLED的硬件电路:

上图左边的硬件电路是四针脚的OLED显示屏,GND与VCC用来供电,而SCL与SDA是I2C的通信引脚,需要接在I2C的通信引脚之上,不过本节用到的驱动函数代码是GPIO口来模拟I2C的通信引脚,所以SCL与SDA是可以接到任意的GPIO口上的。而本开发板用到的OLED显示屏就是四针脚的。对于七针脚的OLED的接线电路与四针脚基本一致,除去VCC与GND之外剩下的接线口均为SPI的通信引脚,所以不做过多赘述。

1.2对OLED驱动函数的运用

OLED显示屏的接线图如下:

实物图如下:

OLED显示屏下面的电路连接:

 全部连接好如下图所示:

2. 编程部分:

2.1 配置STMCubeMX

首先配置STMCubeMX时,对电源连接的部分不用进行配置,只需要将PB8与PB9配置为输出模式即可,然后注意对GPIO口配置时将输出模式要配置为开漏输出,其他配置不变即可。

2.2 代码部分

对于OLED显示函数的代码之后会直接给文件,所以本次代码只是一个测试实验。OLED显示的函数如下:

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);	//显示二进制数字

具体代码如下:

  OLED_Init();//显示屏初始化

  while (1)

  {

     OLED_ShowChar(1, 1, 'A');//显示字符

     OLED_ShowString(1, 3, "HelloWorld!");//显示字符串

     OLED_ShowNum(2, 1, 12345, 5);//显示数字(最后一个参数为数字长度)

     OLED_ShowSignedNum(2, 7, -168, 3);//显示有符号的数字

     OLED_ShowHexNum(3, 1, 0xAA55, 4);//显示一个十六进制的数

     OLED_ShowBinNum(4, 1, 0xAA55, 16);//显示二进制的数

  }

2.3 效果

代码呈现的效果如下:

注:本文是我学生的STM32学习笔记,图文部分引用了江科大的STM32教程的课件。

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

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

相关文章

高效使用WMS仓储管理系统,需要关注这八个点

在现代供应链中,WMS仓储管理系统扮演着至关重要的角色。然而,随着供应链需求的不断增长和变化,实施WMS仓储管理系统面临着越来越多的挑战和要求。本文将探讨使用WMS仓储管理系统需要考虑的8大因素,以适应现代供应链的需求。 一、W…

我们把“高血压”小游戏真正做到了不用下载,点击即玩!!!

相信大家经常在短视频网站上刷到各种“高血压“小游戏吧,当你按捺不住点击,却发现手机上多了一大堆“流氓软件”的时候,血压就更高了。 但是! 今天! 我们把“虚假广告”做成了真实的游戏,并且可以轻松部署到…

在Linux服务器部署多台nginx

升级版2.0关于如何在linux服务器上布置多台nginx,之前吃了点苦头,特写文章避免重蹈覆辙。 文章目录 前言一、下载环境依赖二、安装nginx1.创建放置nginx的文件2.上传解压压缩包3.安装nginx(关键步) 三、启动nginx四、验证nginx是否…

R语言之数值型描述分析

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。 在分析之前,先将数据集 birthwt 中的分类变量 low、race、smoke、ht 和 ui 转换成因子。 library(MASS) data(birthwt)…

固定资产管理分析怎么写?

对企业内的固定资产进行全面的统计和分析,包括设备、装修、维修等方面的信息,有助于企业进行资产管理和风险控制。  通过该软件,用户可以实现对资产的跟踪和管理,如实时监测设备的使用情况,提高设备利用率和维护效率…

python基础教程:深浅copy的详细用法

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 1.先看赋值运算 l1 [1,2,3,[barry,alex]] l2 l1l1[0] 111 print(l1) # [111, 2, 3, [barry, alex]] print(l2) # [111, 2, 3, [barry, alex]]l1[3][0] wusir print(l1) # [111, 2, 3, [wusir, alex]] print(l2)…

嵌入式linux轻量级sshd服务Dropbear交叉编译

下载 zlib-1.2.11.tar.gz dropbear-2020.81.tar.bz2 解压 $tar -zxvf zlib-1.2.11.tar.gz $tar -jxvf dropbear-2020.81.tar.bz2 zlib交叉编译配置 CC/usr/local/arm/network/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc ./configure --prefix$PWD/install dro…

目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)

dirsearch_bypass403 在安全测试时,安全测试人员信息收集中时可使用它进行目录枚举,目录进行指纹识别,枚举出来的403状态目录可尝试进行绕过,绕过403有可能获取管理员权限。不影响dirsearch原本功能使用 运行流程 dirsearch进行…

LLM强势挺进端侧,AI大语言模型端侧部署如何影响超自动化?

▲ 图片由AI生成 算力资源吃紧,成本居高不下,数据隐私泄露,用户体验不佳…… 以OpenAI为代表的大语言模型爆发后,多重因素影响之下本地化部署成为LLM落地的主流模式。LLM迫切需要部署在本地设备上,围绕LLM端侧部署的…

财报解读:首次全口径盈利,快手深耕电商找准了发展门道?

快手成功闯过了盈利大关。 近日快手发布的Q2财报显示,其借助于电商“内循环”取得超预期成效,不仅用户数相比一季度环比净增1900万,再创新高,而且迎来了成立以来首次单季度全口径盈利。 对于快手盈利能力的大幅提升,…

ASCII码 对照表

总256个字符元素 0~255 码值整数据 字符结构 字符元素(内容) 整数结构 码值整数

【前端】Layui动态数据表格拖动排序

目录 一、下载layui-soul-table 二、使用 三、Layui实际使用 1、html代码 2、JS代码 3、PHP后台代码 目的:使用Layui的数据表格,拖动行进行排序。 使用插件:layui-soul-table 和 Layui 1.layui-soul-table文档:https://…

ZKP硬件加速

1. 引言 本文重点关注: 1)何为硬件加速?为何需要硬件加速?2)ZKP的关键计算原语: Multiscalar MultiplicationNumber Theoretic TransformationArithmetic Hashes 3)所需的硬件资源4&#xff0…

vue3学习源码笔记(小白入门系列)------ 组件更新流程

目录 说明例子processComponentcomponentUpdateFnupdateComponentupdateComponentPreRender 总结 说明 由于响应式相关内容太多,决定先接着上文组件挂载后,继续分析组件后续更新流程,先不分析组件是如何分析的。 例子 将这个 用例 使用 vi…

MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布

一、MQTT介绍 1.1 什么是MQTT? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于…

WhatsApp 时事通讯,又一个强大的营销功能

有兴趣通过时事通讯有效地接触您的受众吗?如果您的客户正在使用WhatsApp,使用WhatsApp商业通讯是理想的解决方案。在这篇文章中,我们将探讨使用 WhatsApp时事通讯进行客户沟通的优势。 什么是WhatsApp时事通讯? WhatsApp时事通讯…

vuex使用Cannot find module ‘./api/index.js‘

使用vuex中出现这个问题。我的vuex的配置。 import Vue from vue import Vuex from vuex import App from ./App.vue import store from "./store"; import router from ./router; import "/assets/css/base.css"; import VueRouter from vue-router; impo…

【LeetCode75】第四十二题 删除二叉搜索数中的节点

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一棵二叉搜索树,给我们一个目标值,让我们删除节点值等于目标值的节点,并且删除之后需要保持…

【原创】H3C路由器OSPF测试

网络拓扑图 路由器配置: 路由器1上接了4跟线,分别为这四个接口配置IP地址。 # interface GigabitEthernet0/0/0port link-mode routecombo enable copperip address 2.1.1.2 255.255.255.0 # interface GigabitEthernet0/0/1port link-mode routecombo…

独立站怎么做活动策划,独立站推广方式有哪些

独立站可以获得更多的用户关注和认可,进而实现业务增长和发展,因此活动策划至关重要,那么独立站怎么做活动策划,独立站推广方式有哪些? 独立站怎么做活动策划? 1、明确目标:在开始策划之前&am…