SegLCDLib
Loading...
Searching...
No Matches
Supported LCD Displays

All displays use segment LCD technology controlled by I2C or 3-wire serial protocol. Select by controller type and application.

Development status: Versions 0.0.x are alpha/prerelease builds. API and behavior may change at any time, including breaking changes without semantic-versioning major bumps.

</blockquote>

LCD Build Macros

All LCD model implementations are enabled by default. To build only selected LCD models, define SEGLCD_DISABLE_ALL_LCDS and then enable each required model with its concrete macro:

LCD class Enable macro
SegLCD_HT1621_4SegDegree SEGLCD_ENABLE_HT1621_4SEGDEGREE
SegLCD_HT1621_6SegBat SEGLCD_ENABLE_HT1621_6SEGBAT
SegLCD_HT1621_LCM0844 SEGLCD_ENABLE_HT1621_LCM0844
SegLCD_HT1621_LCM59011 SEGLCD_ENABLE_HT1621_LCM59011
SegLCD_HT1621_LCM88128 SEGLCD_ENABLE_HT1621_LCM88128
SegLCD_HT1621_Raw SEGLCD_ENABLE_HT1621_RAW
SegLCD_HT1622_10Dig16Seg SEGLCD_ENABLE_HT1622_10DIG16SEG
SegLCD_HT1622_Raw SEGLCD_ENABLE_HT1622_RAW
SegLCD_PCF85134_Raw SEGLCD_ENABLE_PCF85134_RAW
SegLCD_PCF85134_XygaxSegI2C SEGLCD_ENABLE_PCF85134_XYGAX_SEG_I2C
SegLCD_PCF85176_2Row4DigSigBatPwr SEGLCD_ENABLE_PCF85176_2ROW4DIGSIGBATPWR
SegLCD_PCF85176_4DR821B SEGLCD_ENABLE_PCF85176_4DR821B
SegLCD_PCF85176_6DigitSignalBatteryProgress SEGLCD_ENABLE_PCF85176_6DIGSIGBATTPROGRESS
SegLCD_PCF85176_OneDigit SEGLCD_ENABLE_PCF85176_ONEDIGIT
SegLCD_PCF85176_Raw SEGLCD_ENABLE_PCF85176_RAW
SegLCD_PCF85176_T1T2Lcd SEGLCD_ENABLE_PCF85176_T1T2LCD
SegLCD_PCF85176_TempHumidity SEGLCD_ENABLE_PCF85176_TEMPHUM
SegLCD_PCF8576_4Seg6SegMaintSegBatUnits SEGLCD_ENABLE_PCF8576_4SEG6SEGMAINTSEGBATUNITS
SegLCD_VK0192_5DigSigBattProgress SEGLCD_ENABLE_VK0192_5DIGSIGBATTPROGRESS
SegLCD_VK0192_Raw SEGLCD_ENABLE_VK0192_RAW

Example:

-DSEGLCD_DISABLE_ALL_LCDS
-DSEGLCD_ENABLE_PCF85134_XYGAX_SEG_I2C

PCF85134 (I2C) Displays

Xygax SEG_I2C

Specifications:

  • Digits: Up to 6 positions, depending on LCD glass population
  • Features: Static segment layout, decimal handling through inline print() notation
  • Wiring: I2C (SDA, SCL)
  • I2C Address: 0x38 (SA0=0) or 0x39 (SA0=1)
  • Controller: PCF85134
  • Board Marking: SEG_I2C_V1.01 / SEG_I2C_V1.02
  • Image:
  • Example: examples/PCF85134/XygaxSegI2C/
  • Purchase: https://github.com/xygax

Notes:

  • Board version does not currently affect the library mapping.
  • Known glass variants include 6-position and 4-position populations. The driver keeps a 6-byte RAM map for the largest known wiring.
  • Some 4-position glass sketches show a down-arrow where the last decimal point would normally be. This is not implemented until RAM mapping is verified on hardware.

Code Example:

#include <Wire.h>
SegTransportI2CArduino transport(Wire);
lcd.init();
lcd.print("123.4");
PCF85134 driver for Xygax SEG_I2C LCD board.
Xygax SEG_I2C LCD board with flexible segment layout (PCF85134).
Definition SegLCD_PCF85134_XygaxSegI2C.h:20
Arduino TwoWire implementation of the I2C transport.
Definition SegTransportArduino.h:38

PCF85176 (I2C) Displays

RAW LCD

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/

6-Digit Signal/Battery/Progress

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://www.aliexpress.com/item/1005008425148644.html

Code Example:

#include <Wire.h>
SegTransportI2CArduino transport(Wire);
lcd.init();
lcd.setCursor(0, 0);
lcd.print(123456);
lcd.setSignalLevel(3); // 3 of 4 bars
lcd.setBatteryLevel(2); // Medium battery
PCF85176 driver for 6-digit LCD with signal/battery/progress.
6-digit LCD with signal/battery/progress indicators (PCF85176).
Definition SegLCD_PCF85176_6DigSigBattProgress.h:21

2-Row 4-Digit Signal/Battery/Power

Specifications:

  • 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 <Wire.h>
SegTransportI2CArduino transport(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);
PCF85176 driver for 2-row 4-digit LCD with signal/battery/power.
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:14

One Digit (Up to 5 Segments)

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

Temperature/Humidity

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 <Wire.h>
SegTransportI2CArduino transport(Wire);
lcd.init();
lcd.setCursor(0, 0); // Temperature row
lcd.print(23); // 23°C
lcd.setCursor(1, 0); // Humidity row
lcd.print(45); // 45%
PCF85176 driver for temperature/humidity LCD.
Temperature/humidity LCD with dual rows (PCF85176).
Definition SegLCD_PCF85176_TempHum.h:21

T1T2 LCD

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/

4DR821B / 4DT821B (Tesla)

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/

4+6 Digit Maint/Bat/Sig/Units

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

HT1621 (3-Wire Serial) Displays

4-Digit with Degree Symbols

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:

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°"
HT1621 driver for 4-digit LCD with degree symbol and colon.
4-digit 7-segment LCD with degree symbol and colon (HT1621).
Definition SegLCD_HT1621_4SegDegree.h:21
Arduino GPIO implementation of the 3-wire transport.
Definition SegTransportArduino.h:14

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

6-Digit with Battery

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://www.aliexpress.com/item/1005006419794882.html

Code Example:

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 battery
HT1621 driver for 6-digit LCD with battery indicator.
6-digit 7-segment LCD with battery indicator (HT1621).
Definition SegLCD_HT1621_6SegBat.h:21

LCM0844

Specifications:

  • 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/w/wholesale-LCM0844.html

Code Example:

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);
HT1621 driver for 6-digit LCD with battery indicator.
LCM0844 LCD (HT1621).
Definition SegLCD_HT1621_LCM0844.h:18

LCM88128

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: (N/A) whzkyd.com

Code Example:

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);
HT1621 driver for LCM88128 LCD with battery, PV panel, and diagram indicators.
LCM88128 LCD (HT1621).
Definition SegLCD_HT1621_LCM88128.h:19
@ SYMBOL_LINE_WIND_TO_ACDC
Definition SegLCD_HT1621_LCM88128.h:114
@ UNIT_RIGHT_VOLT
Definition SegLCD_HT1621_LCM88128.h:49

LCM59011

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:

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);
HT1621 driver for LCM59011 4-digit LCD with wifi/battery/misc symbols.
LCM59011 LCD (HT1621).
Definition SegLCD_HT1621_LCM59011.h:28
@ UNIT_PERCENT
Definition SegLCD_HT1621_LCM59011.h:33
@ LABEL_MCB
Definition SegLCD_HT1621_LCM59011.h:38
@ SYMBOL_ECO
Definition SegLCD_HT1621_LCM59011.h:44
@ SYMBOL_BLUETOOTH
Definition SegLCD_HT1621_LCM59011.h:49

RAW LCD (HT1621)

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/

HT1622 (3-Wire Serial, Enhanced)

10-Digit 16-Segment Display

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

RAW LCD (HT1622)

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/

VK0192 (3-Wire Serial)

5-Digit Signal/Battery/Progress

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, same protocol/timing family as HT1621/HT1622
  • Controller: VK0192 (24×8 bit RAM). This module's digits map to non-sequential RAM addresses due to its SEG/COM pin layout — a property of this specific display, not the VK0192 controller.
  • Image:
  • Example: examples/VK0192/5DigSigBattProgress/
  • Purchase: https://aliexpress.com/item/1005009000021475.html

Code Example:

const int CLK = 5, DATA = 6, CS = 7;
SegTransport3WireArduino transport(DATA, CLK);
lcd.init();
lcd.print(12345);
lcd.setSignalLevel(3); // 3 of 4 bars
lcd.setBatteryLevel(1); // Low battery
VK0192 driver for 5-digit LCD with signal/battery/progress indicators.
5-digit 7-segment LCD with signal/battery/progress (VK0192).
Definition SegLCD_VK0192_5DigSigBattProgress.h:22

Quick Comparison

Controller Protocol Pins I2C Addr Examples Complexity
PCF85134 I2C 2 0x38/0x39 2 Simple
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 Medium

Adding a New Display

Don't see your LCD? Follow the Adding New LCD guide to create support for any segment display.

Resources