EEPW论坛

这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Letusdoit活动第二期:智能手环-过程贴OLED屏幕显示

共1条 1/1 1 跳转至
1512113

Letusdoit活动第二期:智能手环-过程贴OLED屏幕显示

高工
2025年10月12日 16:16:57 打赏

在本次活动中,使用OLED屏幕对数据进行显示,这里和大家分享一下,屏幕的驱动经验:

一:OLED屏幕知识简单分享

OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。因为具备轻薄、省电等特性,因此从 2003 年开始,这种显示设备在 MP3 播放器上得到了广泛应用,而对于同属数码类产品的 DC 与手机,此前只是在一些展会上展示过采用 OLED 屏幕的工程样品。自 2007 年后,寿命得 到很大提高,具备了许多 LCD 不可比拟的优势。

GND:电源地 VCC:2.2V~5.5V SCL(D0):CLK 时钟 (高电平 2.2V~5.5V) SDA(D1):MOSI 数据(高电平 2.2V~5.5V) RST:复位(高电平 2.2V~5.5V) D/C:数据/命令(高电平 2.2V~5.5V) 兼容 3.3V 和 5V 控制芯片的 I/O 电平(无需任何设置,直接兼容)。

这是本次活动使用的OLED屏幕,虽然背面标识的时SSD1315,但是和驱动SSD1306的方式大体相同,驱动的时候可以参考SSD1306的驱动方式进行驱动;

3.jpg

二:IIC协议的知识分享:

IIC通讯协议的了解

IIC(Inter-Integrated Circuit)是一种串行通信协议,主控制器和从器件间的主从通信。它使用两根线:SDA(数据线)和SCL(时钟线)。SDA(SerialData Line):用于传输数据。SCL(Serial Clock Line):用于同步数据传输的时钟信号。

注意:1.1C不同于485和CAN可长距离通讯,IIC只能短距离,常用干IC与IC通讯。例如存储芯片:24C02;传感器模块:ST30,气压模块MPL MPU6050,温度模块ATH20等等,有很多的模块,当时我们熟悉了IIC 的通讯方式,可以外扩很多模块,适用于电子爱好者和DIY;

2.IIC电路设计时,建议在SDA和SCL两根线外加上拉电阻,以保证时序通讯的稳定性。不过在本次的活动电路板上面并没有外接上拉电阻,也不知道是不是模块上面焊接好了。

2.1 IIC类型

IIC 总线在传送数据过程中共有三种类型信号,分别是:

1.开始信号:SCL 为高电平时,SDA由高电平向低电平跳变,开始传送数据。

2.结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

3.应答信号:从机 在接收到 8bit 数据后,向发送数据的主机发出特定的低电平脉冲,表示已收到数据。主机向从机发出一个信号后等待从机发出一个应答信号,主机接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

三:软件代码如下所示:

3.1 OLED的初始化部分:

void OLED_Init(void) {
///**************初始化SSD1306*****************/
 	OLED_WR_Byte(0xAE, 0); // 关闭显示
	OLED_WR_Byte(0x20, 0); // 设置内存寻址模式
	OLED_WR_Byte(0x00, 0); // 水平寻址模式
	OLED_WR_Byte(0xB0, 0); // 设置页地址
	OLED_WR_Byte(0xC8, 0); // 设置扫描方向
	OLED_WR_Byte(0x00, 0); // 设置列地址低 4 位
	OLED_WR_Byte(0x10, 0); // 设置列地址高 4 位
	OLED_WR_Byte(0x40, 0); // 设置显示起始行
	OLED_WR_Byte(0x81, 0); // 设置对比度
	OLED_WR_Byte(0xFF, 0); // 最大对比度
	OLED_WR_Byte(0xA1, 0); // 设置段重映射
	OLED_WR_Byte(0xA6, 0); // 设置正常显示
	OLED_WR_Byte(0xA8, 0); // 设置多路复用率
	OLED_WR_Byte(0x3F, 0); // 1/64 多路复用
	OLED_WR_Byte(0xA4, 0); // 恢复整体显示
	OLED_WR_Byte(0xD3, 0); // 设置显示偏移
	OLED_WR_Byte(0x00, 0); // 无偏移
	OLED_WR_Byte(0xD5, 0); // 设置时钟分频比/振荡器频率
	OLED_WR_Byte(0xF0, 0); // 设置分频比
	OLED_WR_Byte(0xD9, 0); // 设置预充电周期
	OLED_WR_Byte(0x22, 0); // 设置预充电周期
	OLED_WR_Byte(0xDA, 0); // 设置 COM 引脚硬件配置
	OLED_WR_Byte(0x12, 0); // 设置 COM 引脚硬件配置
	OLED_WR_Byte(0xDB, 0); // 设置 VCOMH 取消选择级别
	OLED_WR_Byte(0x20, 0); // 设置 VCOMH 取消选择级别
	OLED_WR_Byte(0x8D, 0); // 设置电荷泵
	OLED_WR_Byte(0x14, 0); // 启用电荷泵
	OLED_WR_Byte(0xAF, 0); // 开启显示
}

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
-

嵌入式开发

STM32

MCU

FPGA

软件与操作系统

RISC-V

国产MCU

-

综合技术

电源与模拟

通讯及无线技术

工业控制与自动化

物联网技术

PCB与EMC

测试测量

智能新技术

基础知识

-

DIY与开源设计

电子DIY

开源硬件

设计工具

-

行业应用

汽车电子

机器人开发

-

活动中心

板卡试用

研讨会

下载专区

合作大赛

视频专区

有奖活动

-

高校专区

毕业设计专区

竞赛辅导

坤创E-Geek/天科大新电社

漓东e学堂

周师电子设计创新社区

岭南EE码农港

湖北理工TEA

东师科技爱好者

-

休闲专区

话题讨论

我爱工作

我爱生活

-

企业专区

OpenVINO生态社区

英飞凌

ADI

Xilinx

TI

Mouser

Microchip

贝能国际

Atmel

GD32

Linear

Renesas

Cypress

机智云Gizwits

Micron

-

论坛服务

投诉与建议

论坛公告








AltStyle によって変換されたページ (->オリジナル) /