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

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

相关推荐
M78佐菲4 小时前
ARM学习笔记(1)
linux·arm开发·笔记·嵌入式硬件·学习
无敌贵点大王6 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
是翎8 小时前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
Linux-lucky8 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
知识分享小能手9 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
崇山峻岭之间9 小时前
HC32F460PETB的PB2的Vout123
单片机
恶魔泡泡糖9 小时前
stm32F103C8T6标准库串口接收之中断方式2
stm32·单片机·嵌入式硬件
充哥单片机设计10 小时前
【STM32开源项目】智能小区充电桩
stm32·单片机·嵌入式硬件·毕业设计·小区充电桩·智能小区充电桩
嵌入式-老费10 小时前
esp32开发与应用(如何解决SoC冷启动的问题)
单片机·嵌入式硬件
充哥单片机设计11 小时前
【STM32开源项目】智能语音台灯
stm32·单片机·嵌入式硬件·毕业设计·单片机设计·智能语音台灯