The standard 16x2 character LCD uses the Hitachi HD44780 controller and features a 16-pin parallel interface. Pin 1 is Ground (GND), Pin 2 is VCC (5V), and Pin 3 is V0 (contrast control). While this parallel pinout has been the hobbyist standard for decades, modern builds frequently use I2C backpacks or SPI TFT displays to save GPIO pins. Below is the exact reference data you need to wire, debug, and identify these modules on the bench.
The Standard 16-Pin HD44780 LCD Pinout Reference
The following table details the ubiquitous 16-pin parallel interface. Wire colors are listed using both the universal hobbyist convention and the IEC 60445 standard for low-voltage DC circuits, which is increasingly adopted in EU and professional prototyping environments.
| Pin | Symbol | Name | Function | Hobbyist Wire | IEC 60445 DC Wire |
|---|---|---|---|---|---|
| 1 | VSS | Ground | Logic and backlight ground (0V) | Black | Blue |
| 2 | VDD | VCC | Logic power supply (4.7V to 5.3V) | Red | Brown |
| 3 | V0 | Contrast | Contrast voltage (0V to 1V typical) | Orange | Grey |
| 4 | RS | Register Select | 0 = Command, 1 = Data | Yellow | White |
| 5 | R/W | Read/Write | 0 = Write, 1 = Read (Tie to GND) | Green | White |
| 6 | E | Enable | Clock pulse to latch data | Blue | White |
| 7 | D0 | Data Bit 0 | Unused in 4-bit mode | - | - |
| 8 | D1 | Data Bit 1 | Unused in 4-bit mode | - | - |
| 9 | D2 | Data Bit 2 | Unused in 4-bit mode | - | - |
| 10 | D3 | Data Bit 3 | Unused in 4-bit mode | - | - |
| 11 | D4 | Data Bit 4 | Data line 1 (4-bit mode) | Purple | Pink |
| 12 | D5 | Data Bit 5 | Data line 2 (4-bit mode) | Grey | Pink |
| 13 | D6 | Data Bit 6 | Data line 3 (4-bit mode) | White | Pink |
| 14 | D7 | Data Bit 7 | Data line 4 (4-bit mode) | Brown | Pink |
| 15 | A | Anode | Backlight LED positive (5V via resistor) | Red (Stripe) | Brown (Stripe) |
| 16 | K | Cathode | Backlight LED ground | Black (Stripe) | Blue (Stripe) |
Rows People Get Wrong & Faded Marking Recovery
Even experienced makers trip over specific pins on the HD44780. Here is where the mistakes happen and how to fix them.
The 'Rows People Get Wrong' Notes
- Pin 3 (V0 / Contrast): Tying this directly to GND yields maximum contrast (often resulting in solid black blocks), while tying it to 5V yields a completely blank screen. You must use a 10kΩ potentiometer as a voltage divider, or a fixed 1kΩ resistor to GND for a safe 'always-readable' default on most 5V modules.
- Pin 5 (R/W): In 99% of hobby projects, you only write to the display. Always tie Pin 5 directly to GND. Leaving it floating or accidentally wiring it to a GPIO pin without strict timing control will cause the LCD to lock up or display garbage characters.
- Pins 15 & 16 (Backlight): Before applying 5V to Pin 15 (Anode), inspect the PCB near the pins. Look for an SMD resistor marked '101' (100Ω) or '151' (150Ω). If the board lacks this resistor (or if it is marked '000' indicating a zero-ohm jumper), you must add a 220Ω through-hole resistor in series with your 5V supply. Applying 5V directly to an unprotected backlight will burn out the LEDs in seconds.
If the silk-screen numbering on your LCD PCB is faded or scratched off, do not guess. Set your digital multimeter to continuity mode. Probe the metal bezel of the LCD (which is tied to ground). Touch your other probe to the pins on the far left or right of the header. The pin that beeps is either Pin 1 (GND) or Pin 16 (Cathode). From there, Pin 2 (VCC) is immediately adjacent to Pin 1, and Pin 15 (Anode) is adjacent to Pin 16. Trace the wide copper ground pour on the back of the PCB to confirm Pin 1 vs Pin 16.
Interface Standard Variants: I2C Backpacks vs. SPI TFTs
While the 16-pin parallel standard is universal for character displays, modern embedded design often favors serial interfaces to conserve microcontroller GPIOs. The table below compares the standard parallel HD44780 against the PCF8574 I2C backpack and the ILI9341 SPI TFT standard.
| Criteria | HD44780 Parallel (16-Pin) | PCF8574 I2C Backpack (4-Pin) | ILI9341 / ST7789 SPI TFT (10-Pin) |
|---|---|---|---|
| Pins Required | 6 (in 4-bit mode) | 2 (SDA, SCL) | 5 (MOSI, SCK, CS, DC, RST) |
| Logic Voltage | 5V strictly | 5V (Backpack), 3.3V/5V I2C | 3.3V strictly |
| Typical Cost (2026) | $2.00 - $3.50 | $3.50 - $5.00 | $8.00 - $14.00 |
| Best Use Case | Simple text, low-speed logging | Text menus, saving GPIO pins | Graphics, charts, high-speed UI |
| Library Standard | LiquidCrystal (Built-in) | LiquidCrystal_I2C | TFT_eSPI / Adafruit_GFX |
Choose Parallel when you have abundant GPIOs and need the absolute lowest latency for text updates without I2C bus overhead. Choose I2C when you are pin-constrained on an Arduino Nano or ESP8266 and only need text. Choose SPI TFT when you need to render bitmaps, graphs, or color UI elements, and ensure you use a 3.3V logic microcontroller.
Frequently Asked Questions
What is the correct LCD pinout for an I2C backpack module?
An I2C backpack (typically based on the NXP PCF8574 or PCF8574A chip) reduces the 16-pin interface to just 4 pins: GND, VCC, SDA, and SCL. Wire GND to your microcontroller ground, VCC to 5V, SDA to the hardware SDA pin (A4 on Arduino Uno, GPIO 21 on ESP32), and SCL to the hardware SCL pin (A5 on Arduino Uno, GPIO 22 on ESP32). Note that PCF8574 backpacks usually default to I2C address 0x27, while PCF8574A variants default to 0x3F. You can verify the exact address using an I2C scanner sketch.
How do I wire a 16-pin LCD pinout to an ESP32 without frying it?
This is a critical voltage mismatch issue. The HD44780 LCD requires 5V for VCC and expects 5V logic levels on the data pins. The ESP32 operates at 3.3V and its GPIO pins are not 5V tolerant. Feeding 5V from the LCD's data lines back into the ESP32 will destroy the microcontroller's input buffers. To safely use a parallel 16-pin LCD with an ESP32, you must use a bidirectional logic level shifter (such as a BSS138-based 4-channel shifter) between the ESP32 GPIOs and the LCD data pins. Alternatively, bypass the parallel LCD entirely and use a 3.3V-native SPI TFT display like the ST7789, which interfaces directly with ESP32 GPIOs safely.
Why is my LCD backlight on but no text is showing?
If the backlight is illuminated but the screen is blank or shows only solid white/grey boxes, your contrast voltage (Pin 3 / V0) is incorrect. The liquid crystals require a specific forward bias voltage relative to VCC to become opaque. If Pin 3 is tied directly to 5V, the contrast is zero. If tied directly to GND, the contrast is maxed out (solid blocks). Connect a 10kΩ potentiometer with the wiper to Pin 3, one outer leg to GND, and the other outer leg to 5V. Slowly turn the pot until the characters appear clearly against the background. If you don't have a pot, a 1kΩ resistor between Pin 3 and GND works for most standard green/blue backlight modules.






