MICROCONTROLADORES

MICROCONTROLADORES
MICROCONTROLADORES

Display de 7 segmentos y Contador del 0 al 9

Display de 7 segmentos.


El displays de 7 segmentos, es un componente que se utiliza para la representación de números en muchos dispositivos electrónicos. Cada vez es más frecuente encontrar LCD´s en estos equipos (debido a su bajísima demanda de energía), todavía hay muchos que utilizan el display de 7 segmentos por su simplicidad.

Este elemento se ensambla o arma de manera que se pueda activar cada segmento (diodo LED) por separado logrando de esta manera combinar los elementos y representar todos los números en el display (del 0 al 9).

El display de 7 segmentos más común es el de color rojo, por su facilidad de visualización.

Cada elemento del display tiene asignado una letra que identifica su posición en el arreglo del display. Ver el gráfico.



Si se activan o encienden todos los segmentos se forma el número "8"

- Si se activan solo los segmentos: "a,b,c,d,f," se forma el número "0"

- Si se activan solo los segmentos: "a,b,g,e,d," se forma el número "2"

- Si se activan solo los segmentos: "b,c,f,g," se forma el número "4"

p.d. representa el punto decimal

El display ánodo común

En el display ánodo común, todos los ánodos de los diodos LED unidos y conectados a la fuente de alimentación. En este caso para activar cualquier elemento hay que poner el cátodo del elemento a tierra a través de una resistencia para limitar la corriente que pasa por el elemento.

El display cátodo común


El display cátodo común tiene todos los ánodos de los diodos LED unidos y conectados a tierra. Para activar un segmento de estos hay que poner el ánodo del segmento a encender a Vcc (tensión de la fuente) a través de una resistencia para limitar el paso de la corriente.


También hay display alfanuméricos que permiten representar tanto letras como números


Ejercicio 3.

Nuestro tercer ejemplo es un contador de 0 a 9 el cual esta compuesto por un display de 7 segmentos de ánodo común conectado al puerto B del PIC 16f84.

Como primer paso debemos determinar el número en binario que se debe mandar al puerto B del PIC para que muestre en el display el número correspondiente. La conexión del puerto B hacia el PIC se muestra en la siguiente tabla:


Por lo tanto, a continuación se muestra una tabla que corresponde al número en binario que se necesita mandar al puerto B para mostrar el número correspondiente.


Una vez obtenidos los datos que vamos a ocupar en nuestro código procedemos a realizar el programa en el compilador CCS.


#include <16f84a.h> //PIC a utilizar

#USE DELAY( CLOCK=4000000 ) //Oscilador de 4MHZ

#FUSES XT,NOWDT,NOPROTECT,NOPUT//Ordenes para el programador

///////////PROGRAMA PRINCIPAL//////////////
void main(void)

{

char i=0; //incremento para la tabla de 7 segmentos
int tab7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xb8,0x80,0x98}; //Tabla con los datos correspondientes al numero a visualizar.
set_tris_b(0x00); //portb como salida

while(true)//ciclo
{

output_b(tab7seg[ i ]); //muestra por portb digito 7 segmentos
delay_ms(500); //tiempo de espera de 500ms
i++; //incremento contador para visualizar siguiente digito

if(i>9) //¿ya se ha mostrado el digito 9?

{

i=0; //SI -> vuelve a empezar(digito 0)

}

}

}

Como se muestra en el código hemos declarado una variable llamada “i” como char o carácter, en esta variable guardamos el incremento que nos va hacer necesario para sacar los datos de la tabla. También declaramos “tab7seg[10]” como entero, este representa una tabla en la cual introducimos el número en hexadecimal correspondiente a cada número a visualizar en el display (del 0 al 9), el “10” que tenemos dentro de los corchetes corresponde a los 10 espacios que necesitamos.

Después configuramos el puerto B como salida poniendo puros ceros en el TRISB.

También observamos una nueva instrucción llamada “if”, la cual, no se había visto en los ejemplos anteriores de este blog, esta instrucción es usada a manera de pregunta y su estructura es la siguiente:

If(“expresión con la cual queremos preguntar)

{

//lo que se debe realizar en caso de ser verdadero

}

A manera de resumen a continuación se muestran los pasos que realiza nuestro código:

1.- Se declara la variable para el incremento (i) y la tabla donde se introduce el número en hexadecimal de los números a visualizar (tab7seg[10]).

2.- Se configura el puerto B como salida.

3.- Muestra por el puerto B el digito correspondiente (inicialmente es el cero).

4.- Espera 500ms.

5.- Incrementamos “i”, esto es muy importante ya que de ello depende que se muestren los dígitos de manera correcta.

6.- Se pregunta si “i” es mayor que 9, si no es así se continua con el ciclo hasta que “i” sea mayor que nueve, en este momento se pone a “i” nuevamente en cero para seguir el ciclo y mostrar de cero hasta el nueve de manera indefinida.

Por ultimo solo nos falta armar el circuito en Proteus y simularlo como se muestra en la siguiente figura: