Overview
So far I was aware of that Glass segment display are the display which consumes lowest power compare to any other type of display available in the market and also that they are one of the cheapest.
But, recently I came across a company called Ynvisible from Canada who are manufacturing ultra low power displays using printing technology and has a lot of other unique features.
These displays typically consumes only 0.21uW per cm2 of display area. They are also cost very less at high volume as the manufacturing cost is significantly low.

Key Features
- Ynvisible’s segment displays are Electrochromic, they reflect the ambient light.
- Ink is screen printed on plastic substrate that’s why they are thin and flexible.
- Bistability – Display retains the content for a long time, 80% contact till 15 minutes and 50% contrast till 2 hours although company claim they can design display with much shorter or longer bistability for any custom needs.
- Thickness is typical 0.3mm, you can also bend the display
- They operate from -20 to 60 degree c
- Its takes about 250mSec max to activate and 200mSec max to deactivate the segment thats why are only meant for slow refresh applications.
- Operating voltage is 2.2V to 3V DC (Max 3.3V)
- At 3V it consumes only 0.21uW / cm2 which is really very low.
- Typical activation cycles mentioned by the company is >100,000.

How to operate
You don’t need a special driver IC, it can be directly interfaced with any MCU operating at 2.2V – 3V. Refer below images:
- figure 1: MCU operating at 2.2-3V
- figure 2: MCU operating at 3.3v
- figure 3: MCU operating from 3V to 5V range
Low Power Display Evaluation Kit
Company provides evaluation kit which contains various segment display and boards with the help of which you will be able to evaluate quickly and understand how you can use it for your application



Advantages and limitations
Advantages
- Low Power
- Thin
- Flexible
- Reliable
- Water proof
- Low cost
Limitations
- Slow refresh rate
- Matrix type graphic display is not available yet
- Can’t be used the dark, need external source
- Standard of the self displays are not available, you can get your display custom design (samples are available for the evaluation)
Applications
Due to its it unique ultra low power feature these can be used in various applications like mentioned below:
- Smart Labels (Expiry date, temperature of bottle)
- Asset monitoring for high value items (shock, vibration, temperature, humidity)
- Thermometers
- Price Labels
- Battery-less monitoring solution with display using energy harvesting
- Soil moister display
- Customer feedback capturing consoles
- Indoor air quality monitoring system, etc.
How to buy these low power displays?
You can buy Segment display kit, designer color display kit or individual segment displays or boards(click, driver, adapter) from their web store directly.
What do you think, can these displays be used in some of your products, let me know in the comments below?
If you prefer the video format:
Watch the video
Seven Segment Display with STM32 MCU
In order to check what it takes to interface segment display with an MCU, I then connected the Single digit Segment display with STM32L031 Nucleo board using adapter board.
The connections are pretty straight forward, all segments and common need to be connected to GPIO Pins(output).

I wrote the below given code to quickly test.
Example Code
Display Function
void display(uint8_t value)
{
switch(value)
{
case 0:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_Delay(250);
//HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_SET);
break;
case 1:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 2:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 3:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 4:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 5:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 6:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 7:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 8:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 9:
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
HAL_Delay(250);
break;
case 10: // OFF
HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_RESET);
HAL_Delay(250);
//HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
break;
}
}
Main Code
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
display(0);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(1);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(2);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(3);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(4);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(5);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(6);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(7);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(8);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
display(9);
HAL_Delay(1000);
display(10); // OFF
HAL_Delay(500);
}
/* USER CODE END 3 */
}
Quick Video showing Seven Segment Display demo (counting from 0 – 9)
I hope you found this post useful and you learned something new.