我们这次展示使用的是 HAL库 和 proteus 的结合仿真 我的proteus已经汉化,大家可以找一下教程 方便后面的学习
OLED 我们都知道 是i2C协议来驱动,下面我讲解一下i2C
i2C集成电路总线,是两线式串行通信总线
数据线 SDA(Serial Data Line)
时钟线 SCL(Serial Clock Line)
主从关系:主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被
认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。
数据传送:
如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主
机终止数据传送。
如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最
后由主机终止接收过程。
时钟同步:SCL用于数据的时钟同步,确保主从设备之间的数据传输同步进行。
主要特点
硬件简单:I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特
殊的接口电路。
多主机总线:I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过
冲突检测和仲裁防止数据破坏。
在线检测:I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试。
数据传输与地址设定:数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其
他器件正常工作。
负载能力:由于线路中电容会影响总线传输速度,I2C总线的负载能力为400pF,因此可以估算出总线
允许长度和所接器件数量。
主从关系:主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被
认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。
数据传送:
如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主
机终止数据传送。
如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最
后由主机终止接收过程。
时钟同步:SCL用于数据的时钟同步,确保主从设备之间的数据传输同步进行。
主要特点
硬件简单:I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特
殊的接口电路。
多主机总线:I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过
冲突检测和仲裁防止数据破坏。
在线检测:I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试。
数据传输与地址设定:数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其
他器件正常工作。
负载能力:由于线路中电容会影响总线传输速度,I2C总线的负载能力为400pF,因此可以估算出总线
允许长度和所接器件数量。
主从关系:主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被
认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。
数据传送:
如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主
机终止数据传送。
如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最
后由主机终止接收过程。
时钟同步:SCL用于数据的时钟同步,确保主从设备之间的数据传输同步进行。
主要特点
硬件简单:I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特
殊的接口电路。
多主机总线:I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过
冲突检测和仲裁防止数据破坏。
在线检测:I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试。
数据传输与地址设定:数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其
他器件正常工作。
负载能力:由于线路中电容会影响总线传输速度,I2C总线的负载能力为400pF,因此可以估算出总线
允许长度和所接器件数量。
起始信号由主设备发起,用于通知总线上的所有设备即将开始数据传输。
当SCL为高电平时,SDA由高电平变为低电平,产生一个下降沿,表示起始信号的开始。

停止信号也由主设备发起,用于通知总线上的所有设备数据传输已经结束。
当SCL为高电平时,SDA由低电平变为高电平,产生一个上升沿,表示停止信号的开始。


OLED驱动程序 我已经优化 需要的可以私信我
下面我们开始搭建仿真

我们在箭头指向的位置 寻找我们所需要的元器件
button 是按钮
cap 是电容
crystal 是晶振
oled 是屏幕
res是电阻

我们在这个位置是寻找
电源 地 标签的位置

这个是我们单片机最小系统的搭建
由于仿真平台的限制 我们不采用下面cubemx的iic 我们用软件iic来进行示例

关于引脚的选择 配置如下图


我们是高电平 开漏输出 引脚的配置完成 我们打开keil 就好喽
启用OLED的时候 一定要初始化




在驱动程序里面我们可以找到我已经封装好的程序 大家调用函数即可,由于proteus仿真平台反应较慢 大概需要30s左右 OLED屏幕才会出现数字和字母哦!