0.91寸OLED显示屏模块使用教程

产品特性

  • 驱动芯片 : SSD1306
  • 支持接口 : I2C
  • 分辨率  : 128 * 32
  • 显示尺寸 : 0.91inch
  • 显示颜色 : 白色
  • 工作电压 : 3.3V

工作原理

SSD1306 是一款 128*64 像素的 OLED 控制器,但该 OLED 只有 128*32 个像素点,所以该屏只用到了 SSD1306 缓存区的前半部分。
该 OLED 支持 8bit 8080 并行、8bit 6800 并行、三线 SPI、四线 SPI 和 I2C 等通信方式,但考虑到该模块的尺寸,以及节省微控制器宝贵的 IO 资源,故舍弃了前四种通信方式,只支持 I2C的通信方式。

I2C 通信协议



在 I2C 通信时,先发送一个 7bit 的从设备地址+1bit 的读写位,等待设备的响应。
在从设备应答后,接着发送一个控制字节,该字节决定了后面发送的字节是命令还是数据,然后再等待从设备应答。
在从设备再次应答之后,若发送命令,则只发送一字节的命令。若发送数据,可以只发送一个字节,也可以多个字节的数据连着发送,视情况而定。
详见 Datasheet Page20 Figure 8-7

树莓派使用

打开I2C接口

在终端执行:

  1. sudo raspi-config
  2. 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动



然后重启树莓派:

  1. sudo reboot

安装库

  • 安装BCM2835, 打开树莓派终端,并运行以下指令
  1. wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
  2. tar zxvf bcm2835-1.60.tar.gz
  3. cd bcm2835-1.60/
  4. sudo ./configure && sudo make && sudo make check && sudo make install
  5. # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
  • 安装wiringPi
  1. sudo apt-get install wiringpi
  2. #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
  3. wget https://project-downloads.drogon.net/wiringpi-latest.deb
  4. sudo dpkg -i wiringpi-latest.deb
  5. gpio -v
  6. # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
  • 安装Python函数库
  1. #python2
  2. sudo apt-get update
  3. sudo apt-get install python-pip
  4. sudo apt-get install python-pil
  5. sudo apt-get install python-numpy
  6. sudo pip install RPi.GPIO
  7. sudo pip install spidev
  8. #python3
  9. sudo apt-get update
  10. sudo apt-get install python3-pip
  11. sudo apt-get install python3-pil
  12. sudo apt-get install python3-numpy
  13. sudo pip3 install RPi.GPIO
  14. sudo pip3 install spidev

硬件连接



OLEDRPi引脚号BCM
VCC3.3V3.3V
GNDGNDGND
SDA3SDA
SCL5SCL

下载示例程序

  1. sudo apt-get install p7zip-full
  2. wget http://www.waveshare.net/w/upload/3/37/0.91inch_OLED_Module_Code.7z
  3. 7z x 0.91inch_OLED_Module_Code.7z -r -o./0.91inch_OLED_Module_Code
  4. sudo chmod 777 -R 0.91inch_OLED_Module_Code
  5. cd 0.91inch_OLED_Module_Code/RaspberryPi

运行测试例程

注:如果使用了BCM2835库,需要重启才能正常运行wiringPi库和python库。

  • BCM2835
  1. cd bcm2835/
  2. make clean
  3. make
  4. sudo ./oled_0in91
  • wiringPi

由于默认的波特率只有100Kbps,而芯片实际上可以达到400Kbps,而wiringPi无法修改树莓派I2C的波特率,因此我们需要在/boot/config.txt找到dtparam=i2c_arm=on,在其后面加上:,i2c_arm_baudrate=400000,具体步骤如下:

  1. sudo nano /boot/config.txt

找到dtparam=i2c_arm=on,将其修改成如下:

  1. dtparam=i2c_arm=on,i2c_arm_baudrate=400000

然后重启:

  1. sudo reboot

重启之后

  1. cd 0.91inch_OLED_Module_Code/RaspberryPi/wiringpi/
  2. make clean
  3. make
  4. sudo ./oled_0in91
  • python
  1. cd python/
  2. #python2.7
  3. sudo python main.py
  4. #python3
  5. sudo python3 main.py

STM32使用

  • 本例程使用的开发板主控为 XNUCLEO-F103RB
  • 本例程基于 HAL 库,因此可以使用 STM32CubeMX 把示例程序移植到其他 STM 芯片上
  • 本例程在 Keil v5 环境下编译通过
模块XNUCLEO-F103RB
VCC3V3/5V
GNDGND
SDASDA/D14
SCLSCL/D15

在资料中下载程序,或点击此处下载
解压后打开\STM32\0.91inch_OLED_Demo\MDK-ARM\0.91inch_OLED_Demo.uvprojx
编译并下载到开发板上

Arduino使用

  • 本例程使用的开发板主控为Arduino UNO
模块UNO
VCC3V3/5V
GNDGND
SDASDA
SCLSCL

在资料中下载程序,或点击此处下载
解压后将Arduino\0.91Inch_OLED_Demo\下的文件复制到Arduino\0.91Inch_OLED_Demo\oled\目录下
打开Arduino\0.91Inch_OLED_Demo\oled\oled.ino
编译并下载到开发板上

TAG: 树莓派5 SSD ESP32-S3开发板2.8寸LCD显示屏480x640触摸屏 QMI8658传感器 SD槽 ESP32 S3透明小电视适用于稚晖君HoloCubic 3D棱镜时钟摆件显示屏 树莓派7寸DSI MIPI显示屏LCD 720x1280 ESP32-P4 Luckfox Lyra RK3506/Omni3576 树莓派Pico 2 RP2350工业级6路继电器RS485隔离保护 树莓派5 PCIe转M.2 4G 5G和USB 3.2 HUB转接板 Sipeed NanoCluster迷你集群板 数据中心 集群电脑 树莓派CM45 LM3H M4N 3.4寸圆形LCD电容触摸HDMI显示屏适用于mini PC树莓派Jetson DDSM315直驱伺服轮毂电机 一体化设计 支持 RS485通信 串口服务器 树莓派PICO LoRa 斑梨 ESP32 C6开发板1.43寸AMOLED显示屏双MIC 阵列音频采集 虾哥小智AI Deepseek 电脑副屏 机械键盘 树莓派 工业级USB转RS232/485/422/TTL多功能串口转换器FT4232HL 树莓派Pico 2 RP2350 ETH以太网网口模块CH9120 ESP32 S3 Luckfox串口