La opción mas fácil sería cambiar de micro y usar uno con más puertos, pero incrementamos el costo del circuito, el tamaño, el consumo, etc, o supongamos que nos especifican usar ese micro controlador unicamente, claro pudiendo agregar otros circuitos ttl peso solo ese micro, para realizar esta tarea recurriremos a los registros de corrimiento.

Un registro de corrimiento (o shift register) es un circuito integrado que según su construcción, puede recibir datos en una entrada serial y recorrerlos en un puerto de salida paralelo del mismo integrado mediante una señal de reloj, o recibir datos paralelos y enviarlos por una sola salida de forma serial , es decir, pueden tomar datos de forma paralela y enviarlos de forma serial o tomar los datos de forma serial y convertirlos a paralelo, en este tutorial analizaremos el segundo caso el cual es el que nos ayudaría a resolver el problema que se nos ha planteado al principio.

El circuito que vamos a analizar es el CD4094 el cual es un registro de corrimiento de 8 bits el cual se puede encontrar en diferentes encapsulados siendo el más comín el encapsulado DIP-16 a continuación, veremos el diagrama de conexiones del integrado:

diagrama 4094

En la imagen se puede observar la disposición de las terminales del integrado, los pines Q1 a Q8 son las salidas paralelas, el integrado toma la información de forma serial aplicada al terminal DATA y almacena un bit a la vez cada que se presenta la señal de reloj, la terminal STROBE escribe la información almacenada en las salidas, si esta terminal no se activa el circuito no escribirá la información en el puerto, la terminal OUTPUT ENABE activa o desactiva las salidas (generando un tercer estado)

Para una mejor comprensión del funcionamiento de las terminales de control se puede observar la siguiente tabla de verdad:

tabla de verdad4094

 En la tabla podemos ver que si la terminal OUTPUT ENABLE esta en 0, no importa en que estado esten las demás terminales de control, no se presentará ningún cambio en la salida y se representa como OC, es decir, circuito abierto y se considera un estado desconocido, no es 0 ni tampoco es 1, es conocido como el tercer estado, esto es para los dos primeros casos, para el tercer caso teniendo la señal de reloj en flanco hacia arriba, y la terminal OUTPUT ENABLE en 1, el estado de las salidas será NC, es decir, no habrá cambio alguno, ya que si bien tenemos las salidas activadas, sin embargo, no hemos dado la instrucción de escribir en ellas (STROBE)

El cuarto y quinto caso son iguales, solo cambia el valor del bit que se está escribiendo en el registro, atención en lo que pasa en estos casos, analizaremos el cuarto caso:

Tenemos la señal de reloj en flanco alto, OUTPUT ENABLE en 1 o sea las salidas estan activadas, STROBE en 1 (escribir en las salidas) y en la terminal DATA un 0 lógico cuando la señal de reloj sube, se escribe el dato presente en la terminal DATA en la salida Q1 (algunos datasheets puede que empiecen con Q0) si seguimos aplicando cambos en la señal de reloj, la salida Q1 se irá recorriendo hacia las otras salidas, la siguiente salida Q2, tomará el estado de Q1 y Q1 tomará el estado de la terminal DATA, si aplicamos otra señal de reloj, el proceso se repite, Q3 tendrá ahora el valor de Q2 etc.. esto se puede repetir 8 veces para llenar todas las salidas del integrado, teniendo así una salida paralela de 8 bits.

 Integrando el shift register con un micro controlador:

Cuando utilizamos un micro controlador para realizar algun circuito al momento de estar programando, definimos entradas y salidas, según las funciones que necesitemos para lo cual, si estamos programando con picbasic seria algo asi:

 
foto1
y para escribir información en dichas salidas sería algo asi:
 
Foto02
como vemos en la declaración de variables, ya hemos consumido todo el puerto b en salidas, si se trata de un pic16f84 solo nos queda el puerto a para recibir o enviar información, la idea del shift register (registro de corrimiento) es utilizar solamente 4 bits del puerto b en cuestión para controlar al integrado y de esa forma ampliar las salidas tanto como sea necesario, ahora, si se hace este arreglo, ya no vamos a manipular los puertos del pic, sino que vamos a escribir en el registro de corrimiento. A contonuación lo explicamos:
 
 foto03