I'm trying to drive a 7-segment common anode, in the following connection, however there is no output the comes from the ULN2003 at all, its like when it gets a 0 in the input, it gives a tri stateenter image description here output.

  • \$\begingroup\$ If your 7-segment dipslay is in fact red, it may be dead already. The 74HC595 outputs a 5V signal, and you don't have any resistors in there. The red LED takes a 2V forward voltage. Let me know \$\endgroup\$
    – Funkyguy
    Feb 7, 2014 at 2:55
  • \$\begingroup\$ @ShannonStrutz I put current limiting resistors between the ULN and the 7-segments still they don't work. Kindly note that the above schematics is in proteus simulator. \$\endgroup\$ Feb 7, 2014 at 3:51
  • \$\begingroup\$ If you just did it though, like after you turned it on for the first time, it is likely dead already. Your 5V signal would have blown them out. If you did it before you turned it on for the first time, then I don't see anything wrong with it and in that case I would ask what led you to believe it was the ULN2003 not doing its job instead of the 74HC595? \$\endgroup\$
    – Funkyguy
    Feb 7, 2014 at 4:25
  • \$\begingroup\$ @ShannonStrutz The output from the 74HC595 is the same as I expected, so I get correct output from it, the problem is the output of the ULN2003 is partially correct; Zero's outputs are correct, but one's are like tristate, which means neither 1 or 0, just floats, which is really weird. \$\endgroup\$ Feb 7, 2014 at 5:27

2 Answers 2


The circuit you show will work fine in reality (assuming that you also add the resistors in series with the display to limit the current).

In proteus it doesn't behave as expected, the open collector outputs of ULN2003 are not pulled high through the LED as they are supposed to be, this is a simulation model misbehavior.

The solution you can use it to add pull up resistors (I have used a resistor network) like shown below:

enter image description here

The shown schematic is valid for simulation only, the pullup network is not needed in the real circuit. You also have to add the series resistors to the segment lines which are omitted in proteus to improve the simulation speed.

  • \$\begingroup\$ @AhmedSaleh When you draw power supply symbols try to draw them pointing upwards for positive supply and downwards for ground (like in my schematic). Not everyone is familiar with the symbols of each schematic entry application so having a triangle pointing downwards can really confuse people who may interpret it as ground. \$\endgroup\$
    – alexan_e
    Feb 7, 2014 at 10:28
  • \$\begingroup\$ @alexan_w: when the common side of the display is indeed positive adding pullups doesn't serve any purpose beyond debugging. What IS needed is series resistors! \$\endgroup\$ Feb 7, 2014 at 10:32
  • \$\begingroup\$ @WoutervanOoijen I think I have made this very clear in my reply, please read what I wrote under the schematic. \$\endgroup\$
    – alexan_e
    Feb 7, 2014 at 10:39
  • \$\begingroup\$ @alexan_e In real circuit, If I want to multiplex several 7-segments, to the same ULN2003, Should I connect another current limiting resistors from the output terminals of the ULN2003 to the new 7-segment ? \$\endgroup\$ Feb 10, 2014 at 20:48
  • 1
    \$\begingroup\$ @AhmedSaleh one resistor per output is enough to limit the current. Refer to this schematic or this one \$\endgroup\$
    – alexan_e
    Feb 10, 2014 at 20:58

The ULN2003 is an open-collector driver, it can sink current towards ground but not supply current from Vcc. You will need to use a different display (common anode instead of common cathode) or use a different driver (open-emitter (or sourcing) drivers do exist, but they are not as common as the ULN2004/ULN2803.

Note that if you need to drive just one display, the HC595 can probably handle the current. Aim for a few mA per segment instead of the full 20mA. The difference in brightness will be much less than you'd suspect.

  • \$\begingroup\$ The display he has used is common anode ("I'm trying to drive a 7-segment common anode") but I'm sure you were confused by the triangle connected to the display that points downwards like the ground. That triangle is the Vcc symbol in proteus, the ground is the earth symbol (three horizontal lines) \$\endgroup\$
    – alexan_e
    Feb 7, 2014 at 8:31
  • \$\begingroup\$ Yuk! I'll leave my answer as an example of the confusion that can arise from a downward pointing Vcc symbol. \$\endgroup\$ Feb 7, 2014 at 10:33
  • \$\begingroup\$ I can absolutely justify your assumption that the triangle pointing downward was a ground. I have left a comment to the OP about this under my reply. \$\endgroup\$
    – alexan_e
    Feb 7, 2014 at 10:37

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.