OLED 128x64 vs LCD 1602 I2C

In short

Graphics or text decides: the 0.96 inch OLED is a 128 × 64 pixel SSD1306 panel that draws anything, lights its own pixels and runs from 3.3 V or 5 V (SSD1306 datasheet Rev 1.1, sections 2, 8.7), while the LCD 1602 I2C shows 16 characters on 2 lines of 5x8 cells and needs 5 V (TC1602A-01T specification, pp. 3 to 5). Both take four wires on I2C, at 0x3C for the OLED and 0x27 or 0x3F for the LCD backpack. The catch with the OLED is RAM: its 1 KB frame buffer is half of an Uno's 2 KB.

Side by side

OLED 128x64LCD 1602 I2C
What it showsSSD1306 datasheet Rev 1.1, section 8.7; TC1602A-01T specification, pp. 3 to 4128 × 64 pixels, text and graphics16 characters × 2 lines, 5x8 dot cells, text only
LightSSD1306 datasheet Rev 1.1, section 1; PCF8574 backpack backlight jumper and transistorSelf-emissive OLED pixels, no backlightLCD with a backlight switched by the backpack
SupplySSD1306 datasheet Rev 1.1, section 2; TC1602A-01T specification, p. 53.3 V or 5 V on the module (chip logic 1.65 V to 3.3 V)5.0 V (4.8 V to 5.2 V)
I2C addressSSD1306 datasheet Rev 1.1, section 8.1.5; TI PCF8574 and PCF8574A datasheets, p. 130x3C, or 0x3D with SA0 high0x20 to 0x27 (PCF8574) or 0x38 to 0x3F (PCF8574A); usually 0x27 or 0x3F
I2C clockSSD1306 datasheet Rev 1.1, section 13; TI PCF8574 datasheet SCPS068K, p. 5Up to 400 kHz100 kHz max
Host RAM usedSSD1306 datasheet Rev 1.1, section 8.7; Hitachi HD44780U datasheet, p. 11 KB frame buffer with a buffered libraryNone: text is kept in the LCD controller
Pull-ups on SDA and SCLOLED module and PCF8574 backpack boards; SSD1306 datasheet Rev 1.1, section 11 (inputs to VDD + 0.3 V)On board, to the regulated 3.3 VOn board, to VCC (5 V)
Custom symbolsSSD1306 datasheet Rev 1.1, section 8.7; Hitachi HD44780U datasheet, p. 13Any bitmap8 user-defined 5x8 glyphs in CGRAM
SizeSSD1306 module listing; TC1602A-01T specification, p. 40.96 inch panel80 × 36 mm board

Which one to pick

Pick the OLED 128x64 when
  • Icons, graphs, large digits or several fonts: every one of the 128 × 64 pixels is addressable (SSD1306 datasheet, section 8.7).
  • 3.3 V boards such as the ESP32 or Pico: the module runs from 3.3 V and its pull-ups stay at 3.3 V.
  • Small enclosures and wearables, and screens read at an angle or in the dark.
Pick the LCD 1602 I2C when
  • Plain status text, menus and readings on an Uno or Nano: no frame buffer, so the 2 KB of SRAM stays free.
  • A larger, cheaper readout that people read from across a bench: 80 × 36 mm with 32 character cells (TC1602A-01T specification, p. 4).
  • Beginners: LiquidCrystal_I2C prints text with setCursor() and print(), with no buffer to push.

Swapping one for the other

What changes in the wiring and the code.

  • The four wires stay: GND, VCC, SDA, SCL to the same I2C pins (A4 and A5 on an Uno). Check the silkscreen, because OLED modules come in GND-VCC and VCC-GND orders.
  • Power changes when moving to the LCD: give it 5 V, since at 3.3 V the text fades out (TC1602A-01T specification, p. 5). On a 3.3 V board its backpack pulls SDA and SCL to 5 V, so add a level shifter.
  • The address changes from 0x3C to 0x27 or 0x3F; run an I2C scanner and pass what it finds (SSD1306 datasheet, section 8.1.5; TI PCF8574 datasheets, p. 13). Both can share one bus.
  • The library changes: Adafruit_SSD1306 or U8g2 for the OLED, which draw into a buffer and need display() to show it; LiquidCrystal_I2C for the LCD, which writes text straight to the controller. Layouts move from pixel coordinates to 16 columns and 2 rows.
  • Drop the I2C clock to 100 kHz when the LCD is on the bus: the PCF8574 is rated 100 kHz max (TI datasheet, p. 5).

OLED 128x64 or LCD 1602 I2C: questions

Which is better for an Arduino Uno, the OLED or the 1602 LCD?

For text, the 1602 LCD: it keeps its characters in its own controller, while a buffered OLED library takes 1 KB of the Uno's 2 KB of SRAM (SSD1306 datasheet, section 8.7). For graphics, the OLED, with U8g2's page-buffer mode if RAM runs short.

Can I use the 1602 LCD on a 3.3 V ESP32 like the OLED?

Yes, with care. The LCD needs 5 V on VCC (TC1602A-01T specification, p. 5), and its backpack pulls SDA and SCL up to that 5 V, above the ESP32's input rating. Add a bidirectional level shifter. The OLED runs from 3.3 V directly (SSD1306 datasheet, section 2).

Can the OLED and the LCD share one I2C bus?

Yes. They answer at different addresses, 0x3C for the OLED and 0x27 or 0x3F for the LCD backpack (SSD1306 datasheet, section 8.1.5; TI PCF8574 datasheets, p. 13). Run the bus at 100 kHz, the PCF8574's limit (p. 5), and mind that the LCD's pull-ups go to 5 V.

Which display is easier to read?

The OLED's pixels emit their own light, so it reads in the dark and at wide angles; the 1602 is physically larger, 80 × 36 mm for 32 characters (TC1602A-01T specification, p. 4), and its backlit text reads from farther away on a bench.

Why is my display blank after swapping?

Usually the address: the OLED is 0x3C or 0x3D and the LCD 0x27 or 0x3F, so run an I2C scanner. On the LCD also turn the contrast trimpot on the back and call lcd.backlight(); on the OLED call display() after drawing.

The two references

Checked on 2026-10-29 against 4 sources, the makers’ datasheets first.

For AI assistants

This comparison as plain Markdown. /compare/oled-128x64-vs-lcd-1602-i2c.md

What will you build with it?