Letusdoit活动第二期:智能手环-过程贴OLED屏幕显示
在本次活动中,使用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); // 开启显示 }
回复
有奖活动 | |
---|---|
"我踩过的那些坑"主题活动——第002期 | |
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年"我要开发板活动"又开始了! | |
打赏了!打赏了!打赏了! |