学习目标

学习内容

  • 能够驱动屏幕显示
  • 能够使用API
  • 理解SPI协议基本规则

    SSD1306

    SSD1306是一款OLED显示驱动芯片,由Solomon Systech Limited公司制造。它支持基于SPI和I2C两种通信协议,具有低功耗、高对比度和快速响应等优点,通常用于各种小型嵌入式系统和DIY电子项目中。
    SSD1306芯片可以控制OLED显示屏上的像素,支持的分辨率为128x32、128x64、96x16和64x48等不同规格。其中,128x64是最常见的规格,它由128列和64行像素组成,总共有8192个像素点。SSD1306芯片还支持多种字体和字符集,可显示各种文字、图标、图形等内容。
    SSD1306芯片还具有内置的RAM缓冲区,可以通过SPI或I2C接口向缓冲区写入数据,然后再通过命令将缓冲区中的数据刷新到OLED显示屏上。这种方式可以大大减少SPI或I2C通信的次数,提高数据传输效率,从而达到更好的显示效果。
    总之,SSD1306是一款高性能、低功耗、易于控制的OLED显示驱动芯片,广泛应用于各种嵌入式系统和电子产品中,是一种理想的显示解决方案。
    以下是对ssd1306的特点总结:
  1. 支持I2C、SPI等多种通信接口;
  2. 驱动方式简单,可快速上手;
  3. 低功耗,显示效果好,适合各种嵌入式系统;
  4. 内部集成RAM,能够缓存多页的图像;
  5. 提供多种字体和图形,支持自定义字体和图形;
  6. 支持对图像进行旋转、反转等操作;
  7. 支持多种显示模式和亮度控制。

应用场景:

  1. 数码管;
  2. 智能手表、手环等可穿戴设备;
  3. 智能家居控制面板;
  4. 可移动终端设备的显示部分;
  5. 电子秤、体脂称等健康设备的显示部分。

    SPI版的SSD1306

    142.png
    SPI版本就是在原理的模组基础上做了外围电路,外围电路的作用是将ssd1306的模式配置为SPI模式,这样就可以采用SPI方式进行通讯

    SPI协议

    SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在嵌入式系统中连接微控制器(MCU)和外围设备(如传感器、存储器、显示器等)。SPI协议需要4根线进行数据传输,分别是:
  • SCLK:时钟信号线,由主设备控制时序,用于同步数据传输。
  • MOSI:主设备输出从设备输入线,主设备通过该线向从设备发送数据。
  • MISO:主设备输入从设备输出线,从设备通过该线向主设备发送数据。
  • SS:从设备片选线,用于选择与主设备通信的从设备。(其他叫法CS)

SPI协议支持全双工通信,意味着主设备和从设备可以同时发送和接收数据。SPI协议传输数据时采用的是先进先出的方式。
标准的SPI总共有4根线,包括:SCLK(时钟线)、MOSI(主机输出从机输入线)、MISO(主机输入从机输出线)和SS(片选线)。但是在实际的应用中,可能会根据需要添加其他的辅助信号线,如数据就绪信号等。因此,SPI的具体实现方式可能会有所不同。
SPI协议中的DC线是指数据/命令线(Data/Command line),有时也称作RS线(Register Select line)。它是用来控制从主设备到从设备传输的数据是命令还是普通数据的信号线。在许多液晶显示屏、OLED屏幕、触摸屏等设备中,SPI总线上的DC线通常用于指示传输的数据是图像数据还是命令数据,以便设备能够正确地解析和处理数据
144.png
SPI通讯的时序是由主设备(Master)发起的,在数据传输的过程中,需要进行时序的协调,具体流程如下:

  • 主设备(Master)通过片选信号(Slave Select)选择通信的从设备(Slave)。
  • 主设备(Master)向从设备(Slave)发送时钟信号(SCLK),并将数据从输出口(MOSI)发送到从设备(Slave)的输入口(MISO)。
  • 从设备(Slave)在每个时钟脉冲的下降沿采样输入口(MISO)的数据,并将数据从输出口(MOSI)发送回主设备(Master)的输入口(MISO)。
  • 当传输完成后,主设备(Master)取消片选信号(Slave Select),从设备(Slave)被释放。

具体的通讯流程时序可以根据实际应用情况进行调整,例如可以调整时钟信号的极性和相位、选择合适的时钟频率等。

原理图

87.png
143.png

字库芯片

字库芯片是一种专门用于储存字符或汉字等字形信息的存储器芯片。它通过将不同的字形编码储存在内部存储器中,提供了一种快速、高效的方法来支持文本显示。使用字库芯片,可以避免在应用程序中占用过多的内存空间,并且可以提高文本显示的速度和准确性。 字库芯片通常包含标准的字形、符号和汉字,而且支持多种字体和字号的显示。
字库芯片采用的也是SPI协议进行通讯。

中文显示屏原理

由显示屏和中文字库芯片组成。

  1. 显示屏接外接电路采用SPI模式显示
  2. 中文字库采用SPI进行访问

145.png
标准的SPI协议包含:

  • SCLK: 时钟频率
  • MOSI:Master Out Slave In,主设备给从设备传递数据
  • MISO:Master In Slave Out, 主设备接收从设备的数据
  • SS: Slave Select, 选择从设备,片选。spi是单独通讯,一次只能和一个芯片进行通讯,通过ss进行片选。

SPI SSD1306显示屏,只负责显示,只用到了标准协议的一些规定引脚,也做了一些扩展:

  • SPI_CLK: 对应标准协议中的SCLK。
  • SPI_MOS: 对应标准协议中的MOSI
  • SPI_DC: 为扩展,自定义的数据命令引脚,非标准。
  • SPI_CS1: 对应标准协议中的ss。但是多个slave时,每个对应一个片选引脚。

中文字符芯片,采用的也是SPI:

  • SPI_CLK: 对应标准协议中的SCLK。
  • SPI_MOS: 对应标准协议中的MOSI
  • SPI_FSO: 对应标准协议中的MISO
  • SPI_CS2: 对应标准协议中的ss。但是多个slave时,每个对应一个片选引脚。

整个系统中,用到了SPI协议,同时有两个从设备,他们共用了一些引脚。

API的使用

  1. void OLED_Display_128x64(u8 *dp);
  2. void OLED_Display_16x16(u8 x,u8 y,u8 *dp);
  3. void OLED_Display_8x16(u8 x,u8 y,u8 *dp);
  4. void OLED_Display_5x7(u8 x,u8 y,u8 *dp);
  5. void OLED_Display_GB2312_string(u8 x,u8 y,u8 *text);
  6. void OLED_Display_string_5x7(u8 x,u8 y,u8 *text);
  7. void OLED_ShowNum(u8 x,u8 y,float num,u8 len);

练习题

  1. 显示图像
  2. 显示时间
  3. 显示文字