I am trying to integrate with a pre-existing common-anode 3 digit, 7 segment LED panel (spoiler, it's a jukebox wallbox custom conversion) using a MAX7219, which will be controlled by a Raspberry Pi. I know the MAX7219 is common cathode, so I was thinking about using a ULN2803 and MIC2981 to change the logic from common-cathode to common-anode. Before I order parts I was hoping someone could validate that my idea will actually work.

Here's the circuit I designed: Display panel driver schematic

Here's the schematic of the existing display panel: Display panel schematic


  1. Will this actually work?
  2. Can I use the decoder or will I have to control all the segments individually so I can light up the 4 individual LEDs?
  3. Do I need pulldown resistors between the MAX7219 and ULN/MIC for any reason?
  4. Or do I need them on the display side of the ULN/MIC for any reason?
  5. I know as I turn on more segments there may be a possibility that they will get dimmer since I could have as many as 3 segments to a single output. Is there anything I can do, or need to do, to ensure brightness stays the same between the digits?


  1. I don't show the Pi connections in this schematic yet. I'm just trying to understand if everything else will work as expected.
  2. The display panel is shown below the circuits in the diagram.
  3. I made a copy and paste error on the power pins on the ULN2803. Ignore the GND and V+ labels on the ULN2803.
  4. Everything is going to be driven by a 3.6A 5vDC power supply. Should be more than enough power available but I have other things not shown so I do need to be mindful of power consumption.

FYI, I have a laymen's understanding of electricity and circuits but I'm a total noob at electronics... I've not really attempted anything like this before so any suggestions are welcome.

Thank you!

Edit: I think the mic2981 is the wrong chip. Not sure what would work though. I need a way to invert the logic there.

  • 1
    \$\begingroup\$ TM1637 is simpler (all in one chip) , but may be hard to get. \$\endgroup\$ Commented Dec 17, 2021 at 23:54
  • \$\begingroup\$ dimming won't be a problem if you drive one digit at a time because each segment has a resistor. \$\endgroup\$ Commented Dec 18, 2021 at 0:12
  • \$\begingroup\$ Can't you just drive the display as a seven digit four segment display? \$\endgroup\$
    – greybeard
    Commented Jul 20, 2023 at 6:14

1 Answer 1


Doesn't seem like any additional help is forthcoming, so I'll post what I finally ended up on for an answer. The combination I posted above will not work. The ULN will work, but the MIC will likely NOT work as it's expecting to be pulled high, not low. I found some logic inverter chips that might do the job, but never was totally able to figure that out. I've also found a simpler way that will likely work better. I ordered a HT16K33 board from Adafruit. It can support common anode or common cathode, and has a very nice and easy to use Python library on the Pi. It should relieve me of having to do the multiplexing, brightness, and character recognition in software on the Pi, and doing it in hardware should be much better than doing it in software on the Pi and hoping it works. It also can support a 3x13 keypad matrix, so I ordered a second one hoping that I can use it to do a matrix keyboard that is next after I figure out the display.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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