INTRODUCCIÓN:

Este módulo permitirá monitorizar el estado de los puertos para poder comprobar fácilmente el funcionamiento de algunos programas.

DESCRIPCIÓN:

Analizando las características eléctricas de los puertos del 8x51 se observa que ofrecen una pobre corriente de salida (pocos miliamperios). Para que el diodo led se ilumine, es necesario proporcionarle una corriente en torno a los 13-17 mA. Por lo tanto, será necesario algo que tome como entrada las salidas del microcontrolador y que reemita estas señales con la suficiente intensidad como para iluminar el led.

A los circuitos que se encargan de realizar estas funciones se los conoce con el nombre de drivers. Existen diversos tipos de drivers entre los que se puede destacar el 74LS541, que es un driver de 8 entradas con salidas en tri-estado (Octal buffers and line driver with 3-state outpus).

En la figura se puede comprobar el diseño de la circuitería necesaria para realizar esta función.

Descarga Del Esquema Del Módulo De Leds

Se observa que el driver 541 tiene dos entradas de habilitación, de forma que si están a nivel alto, ponen las salidas en alta impedancia, y si alguna está a nivel bajo se "atraviesan" las entradas. En el diseño se ha puesto una de éstas a nivel bajo y la otra a nivel alto por compatibilizar el diseño con otro tipo de integrados como el 74LS245, que tiene una entrada de habilitación (19) y otra que indica la dirección, pues es bidireccional.

Tras el 541 se conectan los leds junto con una serie de resistencias limitadoras que fijan la intensidad a aproximadamente 15 mA.

 

PCB:

Descarga De Fotolitos Del Módulo De Leds

COMPONENTES:

Listado de los componentes necesarios para el montaje de esta modulo. 

Componentes
Cantidad
C.I. 74LS541 ó 74LS245 1
Conector Molex 2x5 1
Diodos Led (cualquier color) 8
Resistencias 330W 1/4 W 8*
Zócalo Dip 14 pines torneados 1
Placa Fotosensible 1 cara (93 x 53 )mm 1
Torretas separadoras 10mm 4
s
Notas:

* Si se montase el C.I. 74LS245 se va a necesitar una resistencia más, de iguales características que las anteriores, para forzar un nivel alto e indicar la dirección en la que se van a mover los datos.

EJEMPLO:

Una vez visto el hardware necesario, se pasa a desarrollar un sencillo programa para comprobar el correcto funcionamiento del diseño. Para ello se realizará un programa que vaya encendiendo consecutivamente los leds desde el bit de menor peso hasta el de mayor peso, invirtiendo el proceso a continuación.

Entre el encendido de un led y su adyacente se deberá realizar una pequeña espera, pues de lo contrario, se verían todos encendidos con unas pequeñas fluctuaciones. En una primera aproximación, se forzará un retardo simplemente ejecutando un bucle for que se repita n veces.

Esta es una propuesta de programa que realiza las funciones comentadas:

/* es1.c */
#include <io51.h>
#define SAL P1

void pausa(int retardo);

void main()
{
    char i;
    while (1)
    {
        for (i=0; i<8; i++) /* 0000 0001 => 1000 0000 */
            {
                SAL= 0x01 << i;
                pausa(10000);
            }
        for (i=0; i<8; i++) /* 1000 0000 => 0000 0001 */
            {
                SAL= 0x80 >> i;
                pausa(10000);
            }
    }
}

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