Paso 8: Expansión de Puerto IO, multiplexación más
Nos reunimos desde el último paso que requiere de un 8 x 8 x 8 LED cube 64 + 8 líneas del IO para operar. Ningún Microcontrolador AVR con un paquete de la inmersión (el tipo de a través del agujero chip fácilmente puede soldar o utilizar en un protoboard, paquete en línea Dual) que muchos IO líneas disponibles.
Para obtener obtener 64 requiere líneas de salida necesarias para los ánodos de los LED, creamos un circuito multiplexor simple. Este circuito múltiplex 11 líneas del IO en 64 líneas de salida.
El multiplexor se construye usando un componente llamado un cierre o un flip-flop. Le llamamos cierres desde aquí en.
Este multiplexor utiliza un IC latch de 8 bits llama 74HC574. Este chip tiene los siguientes pines:
- 8 entradas (D0-7)
- 8 salidas (Q0-7)
- perno de 1 "cierre" (CP)
- 1 salida activar pin (OE)
El trabajo del pestillo es servir como una especie de memoria simple. El pestillo puede contener 8 bits de información, y estos 8 bits se representan en los pines de salida. Considere un seguro con un LED conectado a la salida Q0. Para encender la luz, aplicar V + (1) D0 de entrada, luego tire la CP pasador bajo (GND), entonces alto (V +).
Cuando el pin CP cambia de bajo a alto, el estado de la entrada D0 está "trabado" en la salida Q0 y esta salida permanece en ese estado independientemente de cambios futuros en el estado de la entrada D0, hasta que nuevos datos se cargan tirando de la CP pasador bajo y alto otra vez.
Para hacer un arreglo de cierre que puede recordar el estado de encendido/apagado de 64 LED necesitamos 8 de estos cierres. Las entradas D0-7 de todos los pestillos están conectadas juntos en un bus de 8 bits.
Para cargar los Estados de encendido/apagado de todos los 64 LEDs simplemente hacemos esto: cargar los datos de la primera traba en el autobús. tirar el pin CP del pestillo primera baja luego alta. Cargar los datos del segundo pestillo en el autobús. tirar el pin CP del segundo pestillo baja entonces alta. Cargar los datos del tercer cierre en el autobús. tirar el pin CP del pestillo tercera baja entonces alta. Aclarar y repetir.
El único problema con esta configuración es que necesitamos 8 líneas de IO para el control de la línea de CP para cada cierre. La solución es utilizar un 74HC138. Este IC tiene 3 líneas de entrada y 8 salidas. Las líneas de entrada se utilizan para controlar que las líneas de salida de 8 que se va desplazando bajo en cualquier momento. El resto será alta. Cada uno a las salidas del 74HC138 está conectado al pin CP en uno de los seguros.
El siguiente pseudo código carga el contenido de una matriz de búfer en la matriz de cierre:
Puerto A = bus de datos
Puerto B = bus de direcciones (74HC138)
búfer de caracteres [8] tiene 64 bits de datos para la matriz de cierre
PORTB = 0 X 00; Esto tira CP de cierre 1 bajo.
para (i = 0; i < 8; i ++)
{
PORTA = buffer [i];
PORTB = i + 1;
}
Las salidas del 74HC138 son poco activo. Eso significa que la salida que está activa se tira poco. La clavija de enganche (CP) en el seguro es un disparador de borde creciente, lo que significa que los datos se bloquea cuando cambia de baja a alta. Para accionar el pestillo de la derecha, el 74HC138 necesita permanecer uno paso por delante del contador i. Si hubiera sido un chip activo alto, podríamos escribir PORTB = i; Usted probablemente está pensando, qué sucede cuando el contador llegue a 7, lo que significaría que la salida de PORTB es 8 (1000 binario) en la última iteración del bucle for(). Sólo los primeros 8 bits del puerto B están conectados con el 74HC138. Por lo que al puerto B salidas 8 o 1000 en binario, el 74HC138 Lee 000 en binario, completando así su ciclo. (iniciado en 0). El 74HC138 ahora salidas de la siguiente secuencia: 1 2 3 4 5 6 7 0, dando así un cambio de baja a alta a la corriente de cierre según contador i.