pixel brightness of 8x8 led matrix display is low

I am using 2 74HC595 shift register for driving a 8x8 led matrix.When i am lighting up the whole first column for writing letter N the pixels are much dimmer than i am lighting the one pixel of other column for diagonal elements of N?.Can anybody help me with this?

Yes, this problem is quite common. The problem is that 74hc595 was not meant to be an led driver chip, and it's pins cannot source or sink enough current. Use max7219 instead. That replaces both 595's. Another alternative (not as good as max7219) is to replace one of the 595's with a tpic6c595.

PaulRB:
Yes, this problem is quite common. The problem is that 74hc595 was not meant to be an led driver chip, and it's pins cannot source or sink enough current. Use max7219 instead. That replaces both 595's. Another alternative (not as good as max7219) is to replace one of the 595's with a tpic6c595.

Can you tell how max7219 ic is better than those 74hc595 and where are these 74hc595 are used then? I used this shift register to drive 16 leds in series that works good but with this dot matrix led it is not working fine?
Thanks...

max7219 is designed for driving leds. It's pins can source and sink more current. They are constant current outputs, which means that no led series resistors are needed. One resistor sets the current for all leds. Also, the chip performs multiplexing, which means that the Arduino does not have to perform this task, as is needed with 74hc595.

74hc595 is a general purpose logic chip. Its pins are designed to drive the inputs of other logic chips. This does not require as much current as driving leds.

74hc595 cannot be used to drive 16 leds in series. That would require a supply voltage of perhaps 36V or more, which would destroy the chip. Perhaps you meant to say that you used 2 x 74hc595 to drive 16 leds, one led connected to each output pin.

With your matrix, one 74hc595 pin is driving 8 leds in parrallel. This requires too much current, which causes the dimming, and will also damage the chip.

To prevent the dimming, you must chose series resistors which limit the current for 8 leds to less than 35mA, or 4mA per led. This is the maximum current that a single output of the 595 can source or sink. For red leds with a forward voltage of 2V, and a supply of 5V, your series resistors would need to be (5-2)/0.004 = 750R. This would make the matrix quite dim, but would prevent the dimming effect you have seen.

PaulRB:
max7219 is designed for driving leds. It's pins can source and sink more current. They are constant current outputs, which means that no led series resistors are needed. One resistor sets the current for all leds. Also, the chip performs multiplexing, which means that the Arduino does not have to perform this task, as is needed with 74hc595.

74hc595 is a general purpose logic chip. Its pins are designed to drive the inputs of other logic chips. This does not require as much current as driving leds.

74hc595 cannot be used to drive 16 leds in series. That would require a supply voltage of perhaps 36V or more, which would destroy the chip. Perhaps you meant to say that you used 2 x 74hc595 to drive 16 leds, one led connected to each output pin.

With your matrix, one 74hc595 pin is driving 8 leds in parrallel. This requires too much current, which causes the dimming, and will also damage the chip.

To prevent the dimming, you must chose series resistors which limit the current for 8 leds to less than 35mA, or 4mA per led. This is the maximum current that a single output of the 595 can source or sink. For red leds with a forward voltage of 2V, and a supply of 5V, your series resistors would need to be (5-2)/0.004 = 750R. This would make the matrix quite dim, but would prevent the dimming effect you have seen.

In your last line you said "this would make the matrix quite dim but would prevent the dimming" ??? Actually the problem is leds are dim???

Yes, the matrix would be dim, but the dimming would not change if one, two, three... 64 leds were on. The leds would stay the same brightness whatever pattern of leds was showing.

PaulRB:
Yes, the matrix would be dim, but the dimming would not change if one, two, three... 64 leds were on. The leds would stay the same brightness whatever pattern of leds was showing.

I am getting your point ...to tell you what i an exactly doing is connecting the 8 output pins of 1 shift register to 8 row pins of led matrix and 8 pins of 2nd shift register to 8 column pins of led matrix and i have connected 220ohm resistor between all 8 column pins and 8 output pins ...what will you comment on this circuit and are you saying i should use 750ohm resistor instead of 220ohm resistor???
Thanx..

With 220R, each led would, in theory, receive a current flow of (5-2)/220 =~13mA

If all 8 LEDs in a column or row are on, that is a total of ~109mA. All this current would have to be sourced or sunk by 1 output. Each output is rated for a maximum of 35mA. The chip is rated for a maximum of 70mA in total. So 109mA exceeds both limits, causing the dimming effect and the life of the chip is shortened.

750R would reduce the current to ~4mA per led. If 8 LEDs in a row/column are on, the total current is 32mA, which is below 35mA and 70mA limits, so no dimming effect and no damage to the chips. But with only 4mA per led, the display will not be very bright. Remember that each led is on for only 12.5% of the time, so the average current per led is only 0.5mA. This is why 74hc595 is not great for driving led matrices.