Módulo visualizador 7-segmentos

INTRODUCCIÓN:

    Este módulo presenta la forma de conectar dos visualizadores de 7 segmentos. Los displays de 7 segmentos son un instrumento habitual para la presentación de dígitos numéricos y de mensajes sencillos. La primera tarea es comprender la forma en la que se va a conectar los visualizadores de 7 segmentos al sistema microcontrolador.

DESCRIPCIÓN:

     Para ello, de la misma forma que se ha visto para el módulo de leds, es necesario un driver que proporcione la corriente suficiente para excitar a los diodos que forman el display.

Descarga Del Esquema Del Módulo Visualizador 7 Segmentos

    En la ilustración anterior se aprecia el esquema de un visualizador de 7 segmentos de cátodo común (KC), donde se ven las entradas para cada uno de los 7 segmentos más una para el punto decimal y dos entradas (internamente interconectadas) que corresponden a los cátodos de todos los segmentos que constituyen el visualizador.

     Para controlar el display basta cualquier circuito que proporcione la intensidad suficiente para alimentar cada uno de los leds que forman los segmentos.

     Ahora bien, para facilitar la realización de un  programa, sería interesante disponer de algún circuito que tuviera como entrada la combinación BCD (0..9) que se desea representar y que se encargara de activar los segmentos correspondientes del visualizador. De esta forma, desde el programa se indicará la combinación binaria del 0 al 9 y este circuito se encargará de activar los segmentos correspondientes; sería deseable que el circuito proporcionase la suficiente intensidad para atacar a los leds. Un típico circuito que cumple estas características es el 4511 (MC14511B). El integrado 4511 no es más que un BCD to seven segments latch/decoder/dri-ver, es decir un circuito al que se proporciona la combinación BCD a representar y se encarga de generar la activación de los segmentos correspondientes con la suficiente intensidad y manteniendo ésta hasta el siguiente cambio del dígito a representar.

    Básicamente el funcionamiento normal pasa por ir activando la señal LE cuando se quiere cambiar el dígito representado (teniendo las líneas BI y LT desactivadas). Cuando LE está a "1" las salidas son las del último dígito que se ha visualizado y cuando esta señal pasa a "0" el integrado toma las entradas DCBA y genera la salida para activar los segmentos correspondientes. Tras la captura del dígito a representar se vuelve a desactivar (1) la señal LE.

     El esquema presenta una posible solución para realizar la interconexión entre el microcontrolador y los visualizadores. Se desea controlar dos visualizadores totalmente independientes, además, para simplificar el diseño no se utilizan los puntos decimales de los visualizadores. La forma más sencilla de efectuar el conexionado es disponer de dos 4511 uno para cada uno de los dos visualizadores.

     Son posibles configuraciones distintas, como la de usar un único 4511 y realizar algún tipo de multiplexación entre los dos (o más) visualizadores con alguna línea adicional de control.

     Se disponen dos integrados 4511 a los que llegan los datos a representar. Estas líneas de datos (BCD) son comunes para los dos integrados; activando la señal correspondiente de captura (LE) se determina para cuál de los dos visualizadores es el dato. De esta forma, con un único puerto de 8 bits se pueden controlar los dos visualizadores.

    Los bits de configuración se podrían repartir así según el esquema de la tabla. Tanto las líneas del dato a visualizar (DCBA) como las que sirven para comprobar el estado del visualizador o apagarlo son comunes a ambos y la única línea distinta sirve para diferenciar a cuál de los dos visualizadores de 7 segmentos se destina el dato.
 

/LE-2 /LE-1 /LT /BI D C B A

 Configuración entrada a la placa de visualizadores


    Desde el punto de vista de la programación, para controlar el funcionamiento, primero, manteniendo desactivadas las líneas /LE-2, /LE-1, /LT y /BI, se establecerán las líneas de datos con la combinación BCD a representar. Posteriormente se activará la línea /LE-2 o /LE-1 para activar uno de los dos 4511 y que genera las líneas de los segmentos apropiados para lograr el número deseado. Una vez que el 4511 ya ha capturado el dato se volverá a desactivar la línea de captura que se haya activado para volver, cuando sea necesario, a cambiar la combinación. Esto equivale a la generación de un pulso en la línea /LE-2 o /LE-1 para que el 4511 seleccionado captura el dato a representar.

PCB:

Descarga Del Pcb Del Módulo Visualizador 7 Segmentos

COMPONENTES:

 

COMPONENTES

CANTIDAD

C.I. 4511 

2

Conector Molex 2 x 5

1

Tira pines redondeados

20 pines

Resistencias 180 1/4W

14

PCB 1 cara (76 x 74)mm

1

Torretas Separadoras 10mm

4

Visualizadores 7 Segmentos Ánodo Cómun 

2

Cable para puentear

 

EJEMPLO:

(guardar)

    Una vez visto el diseño del sistema de visualizadores se presenta el programa que se encargará de ENVIAR los dígitos que se desee representar.

     El primer ejemplo es un programa muy sencillo para comprobar su funcionamiento. En éste se activan cíclicamente las señales /LT y /BI para observar si el sistema presenta algún tipo de actividad. Además, en caso de que funcione, también se puede determinar si todos los segmentos de los visualizadores funcionan correctamente. Entre activación y activación se fuerza un retardo que, en una primera aproximación se hace con un sencillo bucle for.

/* bcd1.c */
#include <io51.h>
#define BCD_P P1 /* puerto del visualizador */
#define RETARD 5000

void pausa(long retardo);

main()
{
    while(1)
    {
        BCD_P = 0x20;
        pausa(RETARD);
        BCD_P = 0x10;
        pausa(RETARD);
    }
}

void pausa(long retardo)
{
    long i;
    for(i=0;i<=retardo;i++);
}

Este sencillo programa da paso a un módulo C capaz de representar el dígito deseado en los visualizadores. El módulo tiene una función que acepta los dígitos, de 0 a 99, a representar y se encarga de sacarlo por los visualizadores. De esta forma se dispondrá de un bloque software que fácilmente se una a las aplicaciones cuando se desee emplear el visualizador para este tipo de representación. Recuérdese que se debe compilar cada módulo por separado y a continuación enlazarlos juntos.

/* módulo visbcd.c */
/* visualización de números entre 0 y 99 en el */
/* módulo de displays bcd */
#include <io51.h>
#include "visbcd.h"
#ifndef BCD_P
#define BCD_P P1 /* puerto por defecto */
#endif

static void display(unsigned char x,unsigned char numx);

void visualizar(unsigned char num)
{
    unsigned char num0,num1;
    num0=num % 10;
    num1=(num - num0) / 10;
    display(0,num0);
    display(1,num1);
}

static void display(unsigned char x,unsigned char numx)
{
    if (x==0)
    {
        BCD_P = 0xf0 | numx;
        BCD_P = 0xb0 | numx;
        BCD_P = 0xf0 | numx;
    }
    if (x==1)
    {
        BCD_P = 0xf0 | numx;
        BCD_P = 0x70 | numx;
        BCD_P = 0xf0 | numx;
    }
}

 

/* visbcd.h, definiciones para uso del módulo visbcd.c */
void visualizar(unsigned char num); /* prototipo público */

/* visualiza un número entre 0 y 99 pasado como argumento */
/* en el módulo display BCD de 2 visualizadores */
/* testbcd.c, prueba del módulo visbcd.c */

#include "visbcd.h"
#define RETARDO 50000

void pausa(long retardo);

main()
{
    unsigned char num;
    for(;;)
    {
        for(num=0;num<60;num++)
        {
            visualizar(num);
            pausa(RETARDO);
        }
    }
}

void pausa(long retardo)
{
    long i;
    for(i=0;i<=retardo;i++);
}