Nota de Aplicacion AN-U003

12
NOTA DE APLICACIÓN AN-U003 Control de un display 7-segmentos de 3 dígitos usando USBee

Transcript of Nota de Aplicacion AN-U003

NOTA DE APLICACIÓNAN-U003

Control de un display 7-segmentos de 3 dígitos

usando USBee

AN-U003

Naxus Sistemas InteligentesCra. 84A #5 - 12

Cali, Colombia

[email protected]

Revisión 1.0 Página 2

AN-U003

Índice de contenido1.INTRODUCCIÓN......................................................................................42.RECURSOS.............................................................................................43.DESCRIPCIÓN DEL MONTAJE.....................................................................54.DESCRIPCIÓN DEL SOFTWARE..................................................................65.CÓDIGO.................................................................................................76.BIBLIOGRAFÍA........................................................................................9

Revisión 1.0 Página 3

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

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

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

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

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

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

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 AN­U003: Control de un display 7 segmentos 

Revisión 1.0 Página 10

AN-U003 *  * Copyright 2010­2011  **************************************************************/ #include <avr/io.h> #include "7seg.h" 

int main(void) { 

//val es la variable de cuentas y deb la que permite implementar el antirebote por software 

unsigned char val = 0, deb = 0;  //inicializacion del display d7seg_init(0);  //la entrada PB3 la utilizaremos para leer los pulsos. Por lo tanto se 

configura como entrada. PORTB &= ~(1<<PB3);  //Muestra el mensaje "Out"  d7seg_error();  while(1) { 

//si llega un pulso if(PINB & (1<<PB3)) { 

//sistema antirebote if(!deb) { 

val++; deb = 1; //actualiza el valor a mostrar en el display d7seg_put(val); 

} } else 

deb = 0;   //Esta funcion se debe estar llamando constantemente, ya que es 

la encargada de actualizar el display  d7seg_refresh(); 

} return 1; 

}

Revisión 1.0 Página 11

AN-U003

7. BIBLIOGRAFÍA

1. "Display 7 segmentos" [online]http://es.wikipedia.org/wiki/Visualizador_de_siete_segmentos

2. "7 segment display" [online] http://en.wikipedia.org/wiki/Seven-segment_display

Revisión 1.0 Página 12