User Tools

Site Tools


using_pico_with_ssd1306_based_lcd_and_spi

This is an old revision of the document!


Using Pico with SSD1306 based LCD and SPI

***** THIS PAGE IS WORK IN PROGRESS *****
Aug 2026


Introduction


So, I found another 0.96“ LCD to play with, just lying around at home. I figured it would be a bit rude to not give it a go. It is however, slightly different to the one we previously setup.

About the LCD:

  • It is still an ssd1306 based display, got this from the label on the packaging.
  • It does support I2C, 3 wire SPI and 4 wire SPI. The default resistor settings put it at 4 wire SPI.
  • SPI will use 7 wires instead of the 4 wires for I2C.
  • SPI has faster refresh than I2C.
  • Same 128×64 resolution.
  • This version of the LCD does not have the Yellow Blue split.

Because we are using SPI, the Pico will need a new driver as the original driver is for I2C. Before we get in to the Python code, let's have a look at the wiring.


The Wiring


Please see below for the SPI wiring to the Pico Pins.


Below is a more diagrammatic view.


Once you have cabled up your LCD, we can move on to the software.


Python Code


Before we look at the code, I want to share that there are a few differences between SPI and I2C, have a look at this table below.


So SPI is faster, but there is no addressing, so you cannot chain multiple SPI devices from a single set of Pico GPIO Pins. If you need to run multiple displays, your choice is to either use I2C LCDs, or use multiple sets of SPI pins for each LCD.

using_pico_with_ssd1306_based_lcd_and_spi.1787318653.txt.gz · Last modified: by walkeradmin