Parallel port controlled LED display

Once upon a time I managed a network that included a handful of DECServers. DECServers are devices that attach serial devices to an Ethernet network so you can attach your terminal to a remote modem or send a print job from a VAX to a serial printer... fun things like that. One of the nicest DECServers I had was a DECServer 300... it had all the bells and whistles and included a little 7-segment (figure 8) LED on the back. When booting up the segment would display different numbers depending on what part of the boot process it was in, and once running it would display a rotating figure 8 pattern to show that all was well. The neat thing is the speed of the rotation would vary with the current system load.

Well of course I thought that was the coolest thing ever, and since I have a history of being attracted to projects that do nothing productive building a PC-based version seemed right up my alley.

Hardware
As is well documented elsewhere its possible to drive up to 8 LEDs using the data pins on a PC's parallel port. You simply attach the LEDs to the data ports with 470 ohm resistors and then to one of the port's ground pins. Here are a few pictures of my prototype on a breadboard and the final version made by modifying an old 25-pin MMJ connector to house the LED, resistors, and attachment wires. A little super glue holds the LED in place. If I had it to do again I'd have used stranded wire because the old solid-core phone cable I used was hard to cram into the housing. Here's a few pictures of the process:

picture1 picture2 picture3 picture4 picture5

Software
To control the individual parallel port pins I wrote a series of quick little programs in Perl to display characters and patterns.
Each of these programs use some or all of these excellent Perl modules:


I took a couple videos of the LEDs in action: as a prototype and in its final form.

Downloading and Installing
If you'd like to build your own parallel port driven LEDs this code might be helpful.
I've generated executable files, although mostly for my own benifit since your LED attachment order might not match.
Have fun, just remember where it came from. :-)

DisplayNum - Displays a command-line specified number.

Countdown - Displays countdown from 9 to 0.

LED Pattern - Displays a pattern indefinatly.

LED Load Pattern - Displays a patten whose speed reflects current CPU load.

Legal Mumbo-Jumbo
Feel free to download and use this software as you wish. This software has been tested, but I am not responsible for anything that occurs to your computer.
Use at your own risk, yada, yada, yada.

Last Updated: 2/2/2008 - Anthony Anderberg - ant@anderbergfamily.net