Barcode scanners are a ubiquitous technology that touch our
lives on an almost daily basis. Despite the prevalence of these
scanners in commercial and industrial settings, it’s easy to
take the complexity of their underlying designs for granted.
Barcode scanners require multiple discrete ICs and an array of
passive and active circuitry to provide the functionality and
reliability that end users have come to expect. Many barcode
scanners use an optical sensor, such as a charge-coupled device
(CCD), which outputs an analog representation of what’s visible
to the sensor to an analog-to-digital converter (ADC) controlled
by a microcontroller (MCU). The MCU interprets the ADC’s output
as a sequence of thick and thin black and white bars, and
processes this sequence further to derive a string of characters
from the pattern. The character sequence may be encoded in any
one of a number of well-defined barcode protocols. Figure 1: The
barcode-scanning system shown is based on a 32-bit MCU.
Additional features found in