1.5inch IIC OLED Module 用户手册 1 / 12
OLED 简介 OLED 即有机发光二级管 (Organic Light-Emitting Diode, OLED) OLED 显示技术具有自发光 广视角 几乎无穷高的对比度 较低耗电 极高反应速度 可用于挠曲性面板 使用温度范围广 构造及制程较简单等优点, 被认为是下一代的平面显示器新兴应用技术 OLED 显示和传统的 LCD 显示不同, 其可以自发光, 所以不需要背光灯, 这使得 OLED 显示屏相对于 LCD 显示屏尺寸更薄, 同时显示效果更优 产品特点 超大可视角度 : 大于 160 ( 显示屏中可视角度最大的一种屏幕 ) 超低功耗 : 正常显示 0.06w( 远低于 TFT 显示屏 ) 宽电压供电 (3V~5V), 兼容 3.3V 和 5V 电平逻辑, 无需电平转换芯片 IIC 接口只需 2 个 IO 轻松点亮 工作温度范围为工业级 (-20 ~70 ) 军工级工艺标准, 长期稳定工作 提供丰富的多平台例程, 提供底层驱动技术支持 支持 16 位灰度显示 产品参数 名称显示颜色 SKU 尺寸类型 OLED 驱动芯片分辨率模块接口有效显示区域模块尺寸 描述白色 MSP1503 1.5(inch) OLED SSD1327 128*128 (Pixel) IIC,1-GND,2-VCC,3-SCL,4-SDA 26.86x26.86(mm) 45.50x34.30(mm) 2 / 12
视角 >160 工作温度 -20 ~70 存储温度 -30 ~80 工作电压 3.3V / 5V 功耗全亮约为 25mA, 全灭约为 1.5mA 产品重量 15(g) 接口说明 标号 PIN 引脚说明 1 GND OLED 电源地 2 VCC OLED 电源正 (3.3V~5V) 3 SCL OLED IIC 总线时钟信号 4 SDA OLED IIC 总线数据信号 硬件配置 该 OLED 模块使用 IIC 接口, 模块背面有个可以选择焊接的电阻, 通过电阻焊接选择来 选择不同 IIC 从设备地址, 如下图所示 : 如红圈内所示, 如果电阻焊接在 0x78 上, 则表示 IIC 的从设备地址为 0x78, 如果焊接 在 0x7A 上, 则表示 IIC 的从设备地址为 0x7A 3 / 12
工作原理 1 SSD1327 控制器简介该 OLED 的控制 IC 为 SSD1327 SSD1327 控制器支持的最大分辨率为 128*128, 同时支持 8bit 8080 并行 8bit 6800 并行 三线 SPI 四线 SPI 以及 IIC 控制, 由于并行控制会浪费 IO 口, 三线 SPI 不常用, 因此四线 SPI 以及 IIC 控制用的最广泛, 此 OLED 模块就是使用 IIC 控制 SSD1327 控制器使用 4bit 来控制一个像素点显示, 因此可以每个像素点亮度可以显示 16 个等级, 这样控制器就可以支持 16 位灰度显示 每个 Byte 水平方式控制两个像素点, 因此每设置一个水平坐标, 控制两个像素点 2 IIC 通信协议简介 IIC 总线写模式数据格式如下图所示 : 详情见 SSD1327 datasheet 第 23 页首先发送一个 7 个字节的从设备地址 + 一个字节的读写位, 然后等待从设备的响应, 这个与大部分的 I2C 通信是类似的, 改 7 位地址可以通过 DC 管脚来控制 ; 然后再发送一个数据位 + 一个命令数据位 +6 个控制自己字节, 实际上有用的就是命令数据为, 该位设置为 0 就是写命令, 设置为 1 就是写数据 ; 然后再发送 8 位的数据 这样一次控制传输就算完成了 4 / 12
使用说明 1 Arduino 使用说明 接线说明 : OLED 模块引脚 对应 UNO 单片机接线引脚 对应 Mega2560 单片机接线引脚 VCC 5V/3.3V 5V/3.3V GND GND GND SCL A5 21 SDA A4 20 操作步骤 : A 按照上述接线说明, 将 OLED 模块和单片机连接起来, 然后上电 ; B 打开 1-Demo\Demo_Arduino\OLED_Demo_UNO&Mega2560_IIC\Examples 目录, 选择想 要测试的示例, 如下图所示 : C 使用 Arduino IDE 软件对示例进行编译和下载 (Arduino IDE 软件具体使用方法见 Arduino_IDE_Use_Illustration_CN.pdf); D 下载成功后,OLED 模块如果正常显示字符和图形, 则说明程序运行成功 ; 2 RaspberryPI 使用说明接线说明 : 使用的 GPIO 库 : bcm2835 Raspberry Pi GPIO map 如下 : 5 / 12
OLED 模块引脚 VCC GND SCL SDA 对应 Raspberry Pi 接线引脚 5V/3.3V GND 5( 物理引脚编码 )(BCM:3,SCL.1) 3( 物理引脚编码 )(BCM:2,SDA.1) 操作步骤 : A 按照上述接线说明将 OLED 模块和 Raspberry Pi 开发板连接起来, 接好网线后上电 ; B 打开 1-Demo\Demo_RaspberryPI 目录, 将整个 OLED_Demo_BCM2835_IIC 目录拷贝到 Raspberry Pi 开发板系统里, 如下图所示 : 6 / 12
C 在 Raspberry Pi 开发板系统里进行示例编译并运行 ( 具体 Raspberry Pi 开发板操作步骤见 Raspberrypi_Use_Illustration_CN.pdf); D OLED 模块如果正常显示字符和图形, 则说明程序运行成功 ; 3 C51 使用说明接线说明 : OLED 模块引脚 VCC GND SCL 对应 Raspberry Pi 接线引脚 5V/3.3V GND P23 操作步骤 : SDA P24 A 按照上述接线说明将 OLED 模块和 C51 单片机连接起来, 并上电 ; B 打开 1-Demo\Demo_C51 目录, 根据单片机型号选择测试示例, 如下图所示 : C 打开所选的示例工程, 进行编译和下载 ( C51keil 具体操作方法见 C51_Keil&stc-isp_Use_Illustration_CN.pdf); D OLED 模块如果正常显示字符和图形, 则说明程序运行成功 ; 4 STM32 使用说明接线说明 : 7 / 12
OLED 模块引脚 VCC GND SCL 对应 Raspberry Pi 接线引脚 5V/3.3V GND PB13 操作说明 : SDA PB14 A 按照上述接线说明将 OLED 模块和 STM32 单片机连接起来, 并上电 ; B 打开 1-Demo\Demo_STM32 目录, 根据单片机型号选择测试示例, 如下图所示 : C 打开所选的示例工程, 进行编译和下载 ( STM32keil 具体操作方法见 STM32_Keil_Use_Illustration_CN.pdf); D OLED 模块如果正常显示字符和图形, 则说明程序运行成功 ; 软件说明 1 代码架构 A Arduino 测试示例需要依赖 U8glib 库, 底层部分都是 U8glib 实现 ; B C51 STM32 以及 Raspberry Pi 测试示例代码架构如下 : 示例代码 IIC 代码 GUI 代码 OLED 代码主函数平台代码 i2c.c i2c.h GUI.c GUI.h OLED.c OLED.h main.c 相关平台代码 IIC 初始化以及相关的操作都包含在 IIC 代码中 ; 8 / 12
OLED 初始化以及相关的操作都包含在 OLED 代码中 ; 画点 线 图形以及中英文字符显示相关的操作都包含在 GUI 代码中 ; 主函数实现应用程序运行 ; 平台代码因平台而异 ; 2 IIC 从设备地址修改 A Arduino 需要在 U8glib 库里面修改 IIC 从设备地址, 打开 U8glib\utility\u8g_com_arduino_ssd_i2c.c 文件, 找到如下内容 : I2C_SLA 即为 IIC 从设备地址, 修改此宏定义即可 B C51 和 STM32 在 i2c.h 文件中修改 IIC 从设备地址, 如下图所示 : IIC_SLAVE_ADDR 即为 IIC 从设备地址, 修改此宏定义即可 C Raspberry Pi 在 i2c.c 文件里修改 IIC 从设备地址, 包含在 IIC 初始化函数里面, 如 下图所示 : bcm2835_i2c_setslaveaddress 函数就是设置 IIC 从设备地址, 地址设置后需要乘以 2 3 模拟 IIC 的 GPIO 修改 A Arduino 和 Raspberry Pi 使用硬件 IIC 功能, 所以 IIC 的 GPIO 由系统设置, 不能更改 ; B C51 和 STM32 使用软件 IIC 功能,GPIO 口可以自己设置 在 i2c.h 文件里面修改 IIC 的 GPIO 配置 C51 平台 IIC 的 GPIO 配置如下图所示 : 9 / 12
可以自己修改 OLED_SCL 和 OLED_SDIN 的值 STM32 平台 IIC 的 GPIO 配置如下图所示 : 可以自己修改 OLED_SCLK 和 OLED_SDIN 的值 如果要更改 GPIO 组, 则需要修改 GPIO_TYPE 的值 4 IIC 通信代码实现 A Arduino 的 IIC 通信都是包含在 U8glib 库里面, 具体实现可以去查阅 U8glib 库代码 ; B C51 和 STM32 的 IIC 通信代码在 i2c.c 中实现, 如下图所示 : 由代码可以发现, 如果传输的数据位为 1 时, 就将 IIC 数据信号引脚拉高, 如果传输 的数据位为 0 时, 就将 IIC 数据信号引脚拉低 每一个时钟信号上升沿就发生 1bit 数据, 10 / 12
高位先传输, 一次总共传输 8bit 数据 C Raspberry Pi 的 IIC 通信由 bcm2835 库实现, 函数为 bcm2835_i2c_write; 常用软件 本套测试示例需要显示中英文 符号以及图片, 所以要用到取模软件 取模软件有两种 : Image2Lcd 和 PCtoLCD2002 这里只针对该套测试程序说明一下取模软件的设置 ( 具体使用方法见 PCtoLCD2002_Use_Illustration_CN.pdf Image2Lcd_Use_Illustration_CN.pdf) 1 Arduino 平台取模软件设置 Image2Lcd 软件需要设置为水平 自左向右 自上向下 低位在前扫描方式 PCtoLCD2002 软件需要设置位逐行式 逆向扫描方式 11 / 12
1 C51 STM32 以及 Raspberry Pi 平台取模软件设置 Image2Lcd 软件需要设置为数据水平, 字节垂直 自左向右 自上向下 字节内低位在 前扫描方式 PCtoLCD2002 软件需要设置位列行式 逆向扫描方式 12 / 12