Étape 4: Ports i/o conserver avec un changement de Registre
Un moment de « vitesses »...
Un registre à décalage peut être compris mieux par la pensée les deux mots qui composent son nom: « shift » et « enregistrer ». Le changement de mot se réfère à la façon dont les données sont déplace dans le registre. Ici (comme dans notre Arduino et microcontrôleurs, en général) un registre est un emplacement qui conserve les données. Il fait ceci en implementsing une chaîne linéaire des circuits de logique numériques appelé « tongs » qui possède deux États stables qui peuvent être représentées par un 1 ou 0. Ainsi, en mettant huit tongs ensemble que vous avez un dispositif capable de retenir et qui représente un octet de 8 bits.
Juste comme il y a plusieurs types de tongs et plusieurs variations sur un thème de registres à décalage (pense que vers le haut/bas, compteurs Johnson compteurs), il existe également plusieurs types de registres à décalage basés sur combien de données sont verrouillées dans le registre et comment ces données sont sortie. Sur cette base, considérez les types suivants de registres à décalage :
- Série / parallèle à (SIPO)
- Série / Serial Out (SISO)
- Parallèle en / série Out (PISO)
- Parallèle / parallèle à (PIPO)
Deux de note sont SIPO et PISO. Registres SIPO récupérer des données en série, c'est-à-dire un peu après l’autre, déplaçant le bit précédemment d’entrée sur la prochaine flop flip et envoie les données sur tous les entrées à la fois. Cela fait une belle série de convertisseur parallèle. Registres à décalage PISO, ont à l’inverse, les entrées parallèles, donc tous les bits sont entrés en même temps, mais sont de sortie, un à la fois. Et vous l’aurez deviné, ce qui rend pour un beau parallèle serial Converter. Le registre à décalage que nous voulons utiliser pour réduire le nombre de broches e/s nous permettrait de prendre ces 8 broches e/s, que nous avons utilisé plus tôt et de les réduire vers le bas à une, ou peut-être juste un couple, étant donné que nous devrons contrôler comment nous saisir les bits. Nous allons utiliser le registre à décalage est donc une série / parallèle en dehors.
Associer le registre à décalage entre le voyant et l’Arduino
À l’aide d’un registre à décalage est facile. La partie la plus difficile est juste visualiser les broches de sortie de données et comment les chiffres binaires se retrouveront dans l’IC, et comment ils montreront finalement sur la LED. Prenez le temps de planifier ce point.
1. Fixez 5V sur la broche 14 (en haut à droite) et prendre la broche 7 (en bas à gauche) jusqu’au sol.
2. le registre à décalage a deux entrées, mais nous allons seulement utiliser un, donc relier la broche deux à 5V
3. nous n’utilisez pas le code pin clair (occasion de mettre à zéro toutes les sorties) donc laisser flottantes ou de l’attaquer à 5V
4. Raccordez un port d’e/s numérique à broche d'entre le registre à décalage. Il s’agit de la broche d’entrée série.
5. Branchez un port d’e/s numérique à broche 8 (en bas à droite). Il s’agit de l’axe de l’horloge.
6. connecter vos lignes de données de Q0 à Q6. Nous utilisons seulement 7 bits, car le jeu de caractères ASCII utilise seulement sept bits.
J’ai utilisé PD2 pour la sortie de mes données sérielles et PD3 pour le signal d’horloge. Pour les broches de données, j’ai branché Q0 à D6 sur la LED et en continuant de cette façon (Q1 à D5, Q2 à D4, etc.). Étant donné que nous envoyons les données en série que nous devrons examiner la représentation binaire de chaque caractère nous voulons envoyer, en regardant de 1 et de 0 et la sortie de chaque bit sur la ligne série. J’ai inclus une deuxième version de la source de dotmatrixled.c avec un Makefile ci-dessous. Il permet de sélectionner le jeu de caractères et affiche les caractères tout de même (si il est bizarre de penser qu’une lettre peut être pair ou impair, pensez à la représentation binaire pour un moment). Essayer de comprendre comment le faire passer en affichant tous les personnages étranges. Vous pouvez également expérimenter avec les connexions entre le registre à décalage, la dot-matrix LED et votre Arduino. Il y a plusieurs fonctionnalités de contrôle entre le LED et le Registre qui peut vous permettre d’affiner votre contrôle sur quand les données sont affichées.
Alors... nous sommes passés de devoir utiliser huit ports d’e/s à l’aide de seulement deux !