【嵌入式软件-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的字库数据

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

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

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

相关文章

【知识科普】微内核架构与宏内核架构

微内核与宏内核 微内核一、微内核的定义二、微内核的特点三、微内核的优缺点四、微内核的应用场景操作系统 宏内核一、宏内核的定义二、宏内核的特点三、宏内核的优缺点四、宏内核的应用场景 微内核架构与宏内核架构简单比较微内核的优势宏内核的优势面向未来的架构 微内核 微…

Liebherr利勃海尔 EDI 需求分析

Liebherr 使用 EDI 技术来提高业务流程的效率、降低错误率、加快数据交换速度,并优化与供应商、客户和其他合作伙伴之间的业务沟通。通过 EDI,Liebherr 实现了与全球交易伙伴的自动化数据交换,提升了供应链管理和订单处理的透明度。 Liebher…

求字符 ‘a‘ 和 ‘b‘ 组成的,最大长度为n的字符串中字典序第 k 个字符串

求字符 ‘a’ 和 ‘b’ 组成的,最大长度为n的字符串中字典序第 k 个字符串 先来解释一下这个题目,假设最大长度为3,那么由字符a和b组成的字符串有: a, b, ab, aaa, aba...把这些字符串按照字典序排序: aaaaaaaabababaabbbbabaab…

再见 阿里巴巴EasyExcel替代品EasyExcel-Plus即将诞生

最近阿里发布公告通知,停止对EasyExcel 更新和维护,EasyExcel 是一款知名的 Java Excel 工具库,由阿里巴巴开源,作者是玉霄,在 GitHub 上有 30k stars、7.5k forks。 据了解,EasyExcel作者玉霄)去年已经从…

android应用调用c语言的so库

android应用调用c语言的so库,可以将c代码放在android工程里直接ndk编译,或者外部一个so库,ndk编一个调用so的桥接库。普通的c函数java代码不能直接调用,桥接的虚函数不可少,所以此处仅记录一下桥接函数。有的固定路径的…

如何保证MySQL与Redis缓存的数据一致性?

文章目录 一、引言二、场景来源三、高并发解决方案1. 先更新缓存,再更新数据库2. 先更新数据库,再更新缓存3. 先删除缓存,再更新数据库4. 先更新数据库,再删除缓存小结 四、拓展方案1. 分布式锁与分布式事务2. 消息队列3. 监听bin…

opencv调整图片对比度和亮度

在OpenCV中,为了改变图像的对比度和亮度,我们可以使用 cv2.convertScaleAbs() 方法。我们使用的方法的语法如下 cv2.convertScaleAbs(image,alpha,beta)其中image 是原始的输入图像。 # image cv2.imread(egg.jpg)alpha 是对比度值。为了降低对比度&am…

暴露IP地址会影响网络隐私安全吗?

​我的IP地址暴露后会影响隐私安全吗? 互联网飞速发展以来,短短数十年,我们的工作生活就不能够离开互联网。那么作为网络连接传递数据的门户——IP地址,大家都有一定的疑惑和好奇。其中关于自身安全的尤为重要,所以IP…

SQL面试题——蚂蚁SQL面试题 连续3天减少碳排放量不低于100的用户

连续3天减少碳排放量不低于100的用户 这是一道来自蚂蚁的面试题目,要求我们找出连续3天减少碳排放量低于100的用户,之前我们分析过两道关于连续的问题了 SQL面试题——最大连续登陆问题 SQL面试题——球员连续四次得分 这两个问题都是跟连续有关的,但是球员连续得分的难…

机器学习、深度学习面试知识点汇总

下面是本人在面试中整理的资料和文字,主要针对面试八股做浅显的总结,大部分来源于ChatGPT,中间有借鉴一些博主的优质文章,已经在各文中指出原文。有任何问题,欢迎随时不吝指正。 文章系列图像使用动漫 《星游记》插图…

深度学习--正则化

笔记内容侵权联系删 过拟合问题 过拟合问题描述:模型在训练集表现优异,但在测试集上表现较差。 根本原因:特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多导致拟合出的函数几乎完美的对训练集做出预…

Jtti:服务器总是自动重启怎么办?

服务器总是自动重启可能是由于多种原因引起的,包括硬件故障、软件问题、配置错误或环境因素。以下是一些常见原因和相应的解决方案: 1. 硬件问题 电源故障:电源供应不稳定或电源模块故障可能导致服务器重启。 解决方案:检查电源供…

AXI接口的实现逻辑和底层原理,在FPGA中如何实现AXI接口,一篇文章足以搞明白!!!

AXI(Advanced eXtensible Interface)接口是一个点对点的接口,用于连接高性能的片上系统(SoC)中的处理器、外围设备、内存和其他IP核。以下是对AXI接口的详细解析,包括FPGA实现的原理、逻辑、速度以及详细的…

通过 SSH 隧道将本地端口转发到远程主机

由于服务器防火墙,只开放了22端口,想要通过5901访问服务器上的远程桌面,可以通过下面的方式进行隧道转发。 一、示例命令 这条代码的作用是通过 SSH 创建一个 本地端口转发,将你本地的端口(5901)通过加密的 SSH 隧道连接到远程服务器上的端口(5901)。这种方式通常用于在…

【Nginx】 bind() to 0.0.0.0:88 failed (13: Permission denied) 解决方法

问题描述 我在Nginx上添加一个端口号为88的虚拟主机, 重新启动Nginx报错: bind() to 0.0.0.0:88 failed (13: Permission denied) 解决方法 查阅资料,发现这类bind无权限问题,大多由SElinux引起。SELinux有三种模式&#xff0c…

C# Winform--SerialPort串口通讯(ASCII码发送)

1.代码部分 private SerialPort serialPort new SerialPort();private void button1_Click(object sender, EventArgs e){serialPort.BaudRate 9600;serialPort.Parity Parity.None;serialPort.StopBits StopBits.One;serialPort.DataBits 8;serialPort.PortName "C…

【学习】【HTML】块级元素,行内元素,行内块级元素

块级元素 块级元素是 HTML 中一类重要的元素&#xff0c;它们在页面布局中占据整行空间&#xff0c;通常用于创建页面的主要结构组件。 常见的块级元素有哪些&#xff1f; <div>: 通用的容器元素&#xff0c;常用于创建布局块。<p>&#xff1a;段落元素&#xf…

CTF攻防世界小白刷题自学笔记14

fileclude&#xff0c;难度&#xff1a;1&#xff0c;方向&#xff1a;Web 题目来源:CTF 题目描述:好多file呀&#xff01; 给一下题目链接&#xff1a;攻防世界Web方向新手模式第17题。 打开一看&#xff0c;这熟悉的味道&#xff0c;跟上一篇文章基本一摸一样的&#xff…

微信小程序开发,仿小红书瀑布流实现

文章目录 1. 涉及到的知识点2. 功能描述3. 通用属性3. 代码实现过程4. 报错问题&#xff0c;解决方法5. 运行效果图 1. 涉及到的知识点 grid-view的使用官方文档指南&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/component/grid-view.html 2. 功能描述 Sk…

python习题练习

python习题 编写一个简单的工资管理程序系统可以管理以下四类人:工人(worker)、销售员(salesman)、经理(manager)、销售经理(salemanger)所有的员工都具有员工号&#xff0c;工资等属性&#xff0c;有设置姓名&#xff0c;获取姓名&#xff0c;获取员工号&#xff0c;计算工资等…