board dev studio

Verified 2026-10

i2c / SPI character LCD backpack - STEMMA QT / Qwiic

A back-pack board that drives any standard 16-pin HD44780 character LCD (8x1 to 20x4) from two I2C wires or three SPI wires: an MCP23008 expander and a 74HC595 shift register on the same six LCD signals, a 3-5 V input boosted to 5 V for the LCD, a contrast trimmer, 0x20-0x27 address jumpers, two STEMMA QT sockets and a pre-soldered 5-way 3.5 mm terminal block.

Place this board on a carrier in the editor →

Logic level3.3 V

Specs

I/O7 digital

Six LCD signals (RS, E, D4-D7) plus the backlight switch. The MCP23008 has 8 GPIOs with 7 wired (GPIO1-7; GPIO0 unused) and the 74HC595 has 7 of its 8 outputs wired; in either mode the same six LCD pads are driven, so the host only spends 2 (I2C) or 3 (SPI) pins.

Pinout

21 pads, as the vendor numbers them.

#NameFunctionSignals
11LCD VSS, tied to board GND. Adafruit numbers the LCD header pads 1-16 with pad 1 furthest left looking at the front (the Adafruit-logo side), which is the fab file's JP1 pad 1LCD ground, LCD pin 1
22LCD VDD, fed from the board's 5 V rail (boost output) - the 5.0V net also feeds LCD backlight anode at pad 15LCD 5 V supply, LCD pin 2
33LCD V0 contrast, the wiper of the 10 kOhm trimmer R2 (ends on 5 V and GND)LCD contrast, LCD pin 3
44LCD RS (register select): register-select from MCP23008 GPIO1 (pin 11) or 74HC595 output QB (pin 1)LCD RS, LCD pin 4
55LCD RW, hard-tied to GND: read/write is never driven, so the LCD is write-onlyLCD RW, LCD pin 5
66LCD E (enable/strobe): MCP23008 GPIO2 (pin 12) or 74HC595 output QC (pin 2)LCD E, LCD pin 6
77LCD D0 - no net in the fab file: not connected, because the backpack only ever drives 4-bit modeLCD D0, unconnected
88LCD D1 - not connected, same reason as D0LCD D1, unconnected
99LCD D2 - not connectedLCD D2, unconnected
1010LCD D3 - not connectedLCD D3, unconnected
1111LCD D4: MCP23008 GPIO3 (IC1 pin 13) or 74HC595 output QG (IC2 pin 6)LCD D4, LCD pin 11
1212LCD D5: MCP23008 GPIO4 (IC1 pin 14) or 74HC595 output QF (IC2 pin 5)LCD D5, LCD pin 12
1313LCD D6: MCP23008 GPIO5 (IC1 pin 15) or 74HC595 output QE (IC2 pin 4)LCD D6, LCD pin 13
1414LCD D7: MCP23008 GPIO6 (IC1 pin 16) or 74HC595 output QD (IC2 pin 3) - note the shift register's bit order runs against the LCD data order hereLCD D7, LCD pin 14
1515LCD backlight anode, hard-wired to the board's 5 V rail (net 5.0V) - not switched, so the anode is always liveLCD backlight anode, 5 V
1616LCD backlight cathode (net LEDK), switched to GND by Q1 (BSS138, gate pulled low through the R8 pack at reset so the backlight is off until driven) - drive it from MCP23008 GPIO7 or 74HC595 QH via the LITE netLCD backlight cathode, switched ground
17GNDTerminal-block pad 1 (fab file J1 pad 1, the right-hand screw with the block's labels facing you): supply ground and the return for both the host and the LCD. Numbered 17 here because the fab file already uses 1-5 on this connector and 1-16 on the LCD headerhost ground
183-5VTerminal-block pad 2 (J1 pad 2, net VCC): 3-5 V in. Feeds the MCP23008/74HC595 through the level shifter's HV side and the boost converter, and it is the reference for the 5 V rail that feeds the LCDsupply 3-5 V, logic reference
19CLKTerminal-block pad 3 (J1 pad 3, net CLOCK_LV): I2C SCL by default, or SPI clock after the SPI Enable jumper is closed. Level shifted by Q2 to the 5 V sideI2C SCL, SPI SCK, level shifted input
20DATTerminal-block pad 4 (J1 pad 4, net DATA_LV): I2C SDA by default, or SPI MOSI with the SPI Enable jumper closed. Level shifted by Q2I2C SDA, SPI MOSI, level shifted bidirectional
21LATTerminal-block pad 5 (J1 pad 5, net LATCH, the left-hand screw): 74HC595 RCLK latch, used in SPI mode only - the net reaches the shift register and nothing else, so in I2C mode it is an unused pinSPI latch, unused in I2C mode

Buses

BusSignalsPinsVoltageNote
I2C ×1SDA, SCLDAT, CLK3-5 V, level shifted VDefault mode. Both host lines pass through Q2 (a BSS138 pair) so a 3 V or 5 V host is fine. Pull-ups are fitted on both sides of the shifter by the R3 pack, which the fab file values as 4.7 kOhm to VCC on the low side and 4.7 kOhm to the 5 V rail on the high side - the pinouts page calls them 10 kOhm, so the value is unresolved between the two vendor documents and the fab file's 4.7 kOhm is what is actually specified. Two STEMMA QT / Qwiic JST-SH sockets (CONN3, CONN4) are in parallel with terminal pads DAT/CLK.
SPI ×1SCK, MOSI, LATCHCLK, DAT, LAT3-5 V, level shifted VOnly after the back-side SPI Enable jumper is soldered closed, and exclusive with I2C. The same three terminal screws change job (CLK = SCK, DAT = MOSI, LAT = latch); no chip select is needed because closing the jumper is itself the selection - it grounds the net that both holds the MCP23008 in reset and enables the 74HC595's outputs, which is the opposite of what a reader might expect from a jumper called 'SPI Enable'.

I²C / bus addresses

AddressBusDeviceNote
0x20I2CMCP23008 8-bit I/O expander7-bit, default with A0/A1/A2 all open. Adafruit: close A0 for +1, A1 for +2, A2 for +4, so 0x21 through 0x27 are all reachable and 8 boards can share a bus. The fab file backs the arithmetic: each jumper's low pad sits on the MCP23008's A0/A1/A2 pin with a 4.7 kOhm pull-down in the R8 pack, and its high pad is on the 5 V rail, so 'closed' really is a logic high. In SPI mode this address is irrelevant - the MCP23008 is held in reset.

Power

Input3-5 V on the terminal block's 3-5V pad (fab-file net VCC). Adafruit describes the input as 3 to 5 V DC and says the board boosts it for the LCD
Input range3-5 V

Adafruit publishes no board-level current figure in either direction. The backlight is the real load and it is not fed by the backpack's boost in any switched way of its own: anode is hard on 5 V and only the cathode is switched (see pads 15 and 16), so for an RGB LCD you wire the backlight yourself - the backpack does not control colour, and it does not work with 16x2 OLED modules at all.

Outputs

RailRatingNote
LCD 5 V5 V VIC3 (AP3602/RT9361 boost, with C4 10 uF and C6 1 uF) makes the 5 V rail that feeds LCD VDD and backlight anode; it is not brought out to a pad of its own. Adafruit publishes no current limit for it, and the guide's 3-5V jumper (back of the board, between the CLK and 3-5V silk labels) is meant to be CUT to disconnect the boost so a 3 V-logic LCD can be driven without over-volting it. That jumper is a copper trace rather than a jumper element: the fab file's only closed-wire jumper, SJ1, is the power-LED jumper.

Notes

Pin numbers 1-16 are the LCD header's own pads, which Adafruit numbers on the silk (pad 1 furthest left with the Adafruit logo facing you); the five terminal-block pads are the fab file's J1 pads 1-5 and are numbered 17-21 here so the entry has unique numbers - the offset is this file's convention, not the vendor's. Terminal order left to right is LAT, DAT, CLK, 3-5V, GND, read off Adafruit's own product photo against the fab file's pad coordinates (the fab file's labels are vector artwork, so the order was confirmed from the picture, not the file). The board is write-only: LCD RW is tied to GND, and LCD D0-D3 have no nets at all, so the backpack drives the LCD in 4-bit mode only. Two vendor statements worth flagging: the pinouts page lists the MCP23008's connected GPIOs as landing on 'backpack pins 4, 6, 11, 12, 13, 14 and 15', but the fab file puts the seventh GPIO on the LITE net, which drives Q1's gate and reaches the LCD header at pad 16 (LEDK) - pad 15 is hard-wired to 5 V - so treat pad 16, not 15, as the backlight-control pin; and the MCP23008's RESET (IC1 pin 6) shares a net with the 74HC595's OE (IC2 pin 13) and the SPI Enable jumper, pulled up by a 10 kOhm resistor (R6), which is why I2C is the default and why closing the jumper both disables the expander and enables the shift register. The terminal block has been pre-soldered since 17 April 2024, and the whole board is the February 2023 re-spin that added the boost circuit and the better contrast trimmer - the repo also holds the pre-2023 `i2cspilcdbackpack.brd`, which is the previous spin - Adafruit says the re-spin is 'the same' in size and shape and a mechanical drop-in, so that older file is a cross-check for the outline but not a substitute for the current one, which is the only one carrying the STEMMA sockets.

Provenance

Every figure on this page was read from the 4 sources below and last checked on Oct 20, 2026.