All displays use segment LCD technology controlled by I2C or 3-wire serial protocol. Select by controller type and application.
Purpose: Testing and debugging new LCD implementations
- Type: Test harness
- Wiring: I2C only (2 pins: SDA, SCL)
- Features: Send raw segment data directly to controller
- Use Case: Prototype new displays before creating dedicated driver
- Example:
examples/PCF85176/RawLCD/
Specifications:
- Digits: 6 7-segment digits
- Features: Signal strength (4 bars), Battery level (3 states), Progress indicator
- Wiring: I2C (SDA, SCL)
- I2C Address: 0x38 (SA0=0) or 0x39 (SA0=1)
- Controller: PCF85176
- Image:

- Example:
examples/PCF85176/6DigSigBattProgress/ - Purchase: https://aliexpress.com/item/1005009214559485.html
Code Example:
#include "SegLCD_PCF85176_6DigSigBattProgress.h"
SegLCD_PCF85176_6DigSigBattProgress lcd(Wire);
lcd.init();
lcd.setCursor(0, 0);
lcd.print(123456);
lcd.setSignalLevel(3); // 3 of 4 bars
lcd.setBatteryLevel(2); // Medium batterySpecifications:
- Digits: 2 rows × 4 digits
- Features: Signal (1 bit), Battery (4 levels), Power icon
- Wiring: I2C (SDA, SCL)
- I2C Address: 0x38 (SA0=0) or 0x39 (SA0=1)
- Controller: PCF85176
- Image:

- Example:
examples/PCF85176/2Row4DigSigBatPwr/
Code Example:
#include "SegLCD_PCF85176_2Row4DigSigBatPwr.h"
SegLCD_PCF85176_2Row4DigSigBatPwr lcd(Wire);
lcd.init();
lcd.setCursor(0, 0);
lcd.print(1234);
lcd.setCursor(1, 0);
lcd.print(5678);
lcd.setSignalLevel(1);
lcd.setBatteryLevel(4);
lcd.setPowerSymbol(true);Specifications:
- Digits: 1 custom segment display
- Features: Customizable segment layout (up to 5 segments)
- Wiring: I2C (SDA, SCL)
- I2C Address: 0x38 (SA0=0) or 0x39 (SA0=1)
- Controller: PCF85176
- Image:

- Example:
examples/PCF85176/OneDigit/ - Purchase: https://aliexpress.com/item/1005005410565386.html
Specifications:
- Digits: 6 7-segment digits
- Features: Temperature and humidity symbols
- Wiring: I2C (SDA, SCL)
- I2C Address: 0x38 (SA0=0) or 0x39 (SA0=1)
- Controller: PCF85176
- Image:

- Example:
examples/PCF85176/TempHumidity/ - Purchase: https://aliexpress.com/item/1005003044283980.html
Code Example:
#include "SegLCD_PCF85176_TempHum.h"
SegLCD_PCF85176_TempHum lcd(Wire);
lcd.init();
lcd.setCursor(0, 0); // Temperature row
lcd.print(23); // 23°C
lcd.setCursor(1, 0); // Humidity row
lcd.print(45); // 45%Specifications:
- Layout: 3-row display (Clock, T1 Label, T2 Label)
- Features: Multi-zone control for temperature sensors
- Wiring: I2C (SDA, SCL)
- I2C Address: 0x38 (SA0=0) or 0x39 (SA0=1)
- Controller: PCF85176
- Image:

- Example:
examples/PCF85176/T1T2Lcd/
Specifications:
- Segments: Custom Tesla dashboard display
- Features: Multiple symbol zones
- Wiring: I2C (SDA, SCL)
- I2C Address: 0x38 (SA0=0) or 0x39 (SA0=1)
- Controller: PCF85176
- Image:

- Reference: https://www.teslakatalog.cz/4DR821B.html
- Example:
examples/PCF85176/4DR821B/
Specifications:
- Digits: 4 digits (main) + 6 digits (status)
- Features: Maintenance, Battery, Signal, Unit symbols
- Wiring: I2C (SDA, SCL)
- Controller: PCF8576 (enhanced variant)
- Image:

- Example:
examples/PCF8576/4Seg6SegMaintSegBatUnits/ - Purchase: https://aliexpress.com/item/1005009599538480.html
Specifications:
- Digits: 4 7-segment digits
- Features: Degree symbol, Colon for time display
- Wiring: 3 pins (CLK, DATA, CS) + Power + GND
- Protocol: 3-wire serial
- Controller: HT1621 (integrated in module)
- Image:

- Example:
examples/HT1621/4DigDeg/ - Purchase: https://aliexpress.com/item/1005009301473702.html
Code Example:
#include "SegLCD_HT1621_4SegDegree.h"
const int CLK = 5, DATA = 6, CS = 7;
SegTransport3WireArduino transport(DATA, CLK);
SegLCD_HT1621_4SegDegree lcd(transport, CS);
lcd.init();
lcd.setCursor(0, 0);
lcd.print(25); // Display "25°"Wiring Example (Arduino Uno):
HT1621 Module → Arduino
CLK → Pin 5
DATA → Pin 6
CS (chip sel) → Pin 7
VCC → 3.3V or 5V
GND → GND
Specifications:
- Digits: 6 7-segment digits
- Features: Battery level indicator (3-4 states)
- Wiring: 3 pins (CLK, DATA, CS) + Power + GND
- Protocol: 3-wire serial
- Controller: HT1621 (integrated)
- Image:

- Example:
examples/HT1621/6DigBat/ - Purchase: https://aliexpress.com/item/1005005555160141.html
Code Example:
#include "SegLCD_HT1621_6SegBat.h"
const int CLK = 5, DATA = 6, CS = 7;
SegTransport3WireArduino transport(DATA, CLK);
SegLCD_HT1621_6SegBat lcd(transport, CS);
lcd.init();
lcd.print(123456);
lcd.setBatteryLevel(2); // Medium batterySpecifications:
- Digits: 8 7-segment digits
- Features: Left/right units, status labels, battery/load indicators, power-flow symbols
- Wiring: 3 pins (CLK, DATA, CS) + Power + GND
- Protocol: 3-wire serial
- Controller: HT1621 (integrated)
- Image:

- Example:
examples/HT1621/LCM0844/ - Purchase: https://www.aliexpress.com/item/1005010575036798.html
Code Example:
#include "SegLCD_HT1621_LCM0844.h"
const int CLK = 5, DATA = 6, CS = 7;
SegTransport3WireArduino transport(DATA, CLK);
SegLCD_HT1621_LCM0844 lcd(transport, CS);
lcd.init();
lcd.print("12.34");
lcd.setBatteryLevel(4);
lcd.setLoadLevel(3);Specifications:
- Digits: 8 7-segment digits
- Features: Left/right units, status labels, battery/load/PV indicators, power-flow symbols
- Wiring: 3 pins (CLK, DATA, CS) + Power + GND
- Protocol: 3-wire serial
- Controller: HT1621 (integrated)
- Image:

- Example:
examples/HT1621/LCM88128/ - Purchase: https://www.aliexpress.com/item/1005010569015863.html
Code Example:
#include "SegLCD_HT1621_LCM88128.h"
const int CLK = 5, DATA = 6, CS = 7;
SegTransport3WireArduino transport(DATA, CLK);
SegLCD_HT1621_LCM88128 lcd(transport, CS);
lcd.init();
lcd.print("12.34");
lcd.setPVLevel(4);
lcd.setBatteryLevel(3);
lcd.setLoadLevel(2);
lcd.setUnits(SegLCD_HT1621_LCM88128::UNIT_RIGHT_VOLT);
lcd.setSymbols(SegLCD_HT1621_LCM88128::SYMBOL_LINE_WIND_TO_ACDC);Specifications:
- Digits: 4 7-segment digits
- Features: Colon, wifi signal, battery indicator, MCB label, units, status symbols
- Wiring: 3 pins (CLK, DATA, CS) + Power + GND
- Protocol: 3-wire serial
- Controller: HT1621 (integrated)
- Image:

- Example:
examples/HT1621/LCM59011/
Code Example:
#include "SegLCD_HT1621_LCM59011.h"
const int CLK = 5, DATA = 6, CS = 7;
SegTransport3WireArduino transport(DATA, CLK);
SegLCD_HT1621_LCM59011 lcd(transport, CS);
lcd.init();
lcd.print("12:3");
lcd.setSignalLevel(4);
lcd.setBatteryLevel(5);
lcd.setLabels(SegLCD_HT1621_LCM59011::LABEL_MCB);
lcd.setUnits(SegLCD_HT1621_LCM59011::UNIT_PERCENT);
lcd.setSymbols(SegLCD_HT1621_LCM59011::SYMBOL_ECO | SegLCD_HT1621_LCM59011::SYMBOL_BLUETOOTH);Purpose: Testing and prototyping with HT1621
- Type: Test harness
- Wiring: 3-wire serial (CLK, DATA, CS)
- Features: Send raw segment data to HT1621
- Example:
examples/HT1621/RawLCD/
Specifications:
- Digits: 10 digits with 16-segment layout
- Features: Enhanced segment capability (alphanumeric capable)
- Wiring: 3 pins (CLK, DATA, CS) + Power + GND
- Protocol: 3-wire serial (4μs timing)
- Controller: HT1622 (integrated, larger RAM)
- Image:

- Example:
examples/HT1622/10Digit16SegmentLCD/ - Purchase: https://aliexpress.com/item/1005003062619251.html
Purpose: Testing and prototyping with HT1622
- Type: Test harness
- Wiring: 3-wire serial (CLK, DATA, CS)
- Features: Send raw segment data to HT1622
- Timing: Requires 4μs pulse width
- Example:
examples/HT1622/RawLCD/
Specifications:
- Digits: 5 7-segment digits
- Features: Signal bars (4), Battery level (3), Progress indicator
- Wiring: 3 pins (CLK, DATA, CS) + Power + GND
- Protocol: 3-wire serial (4μs timing)
- Controller: VK0192 (24×8 bit RAM, irregular addressing)
- Image:

- Example:
examples/VK0192/5DigSigBattProgress/ - Purchase: https://aliexpress.com/item/1005009000021475.html
Code Example:
#include "SegLCD_VK0192_5DigSigBattProgress.h"
const int CLK = 5, DATA = 6, CS = 7;
SegTransport3WireArduino transport(DATA, CLK);
SegLCD_VK0192_5DigSigBattProgress lcd(transport, CS);
lcd.init();
lcd.print(12345);
lcd.setSignalLevel(3); // 3 of 4 bars
lcd.setBatteryLevel(1); // Low battery| Controller | Protocol | Pins | I2C Addr | Examples | Complexity |
|---|---|---|---|---|---|
| PCF85176 | I2C | 2 | 0x38/0x39 | 7 | Simple |
| PCF8576 | I2C | 2 | 0x38/0x39 | 1 | Simple |
| HT1621 | 3-wire | 3 | N/A | 4 | Medium |
| HT1622 | 3-wire | 3 | N/A | 2 | Medium |
| VK0192 | 3-wire | 3 | N/A | 1 | Advanced |
Don't see your LCD? Follow the Adding New LCD guide to create support for any segment display.
- Getting Started: Getting Started Guide
- Architecture: Library Architecture
- Controller Details: Controllers
- Creating Drivers: Adding New LCD
- API Reference: Full API Documentation