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.