当前位置:   article > 正文

STM32——OLED显示屏(4)_单片机oled显示屏

单片机oled显示屏

目录

一、调试方式

二、OLED简介

三、OLED硬件电路

四、OLED驱动函数

五、OLED显示屏使用

1、硬件接线图

2、添加OLED驱动函数

3、程序

4、实物展示

 六、Keil软件自带调试模式


一、调试方式

        对于单片机的编程而言,经常会遇到一个很大的问题,就是程序调试,单片机不像电脑,电脑有一个很大的屏幕,想看什么变量、参数,直接打印到屏幕就可以了,但是单片机不一样,很多时候由于成本和电路结构的限制,它并不会有一个像电脑屏幕那样强大的显示屏,这就对我们的调试造成了困难,例如,如果学习C语言,但是不允许使用printf这个打印函数,那C语言就根本没法学习了,所以,如果单片机没有任何可以显示参数的东西,那单片机也没办法学习。

三种常用的调试方法

串口调试:

        通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息。
        串口调试的优点是可以借助强大的电脑来调试,电脑端的软件,不仅可以显示单独的参数,而且可以显示曲线、图形、图像等,还可以自己做一个软件,来实现一个强大的用户交互界面。
        串口调试的缺点是调试的时候需要带着电脑,而且通常的串口助手只能以信息流的方式呈现数据,就是只能一行一行的打印,如果有很多不断变化的数据需要显示,那就只能在电脑上刷屏显示,这样用起来就不太方便。

显示屏调试:

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

        显示屏调试的优点是对于不断变化的数据,可以覆盖刷新显示,而且显示屏可以始终接在单片机上,显示方式很直接,如果我们做一个稍微复杂的东西,都会需要有一个人机交互的界面,这样就可以直接把显示屏当作产品的一部分。
        显示屏的缺点就是显示屏幕太小,显示内容有限,没有电脑软件那么强大的功能。

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


二、OLED简介

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

OLED显示屏:性能优异的新型显示屏。具有如下特点:

功耗低:因为OLED每一个像素都是一个单独的发光二极管,不像LCD那样需要有背光,所以OLED屏幕会比较省电。

响应速度快:这个特性可以使OLED有更高的刷新率,总线时序快,也可以避免阻塞我们的程序。

宽视角:因为OLED屏幕上是自发光的,所以在任何角度看,显示内容都是清晰的。

轻薄柔韧:在手机上的折叠屏、柔性屏等,用的就是OLED显示屏。

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

供电:3~5.5V

通信协议:I2C(4针脚),SPI(7针脚)

分辨率:128*64


三、OLED硬件电路

 4针脚OLED硬件电路如上图所示,GND接GND,VCC接3.3V,给OLED供电,剩下的是SCL和SDA是I2C的通信引脚,需要接在单片机I2C通信的引脚上,由于驱动函数模块用的是GPIO口模拟的I2C通信,所以这两个端口就可以接在任意的GPIO口上。

7针脚OLED电路图如上所示, GND接GND,VCC接3.3V,给OLED供电,剩下的引脚是SPI通信协议的引脚,如果是GPIO口模拟的通信协议,那也是接在任意的GPIO口上就行了。


四、OLED驱动函数

OLED实物图

OLED屏幕坐标图 

 驱动函数

OLED_Clear();                                                                             //将OLED清屏

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

一个参数起始行,第二个参数起始列,第三个参数是要显示的字符。

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

一个参数起始行,第二个参数起始列,第三个参数是要显示的字符串。

如果想要OLED清除部分数据,只需要在对应的位置显示空格即可

OLED_ShowNum(2, 1, 12345, 5);                                               //显示无符号十进制数字

一个参数起始行,第二个参数起始列,第三个参数是要显示的数字,第四个参数是数字的长度。

OLED_ShowSignedNum(2, 7, -66, 2);                                         //显示有符号十进制数字

一个参数起始行,第二个参数起始列,第三个参数是要显示的数字和正负号,第四个参数是数字的长度。

OLED_ShowHexNum(3, 1, 0xAA55, 4);                                       //显示16进制数字

一个参数起始行,第二个参数起始列,第三个参数是要显示的数字,第四个参数是数字的长度。

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

一个参数起始行,第二个参数起始列,第三个参数是要显示数字的十六进制,第四个参数是数字的长度。


五、OLED显示屏使用

1、硬件接线图

记得将PB7用跳线接到边上的正极,PB6接边上的负极。 

Stm32的引脚上电后,如果不初始化,默认是浮空输入的模式,在这个模式下,引脚不会输出电平,所以不会有什么影响。

2、添加OLED驱动函数

在江科大给的资料中,程序源码的位置能找到OLED模块的驱动函数,选择4针脚版本的,然后复制到新建工程文件夹4.1  OLED显示屏中的Hardware文件夹中。

然后在Keil软件中,右键Hardware文件夹,选择第三个添加文件至Hardware,然后文件类型选择所有文件类型,Ctrl选中红框内的三个文件,再点击Add添加,即完成在Keil软件中添加OLED驱动函数。

添加完成后,还需要对部分代码进行修改,打开OLED.c文件,找到下面代码,之前的硬件接线图中,我们将OLED的SCL口接到了PB8,SDA口接到了PB9,则后面的引脚选择都得改成GPIOB, GPIO_Pin_8和GPIO_Pin_9,包括后面的OLED初始化函数都得改成对应的引脚。

在OLED.Font.h文件中,存放的是OLDE的字库数据。由于OLED显示屏没有自带字库,因此想要显示图形,还得先定义字符的点阵数据,OLED.c文件的显示函数会用到这些数据。

3、程序

主函数

  1. #include "stm32f10x.h" // Device header
  2. #include "Delay.h"
  3. #include "OLED.h"
  4. int main(void)
  5. {
  6. OLED_Init();
  7. OLED_ShowChar(1, 1, 'A');
  8. OLED_ShowString(1, 3, "HelloWorld!");
  9. OLED_ShowNum(2, 1, 12345, 5);
  10. OLED_ShowSignedNum(2, 7,-66, 2);
  11. OLED_ShowHexNum(3, 1, 0xAA55, 4);
  12. OLED_ShowBinNum(4, 1, 0xAA55, 16);
  13. while(1)
  14. {
  15. }
  16. }

4、实物展示


 六、Keil软件自带调试模式

如上图所示,首先点击工程选项,然后点击Debug这里,可以对调试选项进行配置, 默认是选择右边红色框内这一项,这个是在硬件上在线仿真,需要把STLINK和stm32都连接好,如果不想连接硬件,也可以选择左边黄色框内,选择使用仿真器的这个选项,这样就是电脑模拟stm32的运行了。

我们这里使用硬件在线仿真,在进入调试模式之前,需要连接好stm32。然后点击下图中的放大镜里面带个d的图标,进入调试模式。

 

红色框内,即主窗口就是我们编写的C语言程序,上面黄色框内的窗口,就是C语言翻译成的汇编语言,能够看到每一句C语言实际上执行了哪些操作,左边蓝色框内的窗口是寄存器组和状态标志位等信息,这个是单片机硬件底层很重要的东西,如果用汇编语言,这些东西都是必须要非常清楚的,但是如果用的C语言,那这些东西就不需要管。

 

接下来看工具栏的作用,左起第一个红色框内的是复位,第二个黄色框内的是全速运行,第三个蓝色框内的是停止全速运行 。

 

接下来,左起第一个红色框内的是单步运行,第二个黄色框内的是跳过当前单步运行,第三个蓝色框内的是跳出当前函数单步运行,第四个绿色框内的是调到光标指定行单步运行。

 

 在主窗口中,左边蓝色和黄色两个箭头连在一起的就是下一句将要执行的代码,我们还可以在深灰色区域左键设置断点,然后点击全速运行,程序就会一直运行,直到断点停下,如果没有断点,程序全速运行,就不会停下来,点击停止全速运行按钮,程序才会停下来。

接下来继续看窗口功能,第一个红色框内的是命令窗口,我们点击它可以打开和关闭命令窗口,命令窗口在软件的左下角位置。

第二个黄色框内的是反汇编窗口,也是可以打开和关闭的,即主窗口上面的窗口。

第三个蓝色框内的是符号窗口,打开后会显示在主窗口的右边,在这里我们可以实时查看程序中所有变量的值。

 

继续看工具栏,第一个红色框内的是串口显示,第二个黄色框内的是逻辑分析仪。

 我们还可以点击这个外设菜单栏,选择第一个系统资源查看,这里就能看到所有的外设寄存器了,比如我们选择GPIOA,点击,就会在主窗口的右边显示GPIOA外设的所有寄存器,点击ODR寄存器,这里ODR0就是PA0的输出数据寄存器。 

Stm32实时执行程序,Keil软件实时显示外设寄存器状态,还能随时控制程序的开始、停止、单步运行,所以当我们遇到一个比较难调试的程序时,如果不清楚程序时如何执行的,或者想看一大堆变量却不方便显示的,或者想看一下寄存器是不是配置正确了,都可以考虑使用Keil自带的调试模式。

最后再说明一下,如果想修改程序的话,是不能直接在这个调试模式下修改的,修改程序得先退出调试模式,重新编译,再进入调试模式。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/598755
推荐阅读
相关标签
  

闽ICP备14008679号