[AUDIO_VIDE] Bonjour. Nous allons faire un peu d'électronique. Nous allons étudier un composant extrêmement utilisé dans les afficheurs et également dans les enseignes, à LED, qui s'appelle le registre série parallèle. Nous allons d'abord constater le besoin de broches dans les enseignes et afficheurs à LED, nous allons étudier le registre série, voir ses limites, nous allons étudier le registre série-parallèle, puis un circuit particulièrement souvent utilisé, le 74HC595. Nous allons également parler des registres à sorties à courant constant, qui sont très intéressantes et finalement, bien entendu, nous allons voir comment programmer l'accès à ces registres série-parallèle. Il est clair que les enseignes et afficheurs à LED nécessitent beaucoup de LED pour être intéressants et nécessitent, par conséquent, beaucoup de broches sur le microcontrôleur qui doit les commander. Beaucoup plus que ce que les microcontrôleurs habituels peuvent avoir. Nous allons donc utiliser des circuits logiques pour étendre en quelque sorte ces sorties. Il y en a plusieurs qui peuvent être utilisées. Je cite ici les Latch adressables, par exemple le circuit 74HC259, il se trouve qu'on ne l'utilise pas énormément dans les enseignes et afficheurs à LED, mais il pourrait être intéressant. Ce que nous allons étudier maintenant, c'est les registres série-parallèle. Regardons tout d'abord ce qu'est un registre série. Nous avons un certain nombre de bascules, des bascules D. Les horloges de chacune de ces bascules sont connectées ensemble et la sortie d'une bascule va dans l'entrée de la bascule suivante. Nous avons globalement un entrée, nous avons aussi globalement une sortie à notre registre série. Vous vous souvenez certainement du fonctionnement de ces bascules D, au moment du flanc montant de l'horloge, la valeur qui est sur D va être enregistrée dans la bascule et apparaître sur la sortie. Si nous présentons à notre registre l'entrée suivante avec cette horloge, on voit qu'à chaque flanc montant de l'horloge, la valeur de l'entrée se place sur la sortie. Mais au coup d'horloge suivant, cette valeur sera décalée dans la bascule suivante. Et l'on voit que cette première valeur, qui a été mise ici, va se transmettre successivement et finalement, apparaître sur la sortie zéro. De même, la deuxième valeur ici va être saisie dans la première bascule à ce coup d'horloge, puis être transmise aux bascules suivantes jusqu'à terminer sur cette sortie. Nous avons donc réussi à placer ces huit valeurs sur ces huit sorties. C'est intéressant mais le problème, c'est qu'il y a eu des parasites. la valeur deux ici, est apparue sur la sortie sept, sur la sortie six, sur la sortie cinq, etc jusqu'à finir à la sortie deux. Or, sur des afficheurs à LED, cela peut produire des effets lumineux catastrophiques. Donc ce schéma ne convient pas bien, nous allons devoir le compléter. Reprenons un registre série, ajoutons-lui autant de bascules, toujours avec une horloge commune qui, naturellement, est différente de l'horloge du registre série. On a donc une horloge série et une horloge parallèle. Les entrées du registre parallèle sont connectées sur chacune des bascules du registre série et l'on voit bien, comment est-ce qu'on va faire? On va faire venir la valeur ici, puis en un seul coup d'horloge, l'amener dans chacune de ces sorties. Qu'est-ce que ça donne sur un diagramme des temps? On a bien évidemment exactement le même diagramme des temps que tout à l'heure, avec ses sorties ici qui, finalement, prennent une valeur correcte, mais si l'on prend maintenant les sorties parallèles, elles seront maintenues à leur ancienne valeur jusqu'au moment de l'unique coup d'horloge parallèle qui va faire arriver les huit nouvelles valeurs sur nos sorties. On peut comparer ici les timings, on voit que l'on a une sortie propre ici, on a eu une sortie polluée dans le cas précédent. Voilà le symbole que l'on peut donner à ce registre série parallèle. Il a des entrées, l'entrée des données, l'horloge série, l'horloge parallèle, il a une sortie, il a évidemment les sorties parallèles, on a très souvent également une entrée Reset et une entrée qui permet d'activer les sorties Output Enable. Voici le brochage de ce circuit intégré 74HC595. Nous avons les deux alimentations placées de manière traditionnelle, comme on le faisait toujours dans les circuits des séries 74. Nous avons ici les huit sorties parallèles. La sortie série, et les différentes entrées. Ce qui est très intéressant, c'est qu'il est possible de mettre plusieurs registres en cascade, c'est-à -dire les uns après les autres. On voit bien qu'il faut continuer à brancher ensemble les horloges série et parallèle, qu'il faut connecter la sortie d'un registre à l'entrée du suivant, et l'on pourrait continuer ici. Vous voyez que l'on a pu ici, avec trois broches du microcontrôleur, commander 16 sorties qui peuvent par exemple commander seize LED, ou même 16 groupes de LED. Attention tout de même, il s'agit de sorties, nous aurons besoin de résistances série pour commander les LED. Il existe des registres que l'on appelle à sorties à courant constant. Vous voyez qu'ici, il y a nos trois entrées habituelles, les deux horloges et le data, la sortie série, nous avons également le reset et l'output enable, mais nous pouvons, ce qui est intéressant, connecter directement des diodes lumineuses, sans qu'il y ait un dépassement de courant. Cette unique résistance permet de déterminer le courant qui va passer dans chacune de ces sorties, bien entendu, lorsqu'elles sont actives à zéro. On voit bien ici que c'est un zéro qui va allumer la LED, puisqu'elles sont connectées ici à l'alimentation positive. De tels circuits sont proposés par plusieurs fabricants, comme Toshiba, comme Texas Instruments, comme Allegro. On trouve aussi un circuit très fréquemment dans les afficheurs du commerce, il s'appelle parfois SUM2016, sa particularité est que sa documentation n'est qu'en chinois, je n'ai jamais trouvé une documentation anglaise de ce circuit. On trouve aussi un circuit qui a ce numéro ici ISUM2016, c'est un circuit chinois et je n'ai jamais trouvé autre chose qu'une documentation en chinois pour ce circuit. Tous ces circuits ont 24 broches avec ici, les deux alimentations en tête, ici toutes les sorties, et les signaux de commande. C'est extrêmement pratique d'utiliser ce circuit, puisqu'il a 16 sorties et qu'il évite donc les résistances habituelles pour limiter le courant dans les LED. J'ai cité l'exemple de ce circuit chinois, et c'est une question qui es plus importante qu'elle n'y paraît. Les chinois sont extrêmement actifs dans le domaine des LED. On trouve énormément de produits très intéressants, mais on a parfois de la peine à trouver la documentation en chinois. C'est certainement de bonne guerre de leur part mais parfois, en tant qu'ingénieur, on est un petit peu frustré de ne pas trouver de la documentation en anglais. Essayons de regarder comment nous pouvons programmer l'envoi de données sur ces registres-série. Comme d'habitude, nous allons définir des macroinstructions pour la sortie on et off, l'horloge série haut et bas, ,l'horloge parallèle haut et bas. Et voilà une procédure très simple, qui permet d'envoyer une valeur, dans ce cas-là de huit bits, on a donc bien une boucle for qui va s'exécuter huit fois, qui va mettre selon le bit numéro i la sortie a1 ou a0, qui va ensuite envoyer un coup d'horloge en faisant monter puis en faisant descendre l'horloge parallèle, tout cela donc dans chaque itération de cette boucle, et tout à la fin, une seule activation de l'horloge, pour que le registre parallèle, donc les sorties, reçoive les données. Remarquez que dans ce programme, nous avons un & logique entre une valeur, c'est l'entrée, et 1 décalé de i. Alors cette valeur 1 décalé de i doit être calculé huit fois et c'est un peu compliqué pour le microcontrôleur, cela prend du temps. Une variante plus efficace permettra de faire le masquage toujours avec le bit 0 mais de décaler la valeur en direction de la droite à chaque itération de cette boucle for. Ce type de détail a son importance. La programmation de l'envoi des données depuis un microcontrôleur vers des afficheurs, lorsqu'ils deviennent un tout petit peu grands, est extrêmement critique en temps, et nous verrons plus tard des techniques beaucoup plus évoluées pour gagner du temps, pour être efficace. Nous avons vu comment résoudre ce besoin de broches, en utilisant des registres série et mieux, des registre série-parallèle. Nous avons vu quelques exemples de circuits registre série-parallèle, et finalement, nous avons vu comment les programmer, pour leur envoyer des données.