Étape 9: Contrôler les LEDs
Chaque LED est représenté par 1 bit. Afin de contrôler chaque LED, nous devons envoyer les 28 bits sur les registres à décalage depuis le PIC18F4550. Étant donné que nous utilisons le protocole SPI pour transférer des données à la Maj s’inscrit, nous finissent par envoi de données (4 octets) 32 bits. C’est parce que le protocole SPI envoie seulement les données 8 bits à la fois avec ce microcontrôleur particulière. de toute façon, les 4 bits supplémentaires ne sont pas utilisés et nous allons juste ignorer leur (nous allons toujours les laisser comme 0). Une fois que nous les données embrayer de 74HC595, nous puis « boucler » eux. Ce qui signifie que quels que soient données, nous sommes passés en eux, il mettra cette valeur (1 (élevée) ou 0 (faible)) sur ses sorties. Nous vous dirigeons vers quelques exemples maintenant qui peut éclaircir quelques questions.
Exemple 1
Dire que nous voulons tourner toutes les LEDs bleu ON. Quelles seraient les valeurs pour chaque octet des données que nous déplacer dans chaque registre ? C’est où une base logique booléenne entrera en jeu. Voyant que ces LEDs sont actif haute (ils tournent sur quand nous écrivons un 1 pour eux), nous avons à écrire un 1 pour les allumer ou 0 pour les désactiver. Donc si nous voulons qu’ils tous sur, nous aurions pour cela écrire dans les registres à décalage :
MSb Lsb Hex
IC1 - 1er octet envoyé -> 11111111 0xFF
IC2 - 2ème octet envoyé -> 11111111 0xFF
IC3 - 3ème octet envoyé -> 11111111 0xFF
IC4 - 4ème octet envoyé -> 00001111 0x0F
Pour que l’un a été assez facile. Nous venons de faire tous les bits qui représente une LED égal à 1 (+ 5v). Puis nous serait boucler les données et les choses allaient tourner sur tous les LEDs bleues. Bien sûr les 4 bits qui sont 0 sont ceux que nous allons ignorer et n’êtes pas connectés à n’importe quel LED.
Exemple 2
Dire que nous voulons tourner toutes les LEDs bleu éteint. Il s’agit d’une simple, mais ce qui serait nous écrivent dans les registres à décalage ?
MSb Lsb Hex
IC1 - 1er octet envoyé -> 0 x 00 00000000
IC2 - 2ème octet envoyé -> 0 x 00 00000000
IC3 - 3ème octet envoyé -> 0 x 00 00000000
IC4 - 4ème octet envoyé -> 0 x 00 00000000
Maintenant nous venons de faire tous les bits qui représente un LED égal à 0 (0v). Puis nous serait boucler les données et il s’éteint toutes les LEDs bleues.
Exemple 3
Quelles données nous avons enverrait allumer LED7, LED8, LED42, LED43, LED47 et LED52 ? Tous les autres voyants ne pas mentionnés doivent être éteint.
bit 7---bit 0
MSb Lsb Hex
IC1 - 1er octet envoyé -> 11000000 0xC0
IC2 - 2ème octet envoyé -> 0 x 00 00000000
IC3 - 3ème octet envoyé -> 0 x 00000110 06
IC4 - 4ème octet envoyé -> 0 x 00001001 09
Une fois que nous verrouiller, il va tourner sur LED7 et LED8 qui sont bit 7 (QH) et 6 (QG) de bits sur IC1. Aussi le bit 1 (QB) et bit 2 (QC) sur IC3 ira haut, tournant sur LED42 et LED 43. Sur IC4, bit 0 (QA) et le bit 3 (QD) ira haut, tournant sur LED47 et LED52.
Son vraiment simple mettre en marche une de l’intérieur LEDs. Il suffit de regarder le schéma, savoir où les LED sont que vous voulez sur et en dehors, convertir en 4 octets et votre jeu. Ensuite, nous apprendrons comment utiliser les fonctions qui ont été écrits pour le PIC18F4550 de transmettre les données pour les registres à décalage.