This application note describes a simple hardware implementation of a 4-Mux LCD driver using time division multiplexing techniques along with system monitoring using a GreenPAK IC.

Liquid-crystals are commonly used to create simple screens for electronic systems like digital clocks and car audio faceplates.

In an LCD, the liquid-crystal controls whether the segments appear ON or OFF by interacting with the light traveling through the LCD. When a voltage is placed across a segment, the internal molecules align with the electrical field across it and allow light to pass through unobstructed. When no voltage has been placed across the screen, the light travels through the liquid-crystal and rotates 90˚. In both cases, the light travels through the front and rear polarized filters that block / pass the light depending on its polarization.


LCD screen

Figure 1. LCD screen


LCDs are unique such that their light sources can be either passive or active. For passive displays, external lights are used to illuminate and view the characters on the display. Active displays, on the other hand, are designed with an internal light source on the back of the screen.

For a detailed description of how LCDs work, please refer to Microchip's app note LCD Fundamentals and the LCD Driver Module of 8-Bit PIC Microcontrollers (PDF). This article breaks down both the physical components and the scientific theory behind LCDs. It also describes the benefits and drawbacks of various LCD types including reflective, transmissive, and transflective displays.

This application note builds upon the design described in Microchip's app note [8] by offloading many of the processing and hardware requirements from the MCU onto a small and inexpensive GreenPAK IC.


Figure 2: Block Diagram

Figure 2. Block Diagram


Figure 2 shows the block diagram of this proposed solution. In addition to the LCD driving circuitry, the GreenPAK solution includes system monitoring features like hardware resets, watchdog timers, and RAM storage.


Creating Drive Signals for LCD Screens

LCDs are deceptively similar to LED screens in that they both require a DC voltage to turn on their segments, but the similarities end here. In fact, placing a sustained DC voltage across an LCD segment will damage the liquid-crystal. The following sections detail a few techniques used by designers to maintain an average of zero volts across the individual LCD segments. 


LCD Driving Techniques: Static Drive and Multiplex Drive

When designing drive circuitry for a small LCD like a 7-segment display, there are generally two different categories: Static Drive and Multiplex Drive.


Static Drive Technique

Static Drive LCD segments have two connections: a single common line shared amongst each of the segments and a unique control signal for each segment. To avoid creating a non-zero DC average voltage across a segment, the COM line and the SEGx lines are driven with square waves as shown in Figure 3.

The difference between the SEGx lines and the COM line generates a DC voltage across each of the segments without changing the average DC voltage across the segment. To enable the LCD segment, simply invert the square wave driving the specific segment of interest. The average voltage across the LCD segment will still be 0V.


Static Drive Technique

Figure 3. Static Drive Technique


The Static Drive technique is simple and quick for small LCDs. It doesn’t require special voltage levels or complicated timing behavior, but the GPIO requirements impact the viability of this technique for high-segment-count displays.


Multiplex Drive Technique

The Multiplex Drive technique reduces the GPIO requirements for driving larger LCDs. The basics of this technique centers around using multiple COM lines for specific SEG lines. Using time domain multiplexing, each segment can be individually enabled on one COM line.


Figure 4: Voltage Bias Multiplexing Technique

Figure 4. Voltage Bias Multiplexing Technique


Figure 4 shows the first Multiplex Drive technique which uses multiple voltage bias levels to drive each of the SEG and COM lines. Whenever the voltage difference between SEG and COM exceeds V1, that particular SEG/COM pair turns on.

This technique is based on time-division multiplexing of the COM lines.  Each of the 4 COM lines are sequentially activated to interact with the SEG lines. During the active period of a COM line, the SEG lines can be inverted and driven to the opposite rails to enable the SEG/COM pair.

When averaging the difference between the SEG and COM lines over one period, the average DC voltage remains at 0 volts. A significant drawback to this technique is that it requires an analog GPO with the capability of producing 4 different output voltage levels.

The second technique, shown in Figure 5, operates off the same time-domain multiplexing principles described in the voltage bias multiplexing architecture. To reduce the number of required output voltage levels, this technique doubles the period to maintain an average of 0V across the LCD segments. Figure 5 shows that SEGx signals in Section B are inverse signals of Section A. Whenever the difference between SEG and COM equals VDD or -VDD, that SEG / COM pair turns on. This technique assumes the magnitude of the segment’s turn on voltage is between VDD/2 and VDD.


Time Division Multiplexing Technique

Figure 5. Time Division Multiplexing Technique 


This technique takes advantage of the GPIO input structures to generate the VDD/2 voltage level. By connecting the GPIO to a voltage divider from VDD to GND, the GPIO is used to switch between a high-impedance input and a push-pull output to generate the three voltage levels. This technique uses a standard GPIO to drive each of the COM lines.

The GreenPAK design in this application note is based on the second Multiplex Drive technique shown in Figure 5.


GreenPAK Design

Figure 6 shows the GreenPAK design which implements the LCD driving architecture along with a 2V regulator, a watchdog timer, a hardware reset, and 8 bytes of RAM into one design. The 2V regulator accomodates for the 1.7V to 2.2V operating voltage range of the LCD.


Figure 6: GreenPAK Design

Figure 6. GreenPAK Design


COM Signal Generation

The COM signals are generated, as previously described, by modifying the GPIO settings and using an external resistive divider set at VDD/2. The GPIO control signals originate from the oscillator-driven DFF chain as shown in Figure 6. These signals determine whether the GPIO is configured as an input or an output and whether the GPIO is HIGH or LOW.

As one can see, the COM signals shown in Figure 7 match the COM signals shown in Figure 5.

Note: VDD = 2.0V, external divider bias set at VDD/2 for High-Z mode

  • Channel 1 (Yellow) – COM0 (PIN3)
  • Channel 2 (Green) – COM1 (PIN5)
  • Channel 3 (Blue) – COM2 (PIN7)
  • Channel 4 (Magenta) – COM3 (PIN10)


COM signals

Figure 7. COM Signals


Segment Signal Generation

ASM Configuration

In this design, the ASM is re-purposed as a fancy pattern generator to drive the SEG outputs. In Figure 6, the Pipe Delay block is used to cycle through the various ASM states.

The GreenPAK ASM consists of 8-states where each LCD COM line corresponds to two ASM states. Table 1 lists the ASM states with their associated COM lines.


Table 1. LCD’s COM Signals correspondence with ASM States

Table 1: LCD’s COM Signals correspondence with ASM States


Each ASM state holds a byte of data in RAM to output to the connection matrix. Table 2 provides a template on how to configure the binary data for each ASM state. Assuming bit a is written to State 0, bit b to State 1, bit c to State 2, and bit d to State 3, the bits in State 4 through State 7 should be inverted to !a, !b, !c, and !d respectively. For example, to turn ON SEG 0 associated with COM 0, write a 0 in the State 0/SEG 0 location and 1 in the State 4/SEG 0 location. This phenomenon of data inversion correlates with the description above in the Multiplex Drive Technique section.


Table 2. ASM RAM Data Bits

Table 2: ASM RAM Data Bits

Note: VDD = 2.0V, external divider bias set at VDD/2 for High-Z mode


  • Channel 1 (Yellow) – COM0 (PIN3)
  • Channel 2 (Green) – COM1 (PIN5)
  • D0 – SEG0 (PIN12)
  • D1 – SEG1 (PIN13)
  • D2 – SEG2 (PIN14)
  • D3 – SEG3 (PIN15)
  • D4 – SEG4 (PIN16)
  • D5 – SEG5 (PIN17)
  • D6 – SEG6 (PIN18)
  • D7 – SEG7 (PIN19


Segment Waveforms

Figure 8. Segment Waveforms


An example of SEG/COM behavior is shown in Figure 8. These waveforms show particular COM/SEG pairs enabled in accordance with Table 3. To enable these COM/SEG pairs, the ASM RAM must be configured to the values shown in Table 4 where a “0” in States 0 to 3 and a “1” in States 4 to 7 represents an ON segment. By analyzing Figure 8 one can decipher the state of the LCD segments by subtracting the SEG signals from the COM signals.


Table 3. Example Segment / Common Behavior

Table 3: Example Segment / Common Behavior


Table 4. ASM RAM Data

Table 4: ASM RAM Data


GreenPAK's 2V Voltage Regulator

Since the operating voltage range for the LCD is 1.7V to 2.2V, an internal 2V regulator limits the GreenPAK’s VDD and determines the logic levels of the COM and SEG signals. This narrow range depends on the specific LCD used in the system. This voltage range, the drive strength of the GreenPAK GPIOs, and the size of the external passive components all impact the contrast of the LCD.

The GreenPAK design uses an ACMP to regulate a 3.3V supply down to 2.0V using a resistive divider with a low side NMOS switch. Passive components limit the current flow and determine the transient behavior of this regulator. ACMP0 shown in Figure 6 regulates the voltage to 2V. Please reference Figure 9 and Figure 12 for a system level implementation of this regulator.


Additional Features of the GreenPAK Design

To synchronize the SEG and COM signals, the I2C virtual input “nRST” will actively reset the design when asserted LOW. When released HIGH, the SEG and COM signals will be synchronized with each other in the time domain as they both operate from the same 25kHz oscillator. For more information on resetting the ASM with I2C, please reference [6].

System monitoring features such as a hardware button reset, a watchdog timer, and RAM storage are also implemented on the GreenPAK solution. The button reset is controlled externally with the help of a GPIO while the watchdog timer and RAM storage are controlled with I2C communication from the MCU.


Modifying the LCD

Enabling and disabling different segments on the LCD is as simple as rewriting the RAM registers within the GreenPAK’s ASM. To execute the change properly, we recommend the procedure described below:

  1. Assert nRST LOW using the I2C virtual inputs
  2. Program the new RAM contents into the ASM
  3. Set nRST HIGH to initiate the LCD driving signals

Following the sequence above will guarantee that the COM and SEG pins remain synchronized in the time domain. Table 5 shows the I2C addresses of the ASM states. Data on the LCD is modified by re-writing these ASM RAM registers using I2C.


Table 5. ASM RAM Registers I2C Addresses 

Table 5: ASM RAM Registers I2C Addresses


Testing the Design

A twisted nematic (TN) reflective LCD display (Mouser #: 696-LCD-S401M16KR) is tested using an Arduino Uno. This LCD display is a 4-digit, 7-segment multiplexed display.


LCD Pattern Display

Figure 9 shows the test schematic used to display different patterns on the multiplexed LCD. The I2C lines (SCL and SDA) are connected to the Arduino’s 3.3V output through the R1 and R2 pull-up resistors. Resistors R3 and R4 along with capacitor C2 form the 2V regulator as described in 5.3. R5 through R12 are used to generate bias voltages for the COM signals.

As previously discussed, the LCD contrast depends on both the amplitude and the transient behavior of the LCD drive signals. The sizing of R5 to R12 and the drive strength of the GreenPAK GPIOs impact the transient behavior of the LCD drive signals.  Optimal resistance values were determined by iterative bench testing. This external resistor divider network impacts the quiescent current, PCB space, and cost of the system solution. For more information on resistor selection, please refer to [9] and [11].

Different patterns are displayed on the multiplexed LCD by following the steps described in 5.5. The LCD’s pin mapping and digit and segment locations are shown in Table 6 and Figure 10 respectively. By correlating Table 6 and Figure 10, it can be determined that pin 5 and pin 6 correspond to Digit 1 of the LCD, pin 7 and pin 8 correspond to Digit 2, pin 9 and pin 10 correspond to Digit 3, and pin 11 and pin 12 correspond to Digit 4. This correlation is shown in Table 7 along with the corresponding ASM outputs.


Test Setup with Arduino

Figure 9. Test Setup with Arduino


LCD's Digit and Segment Location

Figure 10. LCD's Digit and Segment Location


Table 6. LCD Pin Map

Table 6: LCD Pin Map


The SEG 0 and SEG 1 outputs of the ASM control Digit 1 of the LCD. Similarly, SEG 2/3, SEG4/5, and SEG6/7 control Digit 2, 3, and 4 respectively. Table 8 shows the Digit 1 and ASM output connections. Table 1 and Table 8 show that one must write a “0” to State 0/SEG 0 and a “1” to State 4/SEG0 to turn ON segment D on Digit 1. Similarly, other segments can be enabled/disabled by writing respective State x/SEG y locations.


Table 7. ASM and LCD Digits Relation 

Table 7: ASM and LCD Digits Relation


Table 8. Digit 1 Segment Connection with ASM RAM

Table 8: Digit 1 Segment Connection with ASM RAM


To display a pattern on the LCD, the binary data is first converted into hexadecimal format and then written to the ASM RAM registers. To display “1234” on the LCD, for example, follow the I2C procedure listed in 5.5. The I2C commands for writing data into the ASM RAM registers are as follows:

  • [Start 0x08 0xF4 0x00 Stop]
  • [Start 0x08 0xD0 0xEB 0x71 0x01 0x97 0x14 0x8E 0xFE 0x68 Stop]
  • [Start 0x08 0xF4 0x01 Stop]

Here, 0x08 is the I2C slave address and 0xF4 is the word address for the I2C virtual inputs. There are various I2C slave addresses available in the GreenPAK. For more information on I2C communication please visit [5].

Table 9 shows a few example patterns and the respective hexadecimal bytes required by the ASM RAM.

Some example code for controlling the LCD using an Arduino Uno is included in the ZIP file for this Application Note on Dialog’s website.


Table 9. Pattern Display

Table 9: Pattern Display


LCD Reliability

The LCD reliability is dependent on the average DC offset voltage of the LCD drive signals. The DC offset is measured as the difference between the amplitudes of the COM and SEG signals over time. If the average difference is on the order of 50mV or greater, the DC offset will eventually damage the LCD. For more information on acceptable DC offset specifications, please refer to [12].

Figure 11 displays the test setup used to measure the presence of DC offset in this solution. R13, R14, and C3 create a high impedance measurement interface to monitor the average voltage using a digital multimeter. The resistors chosen for the DC offset measurement are approximately ten times greater than the resistors used in the design to avoid loading the resistive divider network.


DC Offset Measurement

Figure 11. DC Offset Measurement


The DC offset was measured at about 5mV. As this offset is less than the 50mV offset criteria, the LCD should not be damaged.


Design Considerations and Solutions

There are certain criteria that should be considered when evaluating this design. These criteria include the operating voltage range of the LCD, the drive strength of the GreenPAK GPIOs, external component selection, and low power optimization.

The operating voltage range for the tested LCD ranges from 1.7V to 2.2V. When operating outside this range, LCD ghosting will occur. This voltage range will vary with the type of LCD.

As shown in Figure 8, the three voltage levels for the COM signals are generated with an external resistor divider network.  For optimal performance, we recommend using smaller resistors and stronger 

GPIO structures to speed up the transient behavior. Many of our GreenPAK GPIOs can be configured as “2x Push-Pull” to increase the drive strength.

There is a trade-off between quiescent current consumption and performance. The smaller external resistors provide better contrast on the LCD but increase the system quiescent current. If current consumption is important for a given application, the user can integrate a low power mode into the GreenPAK design. Using I2C, the MCU can disable the internal oscillator and ACMP when the display isn’t needed. One can also use an external switch to power the voltage regulator. When OFF in low power mode, this switch would guarantee that there is no voltage across the LCD and the resistive divider network. These techniques will limit the overall quiescent current through the device.


Feature Extension

The GreenPAK can be controlled with any MCU capable of communicating with I2C commands. DA14585 is a Bluetooth 5.0 SOC-compliant chip capable of interfacing with the GreenPAK and LCD through I2C.

Figure 12 displays a schematic of the test setup with DA14585 chip powered from a 3.0V coin cell battery. P1_0 (Port 1 - Pin 0) and P1_1 (Port 1 – Pin 1) of the DA14585 are I2C pins for SDA and SCL respectively. SDA and SCL lines of the I2C are connected to the 3.0V rail using pull-up resistors R1 and R2. Please follow the description in 5.5 for writing data to the GreenPAK’s ASM RAM registers and I2C virtual inputs.


Test Setup with DA14585

Figure 12. Test Setup with DA14585


Similar system behavior was observed when using the DA14585 chip in place of the Arduino Uno to control the LCD. Some example code for controlling the LCD using the DA14585 is included in the ZIP file for this Application Note on Dialog’s website.


GreenPAK Solution Conclusions

By using the GreenPAK solution described within this application note, a system designer can decrease MCU pin count, decrease cost, increase system performance, and improve design flexibility. Additionally, battery powered systems might benefit from reduced quiescent current consumption by implementing a low power mode to disable the LCD circuitry.

Oftentimes, MCUs are limited in their functionality based on the number of GPIOs provided to the designer. For smaller LCD applications, offloading LCD driving to the GreenPAK frees up numerous GPIO on the MCU at a low cost for the GreenPAK IC.

Similarly, MCUs are limited in their processing capabilities. Many modern MCUs utilize event-based programming to prioritize tasks in their specific programming environment. The GreenPAK solution allows MCUs to simplify their software requirements by sending a few I2C commands each event. This allows the MCU firmware to either perform other tasks or put the MCU into a low power setting until an event is triggered in the system.

A native benefit of using the GreenPAK IC is the simplicity of testing and modifying designs within the GreenPAK Designer software. At the click of a few buttons, the RAM settings within the ASM and the oscillator clock speed can be changed. Similarly, the watchdog settings and the hardware reset timers can be configured within the IC.


This article is co-authored by Craig Cary, Senior Applications Engineer at Dialog Semiconductor.



For related documents and software, please visit Dialog Semiconductor.

Download the free GreenPAK Designer software [1] to open the .gp files [2] and view the proposed circuit design. Use the GreenPAK development tools [3] to modify the design into your own customized IC in a matter of minutes. Dialog Semiconductor provides a complete library of application notes [4] featuring design examples as well as explanations of features and blocks within the Dialog IC.

  1. GreenPAK Designer Software, Software Download and User Guide, Dialog Semiconductor
  2. AN-CM-276 System Monitor 4-MUX LCD Driver, GreenPAK Design File, Dialog Semiconductor
  3. GreenPAK Development Tools, GreenPAK Development Tools Webpage, Dialog Semiconductor
  4. GreenPAK Application Notes, GreenPAK Application Notes Webpage, Dialog Semiconductor
  5. SLG46537, Datasheet, Dialog Semiconductor
  6. AN-1092, I2C Controlled State Machine, Application Note, Dialog Semiconductor
  7. AN1447, Software Driver for 4-Multiplexed LCD with a Standard ST62, Application Note, STMicroelectronics
  8. AN658, LCD Fundamentals and the LCD Driver Module of 8-Bit PIC Microcontrollers, Application Note, Microchip
  9. AN1428, LCD Biasing and Contrast Control Methods, Application Note, Microchip.
  10. Wikipedia Contributors, Liquid-Crystal Display, Wikipedia The Free Encyclopedia, Page Version ID: 860435172, 2018
  11. TB1098, Low Power Techniques for LCD Applications, Application Note, Microchip 
  12. Segment LCD Displays: Avoiding Excessive DC Component, Journal Article, Focus LCDs


Industry Articles are a form of content that allows industry partners to share useful news, messages, and technology with All About Circuits readers in a way editorial content is not well suited to. All Industry Articles are subject to strict editorial guidelines with the intention of offering readers useful news, technical expertise, or stories. The viewpoints and opinions expressed in Industry Articles are those of the partner and not necessarily those of All About Circuits or its writers.