【OLED驱动】:stm32F103的四线模拟IIC驱动的0.96寸OLED屏幕显示数字,字母,汉字,图片的例程 您所在的位置:网站首页 oled显示屏scl和sda引脚工作原理 【OLED驱动】:stm32F103的四线模拟IIC驱动的0.96寸OLED屏幕显示数字,字母,汉字,图片的例程

【OLED驱动】:stm32F103的四线模拟IIC驱动的0.96寸OLED屏幕显示数字,字母,汉字,图片的例程

2024-05-31 11:28| 来源: 网络整理| 查看: 265

文章目录

前言

一、四线OLED是什么?

二、IIC原理

1.四线0.96寸OLED是IIC驱动来实现显示

2.IIC协议的OLED屏幕

3.STM32驱动代码

4.IIC使用代码

总结

前言

        最近在做一个开源方案 — 平衡车,即将开源硬件和软件,会在CSDN上开源,今天这篇文章主要是为了描述一下板子上所带的OLED模块,使用的是模拟IIC的驱动方式,此类驱动方式简单,且有效,并且适用于U8g2库。

        OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

        OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,并且能够节省电能。

一、四线OLED是什么?

       

引脚说明:

                GND    共地引脚                  VCC    供电电源引脚,一般选用3.3V直流电源                 SCL    iic 总线中的时钟线                 SDA    iic 总线中的数据线

二、IIC原理 1.四线0.96寸OLED是IIC驱动来实现显示

        iic总线协议:

        IIC(Inter-Integrated Circuit)协议,也被称为I2C(Inter-IC)协议,是一种用于在集成电路(IC)之间进行通信的串行通信协议。它是由飞利浦半导体(现在的恩智浦半导体)于1982年开发的,旨在简化多个芯片之间的通信。

IIC协议使用两根线进行通信:时钟线(SCL)和数据线(SDA)。这种双线制的通信方式使得IIC协议非常适合连接多个设备,因为每个设备都可以通过相同的线路连接到总线上。

在IIC协议中,通信由主设备(通常是一个微控制器或处理器)和从设备之间进行。主设备负责控制总线上的通信,而从设备则被动地响应主设备的命令或请求。

IIC协议的通信过程如下:

主设备发送起始信号(Start):主设备将时钟线保持高电平,然后在数据线上产生一个下降沿,表示起始信号的开始。主设备发送器件地址和读/写位:主设备发送要通信的从设备的地址,并指定读取(1)或写入(0)操作。从设备响应:与地址匹配的从设备响应主设备,并确认接收到地址。数据传输:主设备和从设备之间进行数据传输,每个数据字节都会在数据线上进行传输,并在时钟的边沿进行采样。停止信号(Stop):主设备发送停止信号,即时钟线保持高电平的同时,在数据线上产生一个上升沿。

IIC协议具有以下特点:

简单:仅使用两根线进行通信。多设备支持:多个设备可以通过相同的总线连接。速度灵活:可以根据需要选择不同的时钟频率。双向通信:主设备可以向从设备发送命令,并从从设备读取数据。

IIC协议广泛应用于各种领域,例如传感器、存储器、显示屏和其他集成电路之间的通信。它被广泛采用是因为它的简单性和灵活性,使得设备之间的通信变得更加方便和可靠。

如下图所示,协议规定,当SCLK时钟信号一直处于高电平状态时,SDA线由高电平跳变到低电平这个动作,表示起始信号。注意此时就算SDA数据线的电平跳变完,SCLK线依然是高电平哦。当连接在IIC总线上的外设模块检测到这个信号时,就知道数据要开始传输了。对于结束信号同理,协议规定,当SCLK时钟信号一直处于高电平状态时,SDA线由低电平跳变到高电平这个动作,表示结束信号。

2.IIC协议的OLED屏幕

我使用的主MCU是  STM32F103RCT6 如下图:

即定义引脚:

IIC协议(SSD1306)的OLED工作原理:

ssd1306本身支持多种总线驱动方式包括SPI以及并口等,通过芯片的相应IO口拉低拉高来选择哪一种接口,本例中模块通过电阻将相应IO口配置固化使用了I2C接口方式,但可能你买到的同样的驱动芯片的模块会采用其他接口使用I2C接口时,SSD1306允许有最多两个7位的I2C地址,同样通过相应的IO口拉低拉高来切换,一般默认是0x3c,在屏幕模块的背面,可以看到一个I2C地址切换提示,需要改变模块I2C地址时,只需要把提示位置的电阻取下焊接到另外一端即可。要注意的是板上的I2C地址是加上了第零位读写位后的数值,即0x78 = 0x3c 4)); //设置X位置低4位 OLED_WriteCommand(0x00 | (X & 0x0F)); //设置X位置高4位 } /** * @brief OLED清屏 * @param 无 * @retval 无 */ void OLED_Clear(void) { u8 i,n; for(i=0;i4)|0x10,OLED_CMD); OLED_WR_Byte((x&0x0f),OLED_CMD); } //显示汉字 void OLED_ShowCHinese(u8 x,u8 y,u8 no) { u8 t,adder=0; OLED_Set_Pos(x,y); for(t=0;t


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有