From: email@example.com (John DuBois)
Subject: Re: Silly lights
Date: Wed, 25 Sep 1991 02:29:13 GMT
In article <1991Sep22.firstname.lastname@example.org>,
email@example.com (alain lachapelle) writes:
+ For XMas I'd like to build a silly light system that would be
+controlled by a PC. Up to about 256 LEDs. Interfaced to the parallel
+port. I thought of using 4ins-16outs 4514s that would be receptive to
+whatever data is sent along the parallel port. Is there a better way of
+addressing that amount of LEDs?
+ Thanks for any suggestions,
I interfaced a 16x16 column-scanned LED array to a PC parallel port
by using 3 bits of the parallel data to select one of 5 4-bit latches (4
of which were double buffered), 4 bits as the data for the selected latch,
and 1 bit to latch the second layer of buffers. One of the latches drove
the column address, while the other 4 drove the 16 lines of row data. I
latched the data with the Centronics ~STB signal. In operation, I'd write
row data to the 4 first-layer latches, and then write a byte which would
simultaneously select a new column address and strobe the second layer of
latches, presenting the data to the selected column. The entire sequence
took 5 writes.
I extracted the 8x8 font from my CGA card and used it to write 4
characters to the display. Going through Turbo C's parallel io routines,
and in turn through the BIOS, it used most of the CPU time of an 8 MHz XT
to matrix-scan the display. It could be sped up by going straight to the
parallel hardware, doing it in assembly, adding a matrix-scanner to the
external hardware, etc.
Note that if you're going through the PC BIOS, you need to acknowledge
the ~STB with an ~ACK. You should also bring SELECTED high, BUSY low,
PAPER OUT low, and ~ERROR high.
Laying down 512 pads for the LEDs and soldering it all up was
one of the less exciting things I've done, but the end result was fun :-)
John DuBois firstname.lastname@example.org KC6QKZ