基于STM32F103的0.96寸OLED显示屏驱动程序(4针脚I2C接口),支持硬件IIC/软件IIC。 这款驱动程序比较完善,可以实现 英文、整数、浮点数、汉字、图像、二进制数、十六进制数 等内容显示,可以画点、直线、矩形、圆、椭圆、三角形等,支持多种字体,差不多相当于一个简易版图形库了。
该程序是基于江协科技的代码二次修改的,原版程序只支持软件I2C,我修改后支持硬件I2C,也可以修改宏定义改成使用软件I2C。
程序是使用ST标准库写的。 测试硬件为STM32F103C8T6和AIR32F103CBT6,在这两款单片机上都测试过能跑,其中使用硬件I2C时STM32通信速率最高可以跑到1.3Mbit/s,AIR32最高只能跑600kbit/s。
效果图I2C协议简介I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备(那些电平转化芯片),现在被广泛地使用在系统内多个集成电路(IC)间的通讯。 I2C只有一跟数据总线 SDA(Serial Data Line),串行数据总线,只能一位一位的发送数据,属于串行通信,采用半双工通信。 半双工通信:可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替进行,其实也可以理解成一种可以切换方向的单工通信,同一时刻必须只能一个方向传输,只需一根数据线。 对于I2C通讯协议把它分为物理层和协议层物理层规定通讯系统中具有机械、电子功能部分的特性(硬件部分),确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准(软件层面)。 I2C物理层I2C 通讯设备之间的常用连接方式 (1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。 (2) 一个 I2C 总线只使用两条总线线路,一条双向串行数据线SDA(Serial Data Line ),一条串行时钟线SCL(Serial Clock Line )。数据线即用来表示数据,时钟线用于数据收发同步 (3) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。 I2C通信时单片机GPIO口必须设置为开漏输出,否则可能会造成短路。
我这里就不详细讲解了。
需要用的元件
程序完整工程下载地址: 工程使用Keil5创建,用Vscode+EIDE开发,两个软件都可以打开此工程。 工程文件全部使用UTF-8编码,如果打开显示乱码需要修改编辑器编码为UTF-8。
因为字数限制这里放不了代码,可以到这看:https://blog.zeruns.tech/archives/769.html
推荐阅读
|