SegLCDLib
Loading...
Searching...
No Matches
SegDriver_VK0192 Class Reference

VK0192 LCD segment display driver. More...

#include <SegDriver_VK0192.h>

Inheritance diagram for SegDriver_VK0192:
SegDriver_3Wire SegLCDLib SegLCD_VK0192_5DigSigBattProgress SegLCD_VK0192_Raw

Public Member Functions

 SegDriver_VK0192 (SegTransport3Wire &transport, uint8_t chipselect)
 Constructor for VK0192 segment driver.
 
void flush (uint8_t startAddr, uint8_t length) override
 Flush specific range of buffered changes to the display.
 
virtual void flush ()
 Flush all buffered changes to the display.
 
virtual void flush (uint8_t startAddr, uint8_t length)
 Flush specific range of buffered changes to the display.
 
- Public Member Functions inherited from SegDriver_3Wire
 SegDriver_3Wire (SegTransport3Wire &transport, uint8_t chipselect)
 Constructor for 3-wire serial LCD driver.
 
void init () override
 Initialize GPIO pins for communication.
 
void on () override
 Turn the display on.
 
void off () override
 Turn the display off.
 
void command (uint8_t command) override
 Send command to the controller.
 
- Public Member Functions inherited from SegLCDLib
virtual ~SegLCDLib ()
 Virtual destructor to ensure proper cleanup in derived classes.
 
virtual void clear ()
 Clear all visible segments on the display.
 
void home ()
 Set cursor to 0, 0 without clear display.
 
virtual void setCursor (uint8_t row, uint8_t col)
 Set cursor on exact digit.
 
virtual size_t write (uint8_t)
 
void initBacklight (int8_t backlightPin, BacklightMode backlightMode=BACKLIGHT_DIGITAL, bool backlightActiveHigh=true)
 Initialize GPIO backlight control.
 
virtual void setBacklight (bool state)
 Set backlight state (on/off).
 
virtual void setBacklight (int brightness)
 Set backlight brightness (0-255).
 
void setAutoFlush (bool enable)
 Enable or disable autoflush mode.
 
bool getAutoFlush () const
 Get current autoflush state.
 
const uint8_t * getRamBuffer () const
 Get pointer to internal RAM buffer (read-only).
 
size_t getRamBufferSize () const
 Get size of internal RAM buffer in bytes.
 

Static Public Attributes

static constexpr uint8_t MAX_ADDRESS = 46
 Last valid start HW nibble address for byte write.
 

Additional Inherited Members

- Public Types inherited from SegLCDLib
enum  BacklightMode { BACKLIGHT_DIGITAL , BACKLIGHT_PWM }
 Backlight mode for GPIO control. More...
 
- Protected Member Functions inherited from SegDriver_3Wire
virtual void _writeRam (uint8_t *data, size_t length, uint8_t address)
 Low-level method to write a data buffer to display RAM.
 
void _writeRam (uint8_t data, uint8_t address=0)
 Write multiple bytes to RAM starting at specified address.
 
virtual void _writeRam (uint8_t *data, size_t length, uint8_t address)=0
 Write multiple bytes to RAM starting at specified address.
 
- Protected Member Functions inherited from SegLCDLib
void _setFlag (uint8_t mask)
 Set a specific flag bit.
 
void _clearFlag (uint8_t mask)
 Clear a specific flag bit.
 
bool _isFlagSet (uint8_t mask) const
 Check if a specific flag bit is set.
 
void _clearAllFlags ()
 Clear all flags.
 
bool _dotWrite (uint8_t ch, int8_t minCol, int8_t maxCol, int8_t ramOffset)
 Write decimal point.
 
void _dotClearCur (int8_t minCol, int8_t maxCol)
 Clear current decimal (overwrite).
 
void _colonClearIfNotFlagged (uint8_t ch, uint8_t colonCol, uint8_t colonFlag)
 Clear colon if its flag is not set.
 
virtual void _setDecimal (uint8_t, uint8_t, bool)
 Virtual method for setting decimal point.
 
virtual void _setColon (uint8_t, uint8_t, bool)
 Virtual method for setting colon.
 
void _allocateBuffer (size_t size)
 Allocate RAM buffer for display data.
 
void _writeRamMasked (uint8_t data, uint8_t address, uint8_t mask=0xFF)
 Write to display RAM with nibble-aware masking support.
 
void _writeRam (uint8_t data, uint8_t address=0)
 Low-level method to write a single byte to display RAM.
 
uint8_t _get_char_value (char ch)
 Helper method to convert a character to its segment representation.
 
uint16_t _get_16char_value (char ch)
 Helper method to convert a character to its 16-segment representation.
 
- Protected Attributes inherited from SegDriver_3Wire
SegTransport3Wire_transport
 
uint8_t _cs
 Chip select pin for the display.
 
- Protected Attributes inherited from SegLCDLib
bool _autoFlush = true
 Autoflush mode enabled flag (default: true for LCD API 1.0 compatibility).
 
int8_t _backlightPin = -1
 Backlight GPIO pin (-1 if disabled)
 
BacklightMode _backlightMode = BACKLIGHT_DIGITAL
 Backlight mode (DIGITAL or PWM)
 
bool _backlightActiveHigh = true
 Backlight active high flag.
 
uint8_t _backlightBrightness = 0
 Cached backlight brightness.
 
uint8_t _displayFlags = 0
 LEDC channel for old ESP32 Arduino Core (2.0.x)
 
uint8_t * _ramBuffer = nullptr
 Dynamic RAM buffer for display data (allocated by derived classes).
 
size_t _ramBufferSize = 0
 Size of allocated RAM buffer in bytes.
 
uint8_t _cursorRow = 0
 Current Row.
 
uint8_t _cursorCol = 0
 Current Column.
 
- Static Protected Attributes inherited from SegLCDLib
static constexpr uint8_t FLAG_PENDING_DOT = 0x80
 Common flag for decimal handling when RAM offset is 0.
 

Detailed Description

VK0192 LCD segment display driver.

This driver extends the 3-wire base driver with VK0192-specific features and stricter timing requirements.

Constructor & Destructor Documentation

◆ SegDriver_VK0192()

SegDriver_VK0192::SegDriver_VK0192 ( SegTransport3Wire transport,
uint8_t  chipselect 
)

Constructor for VK0192 segment driver.

Parameters
chipselectChip select pin for the display
dataData pin for the display
writeWrite clock pin for the display
readRead clock pin for the display (optional, default is -1)

Member Function Documentation

◆ flush() [1/3]

void SegLCDLib::flush ( )
virtual

Flush all buffered changes to the display.

Writes the entire display buffer to the hardware. This is useful when autoflush is disabled to batch multiple write() calls into a single hardware update cycle.

Safe to call even when autoflush is enabled (no effect).

See also
setAutoFlush()

Reimplemented from SegLCDLib.

◆ flush() [2/3]

void SegLCDLib::flush ( uint8_t  startAddr,
uint8_t  length 
)
virtual

Flush specific range of buffered changes to the display.

Writes a specific address range from the display buffer to hardware. This is an advanced API for optimizing updates when only part of the display needs to be refreshed.

For example, to update only the first row of a multi-row display:

lcd.flush(0, 6); // Update first 6 bytes (row 0)

Safe to call even when autoflush is enabled (no effect).

Parameters
startAddrStarting buffer address in bytes (RAM buffer index)
lengthNumber of bytes to flush
See also
setAutoFlush()

Reimplemented from SegLCDLib.

◆ flush() [3/3]

void SegDriver_VK0192::flush ( uint8_t  startAddr,
uint8_t  length 
)
overridevirtual

Flush specific range of buffered changes to the display.

Optimized implementation for VK0192 that loops through each address since the 3-wire protocol doesn't support bulk write.

Parameters
startAddrStarting buffer address in bytes (RAM buffer index)
lengthNumber of bytes to flush

Reimplemented from SegLCDLib.

Field Documentation

◆ MAX_ADDRESS

constexpr uint8_t SegDriver_VK0192::MAX_ADDRESS = 46
staticconstexpr

Last valid start HW nibble address for byte write.


The documentation for this class was generated from the following files: