案例代码及相关资料下载链接:
链接: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教程的课件。