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

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

相关推荐
日更嵌入式的打工仔7 分钟前
PHY的自适应协商简析
网络·嵌入式硬件·自适应·phy
练习时长两年半的Java练习生(升级中)11 分钟前
从0开始学习Java+AI知识点总结-30.前端web开发(JS+Vue+Ajax)
前端·javascript·vue.js·学习·web
Rhys..1 小时前
python + Flask模块学习 1 基础用法
python·学习·前端框架·flask
lingggggaaaa1 小时前
小迪安全v2023学习笔记(七十八讲)—— 数据库安全&Redis&CouchDB&H2database&未授权&CVE
redis·笔记·学习·算法·安全·网络安全·couchdb
CC呢1 小时前
基于单片机坐姿提醒系统/久坐提醒设计
stm32·单片机·嵌入式硬件·单片机设计·久坐提醒
曙曙学编程2 小时前
stm32——寄存器操作,蜂鸣器原理
c语言·c++·stm32·单片机·嵌入式硬件
安庆平.Я2 小时前
STM32——串口
stm32·单片机·嵌入式硬件
Jayyih2 小时前
嵌入式系统学习Day29(tcp)
网络·学习·tcp/ip
lingzhilab2 小时前
零知开源——基于STM32F103RBT6的智能风扇控制系统设计与实现
stm32·单片机·嵌入式硬件
g_i_a_o_giao3 小时前
Android8 binder源码学习分析笔记(一)
android·java·笔记·学习·binder·安卓源码分析