Bootstrap

OLED 工作原理 傻瓜教程 基于正点原子STM32 nano开发板

汉字取模教程链接https://blog.csdn.net/weixin_52177631/article/details/146009617?spm=1001.2014.3001.5502

图片取模教程链接https://blog.csdn.net/weixin_52177631/article/details/146010156?sharetype=blogdetail&sharerId=146010156&sharerefer=PC&sharesource=weixin_52177631&spm=1011.2480.3001.8118

一、工作原理:

        OLED,即有机发光二极管( Organic Light Emitting Diode)小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块。OLED是由美籍华裔教授邓青云(Ching W. Tang)于1979年在实验室中发现, 有机半导体材料和发光材料在电场驱动下,通过载流子注入和复合导致发光的现象。OLED器件主要由基板、阳极、空穴注入层、空穴传输层、电子阻挡层、发光层、空穴阻挡层、电子传输层、电子注入层、阴极等结构组成。

图1  OLED的多层结构

        OLED面板主要分三大类型:小尺寸用屏,TV用屏、工业级用屏,随着技术的革新逐步往大尺寸发展。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异特性。屏幕可以独立控制每一个像素点的亮灭,所以在黑暗场景中会关闭掉黑色像素点,使其不散发任何亮度,从而达到真正的纯黑,配合上比较高的最高亮度,可使屏幕具有超高的对比度。

         OLED显示模块可选择多种接口方式:6800或8080 并行接口方式、 SPI 接口方式、 IIC 接口方式,下面是0.96寸IIC接口的OLED屏模块。                                               

O

OLED实物图

        IIC(Inter-Integrated Circuit),通常也写成 I²C,即集成电路总线,是一种串行通信协议,由飞利浦公司开发,广泛应用于微控制器与各种外围设备之间的通信,为半双工通信协议,数据在主从设备之间单向传输,必须交替进行。IIC 总线由两条线组成,即串行数据线(SDA)和串行时钟线(SCL)。所有连接到 IIC 总线上的设备都连接到这两条线上,通过这两条线进行数据传输和时钟同步。允许多个主设备和多个从设备通过同一条总线进行通信,支持多点连接。数据线只需两根,就可以支持多个设备在同一总线上通信,节省了引脚。目前大部分 MCU 都带有 IIC 总线接口,STM32F1 也不例外。      

 IIC串行通讯示意图      

二、参数与配置

        OLED通过 IIC 总线与单片机GPIO引脚相连 来实现数据读取。 目前大部分 MCU 都带有 IIC 总线接口,STM32F1 也不例外。但是这里没使用STM32F1 的硬件 IIC ,而是通过软件模拟IIC的时序。ST 为了规避飞利浦 IIC 专利问题,将STM32 的硬件 IIC 设计的比较复杂,而且稳定性不怎么好,有兴趣的同学可以研究一下 STM32F1 的硬件 IIC。用软件模拟 IIC,最大的好处就是方便移植,同一个代码兼容所有 MCU,任何一个单片机只要有 IO 口,就可以很快的移植过去,而且不需要特定的 IO 口。而硬件 IIC,则换一款 MCU,基本上就得重新搞一次,移植是比较麻烦的。

表1  OLED模块电气参数表

三、单片机软件设计及接线

1. IIC通讯和OLED驱动

项目选用的是0.96寸OLED模块是IIC通讯接口的,这里我们使用了正点原子的软件模拟IIC。软件模拟IIC使用最大的好处就是方便移植。

    

 IIC总线时序图

        关与IIC总线时序和配置方法等,如开始信号、结束信号、应答信号等,有兴趣同学可以从正点原子开发指南或网上自已学习。

        OLED屏幕的驱动IC是 SSD1306,所以,对屏幕的初始化就是对SSD1306的初始化,整个过程代码较多,但结构比较简单,主要是SSD1306初始化序列,程序流程图如图4所示,这部分我们直接用厂家推荐的初始化代码,不需要变动。SSD1306 的显存总共为 128*64bit 大小,SSD1306 将这些显存分为了 8 页,为提高每次为模块刷新屏幕时的效率,在单片机的内部建立一个 OLED 的 GRAM(需要 128*8 个字节),在每次修改的时候,只是修改单片机上的 GRAM(实际上就是 SRAM),在修改完了之后,一次性把单片机内部的 GRAM 写入到 OLED 的 GRAM(示例代码中由OLED_Refresh_Gram( )函数完成),这个方法对于那些 SRAM 很小的单片机(比如 51 系列)就不太适合了。

图4  SSD1306的初始化序列流程图

        我们想要在 OLED 上显示的图像、文字等信息,需要将字符或图像数据转换为适合OLED显示屏显示的格式,在计算机中通常是以各种高级语言的字符或图像数据结构等形式存在的,而 OLED 显示屏只能识别和处理特定格式的二进制数据来控制每个像素的亮灭状态。取模就是将这些高级形式的数据转换为 OLED 能够理解和处理的二进制数据格式的过程。

图4  显示屏像素示意图

        OLED 显示屏由大量的像素点组成,如图所示,每个小格代表一个像素点,项目选用的0.96寸的屏幕像素点为128*64,也就是横坐标方向将有128个像素点,纵坐标方向有64个像素点。比如,我们要显示一个字母 “a”,需要把这个字符转换为对应的像素点亮灭组合的二进制数据,蓝色点表示该像素点亮,黑色点表示该像素点灭。这些像素点的排列和控制方式是固定的。取模可以根据 OLED 的像素排列规则和驱动方式,把不同字体的数字、英文、中文和简单的图片进行重新组织和编码,使其与 OLED 的硬件特性相匹配。不同的 OLED 显示屏可能有不同的像素排列方式和数据传输要求,通过取模可以针对具体的 OLED 型号进行定制化的数据处理,确保数据能够正确地驱动显示屏上的像素点,显示出正确的图像或文字。

        OLED硬件初始化成功后,在显示新内容之前,通常需要调用清屏函数来先清除屏幕上的原有内容,以避免残留数据影响显示效果。显示内容在要包含在 OLED 屏幕上的位置信息,如设置字符或图形的起始行、列坐标等,从相应函数的参数上也包含了这些信息。

2. STM32单片机的模块设置

        在示例代码中,IIC引脚的初始化由myiic.c文件中的IIC_Init( )函数配置,与通讯有关的时序,如开始信号、结束信号、应答信号等也在myiic.c文件定义。OLED屏幕驱动SSD1306的初始化由oled.c文件中的OLED_Init( )函数配置。

        在OLED屏上各种显示内容可以通过oled.h头文件快速查看,如画线,画圆,显示数字、字母、中文……等。这些函数的定义在oled.c文件中。

图  oled.h中的函数名和注释

        每个函数定义前都有文字注释参数的用法,也可以通过主程序中相关指令的注释了解如何使用。

图  oled.c中函数参数的说明

        屏幕像素点的更新,需要使用OLED_Refresh_Gram( )专用函数,才能在屏幕上刷新显示出来。

        示例代码包括该模块的初始化和基础功能运用,需根据自己设定的目标加入工程中,自行修改接线引线,配合其它硬件完成整体设计。

本示例代码使用了正点原子STM32F103  NANO开发板,模块的接线方式:VCC接3.3V电源 ,GND为地线 ,SCL接开发板PA6,SDA接开发板PA7。

示例功能:

1. 开机屏幕显示24*24像素字体的“温度测量,保持2秒。

2. 屏幕左侧显示测温图标。右侧显示用开发板电位器模拟温度的转换数值,字体为16*16像素、。

3. 当测量值超过4000时,左侧换成高温报警图标,低于4000时换回显示测温图标。

四、注意事项

  1. 根据 OLED 模块的通信接口类型(如 SPI、I2C 等),正确设置微控制器或其他控制设备的通信参数,包括时钟频率、数据位顺序、片选信号等。参数设置错误可能会导致数据传输错误,使 OLED 显示出现乱码或无法显示预期内容。
  2. 使用时要了解 OLED 的分辨率,合理规划显示内容的布局。若显示内容超出了 OLED 的分辨率范围,部分内容将无法正常显示,这里所使用128x64 分辨率的 OLED 最多只能显示相应数量的像素信息。
  3. 文字和图片的取模工具和步骤,参考示例代码文件夹“OLED”中的“取模教程”。
  4. 长时间显示相同画面可能会导致 OLED 出现残影现象,即画面的某些部分在切换显示内容后仍有残留。若需要长时间显示信息,可定期刷新显示内容或采用动态显示方式。
  5. 除了模块接线时不能带电,否则有可能损坏模块和开发析。
  6. 不同的硬件对电源电压有特定要求,常见的有 5V 和 3.3V 等。要确保所提供的电源电压与单片机的工作电压一致,否则可能导致单片机无法正常工作甚至损坏。
  7. 在连接电源时,要严格区分正负极,避免接反。接反电源可能会对单片机及其他电子元件造成不可逆的损坏。

HAL库代码下载链接https://download.csdn.net/download/weixin_52177631/90451966

标准库下载链接https://download.csdn.net/download/weixin_52177631/90451937


;