I use this display circuit to expose students to the concepts
and characteristics of scanning displays. Basically, a message
is delivered to the CPU (a Microchip PIC16F76) over an RS-232
interface. The message is displayed on a vertical array of eight
LEDs, which are spun by a dc motor. As they spin and take on new
positions, the LEDs are updated with new lines of bit patterns, producing
the display. In this way, the software allows the eight LEDs
to emulate an 8-by-80 marquee-type display panel.
The device consists of a CPU board and a power-distribution
board. The CPU board is mounted on the motor axis and connected
to the power-distribution board with a three-contact, slip-ring
assembly. The power-distribution board is fixed underneath the
device along with the batteries.
On the CPU board, Q1 converts the bipolar RS-232 signal to the
TTL used by the CPU (Fig. 1). C1 filters out small noise impulses
on the power line created by the slip rings. S1 and S2 isolate the program pins of the CPU so that the chip can be reprogrammed
in-situ if desired. The circuit uses crystal control of the CPU for
display stability.
The power-distribution board controls motor power and CPU
power separately. Therefore, the CPU can be reprogrammed
without the annoying problem of a spinning chip (Fig. 2). The 555
timer, controlled by R2, adjusts the dc motor’s rotation speed to be
synchronous with the strobed data output.
In the procedural flow diagram of the software, the mainline
MARQUEE initializes the hardware and loads a default display
message into Data RAM (Fig. 3). The subroutine continues to loop
infinitely as it calls subroutine DISPLAY to send the message to
the LEDs, one character at a time.
Subroutine DISPLAY checks the character received from
MARQUEE. If it’s a valid (upper case) ASCII code, an appropriate
subroutine is called to actually send display bit patterns to the
LEDs. If an invalid code is received, it’s ignored. Each character
routine sends eight, eight-bit patterns with a delay after each line
to be synchronized with each new position of the LED array as it
spins around its axis. Two of the eight lines are blank to represent
a distinct space between characters. The ASCII space code is also
valid and is reserved for blanks between words.
The message can be changed by sending new characters over the
RS-232 port. The mainline code is interrupted and the new message
is updated. As each character is entered, it’s displayed on the
LEDs. This is useful for debugging purposes. After 10 characters
are input, the new message appears.
The most difficult part of the project was the mechanical slip ring
assembly. To speed production and deliver a finished looking product,
a child’s toy was used to package the system (sorry, Michelle).