关键字
Proteus 仿真
OLED屏
SSD1306 UG-2864HSWEG01
STM32f1 IIC HAL库
问题描述
最近接触了一下proteus 仿真, 在进行OLED仿真的时候, 遇到上想要用类似中景园0.96OLED屏, 没有相关元器件, 在网上搜索之后发现资料不多, 且一直黑屏无法正常显示的问题. 后完成解决问题,仅按个人经验提出一些见解.
解决思路与信息分析
国内用OLED屏的很多都是用中景园0.96OLED屏, 然而我所用的proteus(8.9)没有相关器件,为了仿真与现实运用对齐于是想找个库中已有的器件代替.
对编程有较大影响的为OLED的驱动芯片. 查询资料得知, 其驱动芯片为 SSD1306 , 直接在器件库中搜索SSD1306刚好发现有一个UG-2864HSWEG01符合要求, 而网上也较多用这个进行代替.
跟着网上大佬的经验,跟着搭出了这样一个原理图
同时翻阅SSD1306芯片手册,引脚相关说明
其中功率引脚不多赘述, 除些之外, 比较关心的引脚有
CS
‾
\overline{\text{CS}}
CS :片选线, 低有效, 那就直接拉低.
RES
‾
\overline{\text{RES}}
RES : 复位信号输入,拉低表示初始化芯片,要正常工作就得拉高.
D/
C
‾
\overline{\text{C}}
C : 数据(Data)/控制(Comtrol)引脚,根据手册,可得在IIC模式下,作为IIC从地址的一个位(SA0), 如下图所示:
R/
W
‾
\overline{\text{W}}
W: 读(高有效)/写(低有效)控制, 我们只是用OLED进行显示, 不涉及数据回读的操作, 而且介绍中提及使用串行接口应该拉至Vss(即拉低), 所以本引脚应该拉低, 在proteus仿真中实测无论拉高拉低还是置空都不影响OLED显示.
BS[0…2] : 接口方式选择线,如下表所示:
可见, 使用IIC模式应该将BS0与BS2拉低, BS1拉高.
D[0…7]: 数据总线, 按引脚描述或按8.1.5IIC接口描述, IIC接口下D2为SDAout, D1为SDAin,D0为SCL线.D2与D1可直接相连, 而且必须接上上拉电阻.
至此, 基本搞清楚了所有接线,同时除R/
W
‾
\overline{\text{W}}
W引脚外其他也验证了网上大佬的接线图.
然而还是出了些问题折腾了许久, 原因在于对proteus的总线不熟悉上, 普通的连线需要网络标号也就算了, 就连总线都需要添加网络标号(ps.感觉可能是版本问题)
至此算是硬件搭完了, 软件方面直接下了中景园的OLED资料, 自己简单copy了下, 唯一改动的地方就是把oled.h中从ST标准库改成了HAL库表达.
至此, OLED仿真成功
相关文件
自己编写的测试文件 : https://download.csdn.net/download/qq_44498171/85073219