El registro de desplazamiento funciona de una manera bastante sencilla, pero puede ser modificado para llegar a ser muy complicado pero muy útil.
El concepto básico es que tiene 8 pines de salida de los 74HC595. Este ejemplo permite decir que estas se envían a través de una resistencia de un LED. Así que tenemos pins Q0 a Q7 como los pines de salida. El resto puede considerarse pines de control, su función exacta es contornos en el cuadro anterior.
Podemos controlar el cambio del registro con impulsos de reloj. Como elevamos la señal que va al pin de reloj alto, el reloj se mueve hacia adelante un paso. y cuando nos tire alta y baja otra vez cambia de puesto otro. Cada vez que cambio el reloj cambiar la entrada a uno diferente de los ocho registros. Esencialmente estamos controlando la salida de cada uno de los ocho pernos uno a uno, y a medida que avanzamos hacia adelante una señal de reloj, cambiar al siguiente pin de salida para control.
Hasta ahora esto suena simplemente como un tablero de interruptor, que es realmente lo que es, pero esta es la clave.
Podemos utilizar el pin de reloj de registro de almacenamiento de información para controlar el interruptor "Master". Esencialmente como se utiliza es que podemos tirar baja antes de que enviemos nuestros valores de registro. Entonces enviamos todos los valores de registro de ocho, ya sean altas o bajas, y cuando terminamos nos tire el almacenamiento Registro reloj alta. Lo que sucederá es el valor que usted envíe serán almacenados en cada pin de salida, pero no activado aún. Cuando tire el almacenamiento Registro reloj alta todas las salidas se convertirá en activo y que pines asignados como alta iluminarán el LED.
Otro beneficio es el maestro Reclear Pin. Podemos usar este pin para despejar todas nuestras salidas y todo a bajo.
Así que esto es sólo un ejemplo sencillo. El registro de desplazamiento puede ser una gran herramienta cuando usted es corto en los pines de salida, tomando 8 salidas entradas de sólo 3 datos reales. Puede añadirse que para algunas aplicaciones realmente complicados, y pueden encadenarse en Margarita juntos para aún más opciones de salida.
Esperemos que esto le ayudará a empezar y darle algunos conocimientos sobre su concepto básico.
He incluido un sketch de arduino de la muestra y el esquema de la Página Web de arduino que se enciende cada LED uno en un momento dado el Serial Monitor de entrada (0-9)
-------------------------------------- CODE START --------------------------------------
/*
Ejemplo de registro de cambio
para el registro de desplazamiento 74HC595
Este sketch da entrada serial Lee y utiliza para ajustar los pernos
de un registro de desplazamiento 74HC595.
Hardware:
* Registro de desplazamiento 74HC595 conectado a los pines 2, 3 y 4 de la Arduino
como se detalla a continuación.
* LEDs conectados a cada una de las salidas del registro de desplazamiento
Creado el 22 de mayo de 2009
Creado el 23 de marzo de 2010
por Tom Igoe
*/
PIN conectado a la clavija de enganche (ST_CP) del 74HC595
const int latchPin = 8;
PIN conectado al pin de reloj (SH_CP) del 74HC595
const int clockPin = 12;
PIN conectado a datos en (DS) del 74HC595
const int dataPin = 11;
void setup() {}
Set de clavijas de salida porque se abordan en el bucle principal
pinMode (latchPin, salida);
pinMode (dataPin, salida);
pinMode (clockPin, salida);
Serial.Begin(9600);
Serial.println("RESET");
}
void loop() {}
Si (Serial.available() > 0) {}
ASCII '0' a '9' caracteres son
representada por los valores de 48 a 57.
así que si el usuario escribe un número del 0 al 9 en ASCII,
puede restar 48 para obtener el valor real:
int bitToSet = Serial.read() - 48;
escribir en el registro de desplazamiento con la broca correcta alta:
registerWrite (bitToSet, HIGH);
}
}
Este método envía los bits para el registro de desplazamiento:
{} void registerWrite (int whichPin, int whichState)
los bits que desea enviar
byte bitsToSend = 0;
Apague la salida para que las clavijas no enciende
mientras estás cambiando brocas:
digitalWrite (latchPin, bajo);
activar el bit más alto siguiente en bitsToSend:
bitWrite (bitsToSend, whichPin, whichState);
desplazar los bits de salida:
shiftOut (dataPin, clockPin, MSBFIRST, bitsToSend);
Encienda la salida para que los LEDs pueden iluminar:
digitalWrite (latchPin, HIGH);
}
--------------------------------------- CODE END ---------------------------------------
Voy a intentar volver a esto añadir una explicación más detallada de este código.