LEDs are often used on manmachine
interfaces (MMIs) or device
front panels to illuminate switches or
backlight text information so that the
user knows what the device is supposed
to be doing at the time. Occasionally, the
designer wants these LEDs to start blinking
at a particular rate to alert the user
to a condition needing attention, such as
a low battery.
Many devices use embedded microprocessors
or microcontrollers to handle
the MMI, along with all other command
and control functions for the device. The
simple task of causing the LED to blink
may add undesired overhead to the software
design. However, this task can easily
be offloaded to hardware by using the
following technique.
Memory-mapped hardware-control
registers are commonly used to turn
multiple LEDs on or off with one instruction.
Similarly, memory-mapping a
"blink-control" register can set a mask to
control which LEDs should be blinking at
any particular time, if the output of each
bit of that register gates a low-rate (i.e.,
1-Hz) clock signal for blink timing. By
connecting the gated signal to the LED
using a tri-state buffer that's enabled via
the LED control signal, the LED can be
turned on, off, or on-blinking (Fig. 1). If
the blink function isn't needed, an LED
can simply be turned on or off using the
simplified circuit in Figure 2.