I got two of these type of 7 segments display in LCD material.

enter image description here

And here is the datasheet enter image description here

I tried to power up to UNO, it can make the segment on, while a second, the segment go off, but the pinMode does not changed.


Driving an LCD display is nothing like driving an LED display. You need to provide an alternating current to the right segments at the right time.

It is possible with an Arduino on a simple display like this, but not easy. Better is to use a chip that has a proper LCD display interface, such as the MSP430 "F" series (the FRAM ones).

To do it on an Arduino you need to treat it like a common anode matrix on one pass, and a common cathode matrix on the next pass, and do that repeatedly and rapidly.

That is, set COM1 HIGH and the other COMx pins LOW, and the segments you want on LOW and the others HIGH, then do the same with COM2, etc. Then go back to the start and invert the logic, so set COM1 LOW and the other COMx HIGH, and your chosen segments HIGH.

It is best to do this from within a timer interrupt so that you can get good regular updates without your program causing delays.

  • But the issue as I can make a segment as ON, after about 0.5 second, the segment will auto off in fade out, but the arduino pin status did not changed. PS: I am using UNO. – Allen Chak Nov 16 '17 at 9:28
  • 1
    That is because you aren't reversing the current like I instruct. – Majenko Nov 16 '17 at 9:29
  • Could you please explain more ? or any schematic could provide ? – Allen Chak Nov 16 '17 at 11:07
  • I thought I'd explained it perfectly clearly... – Majenko Nov 16 '17 at 12:16

that's a controller-less dynamic (mutiplexed) display, with 4 coms.

So you will to program the mcu to do a lot:

1) the com pins are driven with 1/4 dc signal sequentially;

2) the seg pins are driven with 1/3 bias voltage. out-of-phase to be dark and in-phase to be transparent (not lit).

the way to do it is to:

  1. put segment info in a buffer;

  2. write a display update routine that scans digits and updates the com/seg pins according to the current digit's segment information;

  3. call that display update routine periodically, preferrably from a timer isr.

the display update routine would be similar to an led display routine - an example of that (for led) would be here (https://dannyelectronics.wordpress.com/2017/06/30/a-more-flexible-driver-for-7-segment-leds/), but more complex due to the 4 com pins and bias generation.

it is much easier to pick a mcu with built-in lcd driver and program that mcu as a display controller / slave taking in information from a master (in this case your arduino).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.