ZZZ-20-OLED屏幕

有了这块 0.96 寸 OLED 屏幕(SSD1306 驱动),你的单片机终于有了自己的“脸”。我们要学习的这个新协议叫 I2C (Inter-Integrated Circuit),它是嵌入式世界里应用最广的协议之一,因为它的硬件连接极其简单:只需要两根线。

1. 认识 I2C:两根线的“交响乐”

I2C 协议由飞利浦(现 NXP)发明,它的核心在于“主从架构”和“寻址机制”。

  • SCL (Serial Clock):时钟线,由主设备(STM32)产生稳定的节拍。
  • SDA (Serial Data):数据线,所有的信息、指令和数据都在这根线上传输。

为什么它比串口厉害? 串口通常只能“一对一”,而 I2C 可以在同一组引脚上连接多达 128 个设备(如屏幕、温湿度传感器、陀螺仪),只要它们的“地址”不一样,就像是总线上的“门牌号”。

2. 硬件连接:别接错 5V

对于 STM32F103C8T6,我们通常使用 I2C1

OLED 引脚 STM32 引脚 说明
VCC 3.3V 严禁接 5V,否则可能烧毁 OLED 驱动芯片。
GND GND 电源负极。
SCL PB6 I2C1 的时钟信号。
SDA PB7 I2C1 的数据信号。

3. STM32CubeIDE 配置 (.ioc)

  1. 在左侧点击 Connectivity -> I2C1
  2. I2C 模式设置为 I2C
  3. 参数设置 (Parameter Settings)
    • I2C Speed Mode:保持 Standard Mode (100KHz) 即可,对于初学者更稳;如果你追求流畅,可以选 Fast Mode (400KHz)。
  4. 你会看到引脚图上 PB6 (SCL)PB7 (SDA) 变绿了。
  5. 保存并生成代码。

4. 为什么要用库?

串口发数据很简单(发个字符就行),但 OLED 屏幕非常复杂。要显示一个字母 ‘A’,你需要告诉驱动芯片:

  1. “我要在某个坐标画点”。
  2. “这个点的颜色是亮还是灭”。
  3. “点阵模组是如何排列的”。

为了不让代码写成“天书”,我们通常会引入成熟的开源驱动库。最常用的是 ssd1306_stm32 或轻量化的 u8g2

待续

Licensed under CC BY-NC-SA 4.0