Paso 9: IO puerto expansión solución alternativa
También puede utilizar una serie en paralelo a registro de cambio para obtener 64 líneas de salida. 74HC164 es un registro de desplazamiento de 8 bits. Este chip tiene dos entradas (puede también tener un pin de salida permiten, pero que ignoramos en este ejemplo).
- datos
- reloj
Cada vez los cambios de entrada de reloj de baja a alta, los datos de Q6 se mueve en el Q7, Q5 en Q6, Q4 a Q5 y así sucesivamente. Todo se desplaza una posición a la derecha (suponiendo que Q0 es a la izquierda). El estado de la línea de entrada de datos es cambiado de puesto en Q0.
Lo que normalmente sería cargar datos en un chip como este, es un byte y bit-cambio en el chip un poco a la vez. Esto utiliza una gran cantidad de ciclos de CPU. Sin embargo, tenemos que usar 8 de estos chips para obtener nuestras líneas 64 salida deseada. Simplemente conectamos la entrada de datos de cada registro de desplazamiento a cada uno de los 8 bits en un puerto en el micro controlador. Todas las entradas de reloj son conectadas entre sí y conectadas a un pin en otro puerto de IO.
Esta instalación utilizará 9 líneas del IO en el micro controlador.
En la solución anterior, cada byte en la matriz de búfer se colocó en es seguro propio IC. En esta configuración cada byte se distribuirá en todos los registros de cambio 8, con un poco de cada uno.
El siguiente pseudo código transferirá el contenido de una matriz de búfer de 64 bits a los registros de cambio.
Puerto A: bit 0 conectado a la entrada de datos de registro de desplazamiento de 0, bit 1 para cambiar el registro 1 y así sucesivamente.
Puerto B: bit 0 conectado a todas las entradas de reloj
búfer de caracteres [8] tiene 64 bits de datos
para (i = 0; i < 8; i ++)
{
PORTB = 0 X 00; Tire de la línea de reloj baja, por lo que podemos tirar más adelante para activar el registro de desplazamiento
PORTA = buffer [i]; Un byte de datos en el puerto A la carga
PORTB = 0 X 01; Tire de la línea de reloj alta a cambio de datos en los registros de cambio.
}
Este es tal vez una mejor solución, pero tenemos que usar lo que teníamos disponible cuando edificio del cubo. Para los efectos de este instructable, utilizaremos un cierre basado en multiplexor para expansión de puertos IO. No dude en utilizar esta solución en su lugar si usted entiende cómo ambos funcionan.
Con esta configuración, el contenido del buffer será "girado" 90 grados en comparación con el cierre base multiplexor. Alambre hasta el cubo en consecuencia, o simplemente gírelo 90 grados para compensar ;)