找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 79|回复: 0
打印 上一主题 下一主题
收起左侧

用STC单片机驱动OLED液晶的感受

[复制链接]
跳转到指定楼层
楼主
本帖最后由 ztzp 于 2025-8-2 16:55 编辑

几年前买得有几片OLED液晶显示屏,驱动是SSD1306的。
引脚定义:

Vcc接液晶排线的6和9脚,Gnd接排线的25、29脚。
卖家给的信息:

根据“中景园电子科技”公司提供的例程,用了STC几种型号的单片机一直没点亮这个OLED。后来送了几片给网友“f556”,他很容易就点亮了这个OLED,他用的平台是MSP430。

根据他提供的例程,我也用自制的MSP430F4152最小系统点亮了这个OLED。



但用同一家公司提供的51单片机程序,却始终无法点亮它。
根据网友“f556”介绍,OLED的初始化程序完成后,屏幕显示雪花点,就算点亮了,后面显示其它字符的内容都不重要。
仔细地分析51单片机与MSP430单片机的初始化例程,逐行对比,本质上完全是一样的,但在STC单片机控制下,OLED屏幕一片黑暗,郁闷极了!
为了彻底弄清STC单片机驱动OLED的问题,买了一个简易的“逻辑分析仪”:

为了将单片机、OLED和逻辑分析仪连接在一起,又焊了一个5脚分线器。


根据资料,控制OLED的时序图是这样的:

由于MSP430控制OLED已经成功了,所以我就把它的时序图作为范本来进行研究。
先用分析仪捕获MSP430控制OLED的几根主要信号线(时钟、指令/数据标志、数据等),为了研究问题简单,只捕获初始化程序第一字节指令,时序图如下:

而初始化程序第一字节时序图的源代码为:

0xAE换算成二进制数就是:10101110,与捕获到的数据是一致的。
通过MSP430正确运行的代码而捕获到的以上时序图,也初步学会了“逻辑分析仪”的使用。
用STC单片机控制OLED的平台是前不久刚制作完成的STC32G最小系统板,此单片机可以工作在3.3V电压下,为了问题简便,只写了OLED的初始化代码,甚至在初始化函数中只向OLED发送了一字节指令,如上所示。
用“逻辑分析仪”捕获到的时序图为:

这个时序图一看就不正常,感觉时钟脉冲的“占空比”都比较小,形成的脉冲很窄,D/C波形也没看到有高电平,数据也不正确。
以“模拟电路”的思维分析这些脉冲,感觉是负载太重,驱动电路在输出高电平时,瞬间被负载拉低所造成的。
初步怀疑OLED需要的驱动电流比较大,STC单片机的“准双向口”无法胜任,故高电平无法维持足够长的时间,导致脉冲波变窄。
因为以前用STC的单片机驱动LCD时,使用的都是默认的“准双向口”,这次想到OLED与LCD都差不多,也就没特别去配置I/O口,默认使用它的“准双向口”。
后来将:时钟、指令/数据标志、数据、复位等控制线的I/O口模式改为“推挽模式”,亦即:

程序修改以后,时序图正常了。

其实“逻辑分析仪”的软件自己也会分析数据,根据设置的SPI协议,软件分析出来的数据又快又准:

在“逻辑分析仪”的帮助下,OLED屏久违的“雪花点”终于出现了。

评分

参与人数 1黑币 +30 收起 理由
wpppmlah + 30 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表