Strange Issue with MAX7219 (Higher Current Version)

I'm using a MAX7219 to drive a display that is ostensibly an 8x8 matrix (common anode), but each segment is 80mA forward current. This requires the use of transistors as laid out in a Maxim document here (which also states that the transistors allow the use of CA instead of CC). I was having some issues initially with getting the display to light at all, so I contacted Maxim to double check my approach and to ask if I needed additional components. Their reply was that all one needs is to choose one of the four methods in that article, and the driver should work. I pulled everything apart and started over, and lo and behold, the display was lighting.......sort of.

I'm using the LEDControl library, and made sure to have the latest version. After running through some sample code, I noticed that 2 strange things were happening. It seems as though all the DIG pins are connected together (Those are my common pins in the matrix) so each block of 8 segments is lighting at the same time; the segments behave as they should. So if I am trying to light 0x0, 0x1, 0x2....7x6, 7x7 each in order like a bar graph (not dot mode), I actually get [0x0, 1x0,2x0...7x0] all lit and then the segments follow in the same pattern. Then as the other DIG pins activate, the brightness of the segments increases in the same pattern.

The transistors are all on the SEG pins and have no interaction with the DIG pins at all, and my DIG pins are connected directly to my common pins (anode). I'm not sure if there's something in the code I'm not catching that isn't latching these pins on the MAX7219 or what is going on. According to Maxim, there aren't any additional components (like inverters) required. I have my brightness set per the datasheet (47k) and even included the caps across power. My DIG pins are treating as rows, and my SEG pins as columns.

Any advice would be appreciated.

Hi and welcome.

Thought I should let you know your link does not work, and this may be putting people off responding. Here’s a corrected link. There are two suggested circuits on that link, which one are you using?

Another possible reasons for few responses is that although you have obviously tried hard to thoroughly explain what you are seeing with your “bar graph” sketch, its still difficult to visualise. Any chance of a short video? A well focussed pic of the circuit might also be useful, as long as the wiring is neat (so many pics of circuits posted here just look like spaghetti). For completeness, post the sketch too (use code tags, which is the # button).

I have to admit I’m confused by the description of an 8x8 matrix as “common anode”. Seems to me they are all both common anode and common cathode!

Not sure if its relevant, but are you certain your chip is a genuine Maxim?

Although I’ve used max7219 in a few circuits, I’ve never tried to drive displays requiring more than 5V. I have used saa1064 for driving large 7-seg displays at ~7V, but they are not suitable for matrices anyway, so I’ll be interested to hear how you get on. Hope you get some more experienced help, I will keep an eye on this thread.


My chip is indeed a genuine Maxim and not from the gray market. I'm loathe to tear apart my circuit yet since I hate rebuilding on a breadboard.
Here's an example of what I'm currently dealing with. In these animations, the column are my DIG and the rows are my SEG. This particular display I'm driving doesn't have a full 8th column; just 3 elements. This example assumes that following:

Segments 1-5 are turned on, 6-8 are off.
Digits 1-8 are switched and kept on on in order (1, 1-2, 1-3,....1-8)

Here's what SHOULD be happening:

And here's what is actually happening:

It is behaving as though all the DIG are on, but the current supplied to each is being increased in 1/8 increments.