Le registre à décalage fonctionne d’une manière assez simple, mais peut être modifié pour devenir très compliqué, mais très utile.
Le concept de base est que vous avez 8 broches de sortie de 74HC595. Pour cet exemple disons juste qu'ils sont envoyés à travers une résistance à une LED. Nous avons donc pins Q0 à travers Q7 comme les broches de sortie. Le reste peut être considéré comme des goupilles de contrôle, leur fonction exacte est décrit dans le tableau ci-dessus.
Nous pouvons contrôler le déplacement du Registre avec des impulsions d’horloge. Que nous élevons le signal allant vers la broche horloge à vif, l’horloge est déplacé vers l’avant une étape. et lorsque nous retirer basses et hautes, encore une fois, il décale l’autre. Chaque temps de que nous changer de l’horloge, on passe l’entrée à un autre des huit registres. Nous sommes essentiellement contrôlant la sortie de chacun des huit broches un à la fois, et que nous avançons un signal d’horloge, on passe à la broche de sortie prochaine au contrôle.
Jusqu'à présent, cela ressemble simplement à un tableau, qui est vraiment ce que c’est, mais voici la clé.
Nous pouvons utiliser la broche horloge de stockage Registre pour contrôler l’interrupteur « On/off Master ». Cette utilisation est essentiellement que nous pouvons tirer faible avant que nous envoyons nos valeurs de registre. Nous envoyons ensuite toutes les valeurs de Registre huit, qu’ils soient élevés ou bas, et quand nous avons fini nous tirer la goupille de horloge des registre de stockage élevée. Ce qui va arriver est la valeur que vous envoyez seront stockées sur chaque broche de sortie, mais pas encore activé. Lorsque vous tirez la goupille d’horloge stockage Registre haute toutes les sorties puis devient actif, et épingles quelle que soit vous avez assigné plus haut seront allume la LED.
Un autre avantage est la broche de Reclear Master. Nous pouvons utiliser cette broche pour effacer toutes nos sorties et tout à bas.
Donc, c’est juste un exemple simple. Le registre à décalage peut être un excellent outil lorsque vous êtes court sur les broches de sortie, prendre 8 sorties d’entrées de données réelles seulement environ 3. Il peut être ajouté à pour certaines applications vraiment compliquées, et ils peuvent être connectés en guirlande ensemble pour encore plus d’options de sortie.
J’espère que cela aidera vous aider et vous donner quelques connaissances sur leur concept de base.
J’ai inclus une esquisse d’arduino d’échantillon et le schéma de câblage sur le site d’arduino que se met en marche chaque LED un à un moment donné Serial Monitor d’entrée (0-9)
-------------------------------------- CODE START --------------------------------------
/*
Exemple de registre de décalage
pour le registre à décalage 74HC595
Cette esquisse tourne entrée série de lectures et utilise pour définir les broches
d’un registre à décalage 74HC595.
Matériel :
* Registre à décalage 74HC595 attaché aux broches 2, 3 et 4 de l’Arduino,
comme indiqué ci-dessous.
* Les LEDs attachés à chacune des sorties du Registre à décalage
Créé le 22 mai 2009
Créé le 23 mars 2010
par Tom Igoe
*/
Broche reliée à la broche de verrouillage (ST_CP) de 74HC595
const int latchPin = 8 ;
Broche reliée à la broche d’horloge (SH_CP) de 74HC595
const int clockPin = 12 ;
Broche reliée aux données de 74HC595 (DS)
const int dataPin = 11 ;
void setup() {}
Réglez de façon strictement à la sortie parce qu’elles sont adressées dans la boucle principale
pinMode (latchPin, sortie) ;
pinMode (dataPin, sortie) ;
pinMode (clockPin, sortie) ;
Serial.Begin(9600) ;
Serial.println("Reset") ;
}
void loop() {}
Si (Serial.available() > 0) {}
ASCII « 0 » à travers des personnages « 9 » sont
représentés par les valeurs de 48 à 57.
donc, si l’utilisateur tape un nombre compris entre 0 et 9 en ASCII,
vous pouvez soustraire 48 pour obtenir la valeur réelle :
int bitToSet = Serial.read() - 48 ;
écrire dans le registre à décalage avec le correct peu élevé :
registerWrite (bitToSet, HIGH) ;
}
}
Cette méthode envoie bits du Registre à décalage :
void registerWrite (int whichPin, int whichState) {}
les morceaux que vous souhaitez envoyer
bitsToSend octets = 0 ;
désactiver la sortie afin que les tiges ne s’allument pas
alors que vous êtes décalage de bits :
digitalWrite (latchPin, basse) ;
activer le bit plus élevé suivant dans bitsToSend :
bitWrite (bitsToSend, whichPin, whichState) ;
déplacer les bits sur :
shiftOut (dataPin, clockPin, MSBFIRST, bitsToSend) ;
activer la sortie si les LED peuvent s’allumer :
digitalWrite (latchPin, HIGH) ;
}
--------------------------------------- CODE END ---------------------------------------
Je vais essayer de revenir à cela pour ajouter plus d’explications à ce code.