LED-based moving-message displays are becoming popular for transmitting information to large groups of people quickly. These can be used indoors or outdoors. We can find such displays in areas like railway platforms, banks, public offices, hotels, training institutes, nightclubs and shops.
Compared to LEDs, liquid-crystal displays (LCDs) are easy to interface with a microcontroller for displaying information as these have many built-in functions. But these can’t be observed from a distance and large-size LCDs are very costly.
LED-based displays can be of two types: dot-matrix and segmental. If you implement a moving message display with multiplexed dot-matrix LEDs, it will be very costly for displaying 16 characters or more at a time. Moreover, programming will require a lot of data memory or program memory space. An external RAM may be needed to complement a microcontroller like AT89C51.
However, if you use alphanumeric (16-segment LED) displays for the above purpose, programming burden is reduced and also it becomes highly cost-effective. You can make your own display panel consisting of 16 alphanumeric characters at a much lower cost.
The circuit presented here uses 16 common-anode, single-digit, alphanumeric displays to show 16 characters at a time. Moreover, programming has been done to make the characters move in a beautiful manner. A message appears on the panel from the right side, stays for a few seconds when the first character reaches the leftmost place and then goes out from the left side.
It displays 16 different messages to depict different occasions, which can be selected by the user through a DIP switch.
Fig.1 shows the circuit of the microcontroller-based moving-message display. It comprises microcontroller AT89C51, three-to-eight decoder 74LS138, common anode alphanumeric displays, regulator 7805 and a few discrete components.
At the heart of the moving-message display is Atmel AT89C51 microcontroller (IC1). It is a low-power, high-performance, 8-bit microcontroller with 4 kB of flash programmable and erasable read-only memory (PEROM) used as on-chip program memory, 128 bytes of RAM used as internal data memory, 32 individually programmable input/output (I/O) lines divided into four 8-bit ports, two 16-bit programmable timers/ counters, a five-vector two-level interrupt architecture, on-chip oscillator and clock circuitry.
Ports P0 and P2 of the microcontroller have been configured to act as a common data bus for all the 16 alphanumeric displays whose corresponding data pins have been tied together to make a common 16-bit data bus. Port-2 provides the higher byte of data, while port-0 provides the lower one to light up a character on the display. Port pins P1.2-P1.4 and P1.5-P1.7 of the microcontroller have been used as address inputs for decoder IC3 and IC4 (74LS138) to enable one of the fourteen alphanumeric
displays (DIS3 through DIS16) at a time, respectively. However, displays DIS1 and DIS2 are enabled or disabled directly by port pins P1.0 and P1.1. Pins 4 and 5 are grounded and pin 6 is made high to enable decoder 74LS138.
Fig.2 shows the pin configuration of the common-anode alphanumeric display.
All the corresponding data pins Dis 1 through DIS16 of alphanumeric displays have been tied together, while the common anode of each display is separately powered via a BC558 transistor which switches ‘on’ or ‘off’ as required, through outputs of 74LS138 ICs and pins P1.0 and P1.1 of IC1. The higher nibble of port P3 (P3.4 through P3.7) is used as a selection bus to select one of the 16 previously stored messages using the 4-bit binary value present on these pins. This value can be changed through a 4-pin DIP switch (S0 through S3).
Selection pins P3.4 through P3.7 are pulled high via resistors R36 through R33, respectively. When the switch connected to a given pin is open the value is high (1), and when it is closed the pin is held low and the value becomes ‘0.’ In this way, by using a 4-bit number you can select any of the 16 messages shown in the Table.
Capacitor C5 and resistor R37 form the power-‘on’ reset circuit, while a push-to-connect switch has been used for manual reset. An 11.0592MHz crystal generates the basic clock frequency for the microcontroller. To change the message being displayed while the circuit is working, first change the number present at the selection bus, then press ‘reset’ key.