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).