4. AN-U003
1. INTRODUCCIÓN
Los displays 7 segmentos son ampliamente utilizados para interfaces HMI
(Interfaces Humano-Máquina por sus siglas en inglés). Esta nota de
aplicación describe el manejo de un display de 3 digitos de 7 segmentos
usando USBee. Se presentan las nociones generales sobre manejo de
dígitos 7 segmentos y se describe la librería 7seg.h que hace parte del
software desarrollado para USBee.
Figura 1: Display de 3
dígitos, 7 segmentos
2. RECURSOS
A continuación se describen los recursos necesarios para realizar el
montaje:
• Tarjeta de desarrollo USBee.
• Cable mini USB para programación de USBee.
• Tarjeta de prototipado rápido 7SEG (Figura 1) o en su defecto un
display de 3 dígitos 7 segmentos, ánodo común.
Revisión 1.0 Página 4
5. AN-U003
3. DISPLAYS 7 SEGMENTOS
3.1 Generalidades
Los displays 7 segmentos están conformados por un conjunto de LEDs en
una disposición predefinida, que permite generar tanto caracteres
numéricos como alfanuméricos. La figura 2 ilustra la distribución de estos
leds en un dígito 7 segmentos y la nomenclatura utilizada.
(a) (b)
Figura 2: (a) LEDs que componen un display 7 segmentos, y (b) distribución para un display de cátodo
común
La figura 3 ilustra la generación de caracteres numéricos con un dígito 7
segmentos.
Figura 3: Generación de caracteres numéricos con un display 7 segmentos
Revisión 1.0 Página 5
6. AN-U003
Los displays 7 segmentos se pueden encontrar tanto de cátodo común como
de ánodo común. La diferencia radica en la polaridad de las señales a, b, c,
d, e, f, g y DP que se debe utilizar para encenderlos. Un display 7
segmentos de cátodo común las señales son activas altas, y se activarán
con 1 lógicos (típicamente 5V), mientras que los de ánodo común tienen
señales activas bajas, lo que implica que se activan con 0 lógicos (GND o
tierra). La figura 4 ilustra ejemplos de conexión de displays 7 segmentos de
ánodo común y de cátodo común.
(a) (b)
Figura 4: Ejemplos de conexión para (a) ánodo común, y (b) cátodo común
3.2 Identificación de pines
Cuando se adquiere un display 7 segmentos, es común no contar con la
hoja de datos del mismo, solamente se conoce si es de ánodo o cátodo
común. Una manera de identificar la disposición de pines es utilizar un
multímetro funcionando en modo de probador de diodos. Si el display es de
ánodo común, sitúe la punta negra en uno de los pines del display, y
comience a probar continuidad con la punta roja del multímetro los otros
pines. Verifique en qué momento se enciende uno de los LEDs del display.
Cuando uno se haya encendido, el pin que toque con la punta roja es el
ánodo común del dispositivo. En caso tal que no haya encendido ningún
LED, es probable que la punta negra esté localizada justamente en el ánodo
común, así que cambie la ubicación de la punta negra y comience el
procedimiento nuevamente. Para displays de cátodo común el
procedimiento es idéntico, sólo utilice las puntas a la inversa: seleccione un
pin con la punta roja, y con la punta negra comience a probar continuidad
Revisión 1.0 Página 6
7. AN-U003
en los otros pines.
3.3 Displays 7 segmentos multiplexados
Existen displays 7 segmentos que incluyen más de un dígito, como se
observa en la figura 5.
Figura 5: Display 7 segmentos de 3
dígitos
Generalmente los displays que disponen de más de dos dígitos cuentan con
el bus de señales a-g (o bus de datos) multiplexado. Esto quiere decir que
los dígitos comparten el bus de datos y cuentan con otras señales para
activar cada dígito, que son los ánodo o cátodo común de cada dígito. Este
bus también se denomina bus de control. La figura ilustra mejor esta
configuración.
Figura 6: Esquemático de un display 7 segmentos de tres dígitos
Revisión 1.0 Página 7
8. AN-U003
Esto implica que se ahorran pines de conexión (un solo bus de datos para
todos los dígitos), aunque solamente se podrá tener encendido un dígito al
tiempo, lo que pareciera ser una desventaja. Sin embargo, en este tipo de
configuraciones se aprovecha el hecho de que la visión humana retiene las
imágenes unos milisegundos. Esto quiere decir que, si se actualiza cada
dígito a una frecuencia más rápida a la del ojo, engañaríamos el sentido de
la vista haciéndole creer que los tres dígitos están encendidos al mismo
tiempo. Si la frecuencia de actualización de los dígitos está muy cercana a
la que el ojo puede detectar, notaremos un parpadeo en el display. Si
aumentamos esta frecuencia, el parpadeo desaparece. Justamente esta
configuración es la que se aprovechará en esta nota de aplicación.
4. DESCRIPCIÓN DEL MONTAJE
Las siguientes imágenes ilustran la conexión requerida para probar el
programa de ejemplo, ya sea utilizando la tarjeta de prototipado rápido
7SEG o un display 7 segmentos de ánodo común. El pinout del display
utilizado es descrito en la figura.
Figura 7: Pinout del display de 3
dígitos 7 segmentos utilizado
Como se puede observar, el bus de datos está en color naranja y el bus de
control en color violeta. Se requiere del uso de transistores PNP (Ej:
2N3906) en el caso de que no se utilice la tarjeta 7SEG. No se han
conectado resistencias al montaje ya que las salidas de USBee permiten
conexión directa de LEDs. Sin embargo si es importante limitar el uso de
corriente, disponga de sus respectivas resistencias a las líneas.
Revisión 1.0 Página 8
9. AN-U003
Figura 8: Conexión de un display de 3 dígitos 7 segmentos de ánodo común
Figura 9: Conexión de la tarjeta 7SEG que incluye un display de 3 dígitos 7 segmentos de ánodo
común
Revisión 1.0 Página 9
10. AN-U003
5. DESCRIPCIÓN DEL SOFTWARE
Para el control del display 7 segmentos se utilizarán las librerías USBee
<7seg.h> y la rutina de retardos <util/delay.h>, disponible en avr-libc [2].
A continuación se describen brevemente las funciones de la librería 7seg.h.
FUNCIÓN DESCRIPCIÓN
d7seg_init Rutina que se encarga de configurar el hardware utilizado
para el control del display 7 segmentos. Se recomienda
configurar inicialmente el archivo de cabecera 7seg.h,
para cambiar el puerto de conexión del display,
específicamente los valores de D7SEG_PORT, D7SEG_EN y
D7SEG_EN1, D7SEG_EN2 y D7SEG_EN3. Recibe como
parámetro el valor inicial
d7seg_put Rutina que actualiza el número a mostrar en el display.
Como parámetro recibe el número en cuestión.
d7seg_error Rutina que muestra en el display la palabra "Out".
d7seg_refresh Rutina que debe ser llamada constantemente para
refrescar el display.
Para mayor información sobre la librería y sus funciones, remitase a la
documentación Doxygen de la misma.
6. CÓDIGO
A continuación se presenta el código utilizado para el ejemplo. Los archivos
se pueden conseguir en la siguiente URL:
http://ww.naxuscolombia.com/productos/tarjetas-de-desarrollo/an-u003/.
Ejemplo:
main-7seg.c
/***************************************************************
* NAXUS SISTEMAS INTELIGENTES
*
* Nota de aplicacion ANU003: Control de un display 7 segmentos
Revisión 1.0 Página 10