Matrice de LED utilisant des registres à décalage (4 / 7 étapes)

Étape 4: logiciels

L’astuce

Oui, comme tout, il y a un truc. L’astuce est qu’il n’y a jamais plus de 8 DEL allumées en même temps.

Pour que cela fonctionne bien, il faut un peu de programmation rusé. Le concept que j’ai choisie consiste à utiliser une interruption de la minuterie. Voici comment l’interruption de l’affichage fonctionne en anglais plain :

  • Minuterie de compte jusqu'à un certain point, quand atteint la routine d’interruption du service est dirigé.
  • Cette routine décide quelle ligne est celle qui suit s’affiche.
  • Les informations relatives à la ligne suivante sont leva les yeux d’une mémoire tampon et décalés dans le pilote de la colonne (cette information n’est pas "verrouillée" n’est pas encore affichée).
  • Le conducteur de la ligne est coupé, aucune LED ne s’allument actuellement.
  • Le pilote de la colonne est « verrouillé » dans les informations que nous sommes passés en deux étapes il y a les informations actuelles à afficher.
  • Le pilote de ligne puis fournit actuelle à la nouvelle ligne que nous sommes affichant.
  • Les interrupt service routine extrémités et le programme retourne au flux normal jusqu'à la prochaine interruption.

Cela arrive très très vite. L’interruption est levée toutes les 1 ms. Cela signifie que nous sommes rafraîchissant la totalité de l’écran sur une fois toutes les 8 ms. Cela signifie un taux d’affichage d’environ 125Hz. Il y a certaines préoccupations concernant la luminosité parce que nous manquons essentiellement les LEDs à un cycle de 1/8 (ils sont 7/8 du temps). Dans mon cas, j’obtiens un écran bien lumineux doté d’aucun clignotant visible.

Le plein écran LED est tracée dans un tableau. Entre les interruptions le tableau peut être modifié (être conscient d’atomicité) et apparaîtra sur l’écran au cours de la prochaine interruption.

Les spécificités de l’écriture de code pour le Microcontrôleur AVR et de la façon d’écrire du code pour parler à des registres à décalage dépasse la portée de cette instructable. J’ai inclus le code source (écrit en C et compilé avec GCC-AVR) ainsi que le fichier hex pour programmer directement. J’ai commenté tout le code, donc vous devriez être en mesure d’utiliser ceci pour éclaircir des questions sur la façon d’entrer des données dans le registre à décalage et comment fonctionne le rafraîchissement de la ligne.

Veuillez noter que j’utilise un fichier de polices fourni avec la bibliothèque C universelle ks0108. Cette bibliothèque peut être trouvée ici : http://en.radzio.dxp.pl/ks0108/

Mise à jour :

Registres à décalage : Comment

J’ai décidé d’ajouter un peu sur la façon de programme avec des registres à décalage. J’espère que cela efface pour ceux qui n’ont pas travaillé avec eux avant.

Ce qu’ils font
Registres à décalage prennent un signal d’un fil et cette information aux nombreuses différentes broches de sortie. Dans ce cas, il y a un fil de données qui prend dans les données et 8 broches qui sont contrôlées selon les données qui a été reçu. Pour améliorer les choses, il y a un outpin pour chaque registre à décalage qui peut être connecté à la broche d’entrée d’un autre registre à décalage. Cela s’appelle en cascade et rend l’expansion potentielle une perspective quasi illimitée.

Les tiges de contrôle
Registres à décalage ont 4 points de contrôle :

  • Loquet - cette broche raconte le registre à décalage lorsqu’il est temps de passer à des données nouvellement introduites
  • Données - la de 1 et de 0 en disant le registre à décalage quelles épingles pour activer sont reçus sur cette broche.
  • Horloge - il s’agit d’une impulsion envoyée par le microcontrôleur qui raconte le registre à décalage de prendre une lecture de données et de passer à l’étape suivante dans le processus de communication
  • Activer sortie - c’est un interrupteur marche/arrêt, haut = sur, faible = Off

Ce qui en fait faire votre appel d’offres :
Voici un cours intensif dans le fonctionnement des broches contrôle ci-dessus :

Étape 1: Set loquet, données et horloge faible

  • Définissant le loquet du bas indique le registre à décalage que nous sommes sur le point d’écrire dedans.

Étape 2: Broche de données définie à la valeur logique vous voulez mettre dans le registre à décalage
Etape 3: Réglage de l’horloge code pin haute, en disant le registre à décalage à lire dans la valeur de broches de données actuelle

  • Toutes les autres valeurs actuellement dans le registre à décalage seront déplacera par 1 place, faire de la place pour la valeur actuelle de la logique de la broche de données.

Étape 4: Définir la goupille horloge faible et répétez les étapes 2 et 3 jusqu'à ce que toutes les données ont été envoyées pour le registre à décalage.

  • La broche horloge doit avoir la valeur faible avant de changer la valeur de données suivante. Basculer cette broche entre haute et basse, c’est ce qui crée le « signal de synchronisation », la Maj s’inscrire il faut savoir de passer à l’étape suivante du processus.

Étape 5: Set loquet haut

  • Cela indique de prendre toutes les données qui a été déplacées dans le registre à décalage et l’utiliser pour activer les broches de sortie. Cela signifie que vous ne verrez pas de données, tel qu’il évolue aucun changement dans la sortie de pins se produira jusqu'à ce que le loquet n’est implanté.

Étape 6: Activer sortie haute

  • Il n’y aura aucune sortie d’épingle jusqu'à ce que la sortie de permettre a la valeur haute, peu importe ce qui se passe avec l’autre trois contrôlent goupilles.
  • Cette broche peut toujours rester élevée si vous le souhaitez

En cascade
Il y a deux broches, que vous pouvez utiliser pour en cascade, les Os et les Os1. OS pour les horloges de hausse rapides et Os1 pour horloges montantes lentes. Accrochez cette broche à la broche de données du Registre à décalage prochain et le dépassement de la capacité de cette puce sera entré dans l’autre.

Fin de mise à jour

S’adressant à l’écran

Dans l’exemple de programme, j’ai créé un tableau d’octets 8 appelée [row_buffer]. Chaque octet correspond à une rangée de l’affichage de 8 x 8, la ligne 0 étant le fond et la ligne 7 est haut. Le bit le moins significatif de chaque ligne est sur la droite, le bit le plus significatif sur la gauche. Modification de l’affichage est aussi facile que d’écrire une nouvelle valeur à ce tableau de données, la routine d’interruption du service prend en charge l’actualisation de l’affichage.

Programmation

Programmation ne discutera pas ici en détail. Je préviens ne pas d’utiliser un câble de programmation DAPA car je crois que vous ne pourrez pas programmer la puce une fois qu’il est cadencé à 12MHz. Tous les autres programmeurs standards devraient fonctionner (STK500, MKII, Dragon, programmeurs parallèle/série, etc..).

Fusibles :
N’oubliez pas de programmer les fusibles d’utiliser le cristal de 12MHz
hfuse : 0xC9
lfuse : 0xEF

En Action

Une fois que vous programmez la puce l’affichage doit faire défiler un « Hello World! ». Voici une vidéo de la matrice de LED dans les actions. La qualité vidéo est assez faible, que j’ai fait cela avec la fonction vidéo de mon appareil photo numérique et pas une bonne vidéo ou une webcam.

Articles Liés

Comment utiliser un registre à décalage 74HC595 avec un AVR ATtiny13

Comment utiliser un registre à décalage 74HC595 avec un AVR ATtiny13

si vous avez joué avec des microcontrôleurs et de l'électronique, alors vous avez probablement vu des afficheurs à LED à matrice de points et autres projets qui utilisent des registres à décalage comme affichage à 7 segments et plus. Cette instructab
Arduino 8 * 8 Led Matrix pilote avec des registres à décalage de 2 * 74HC595

Arduino 8 * 8 Led Matrix pilote avec des registres à décalage de 2 * 74HC595

J'ai acheté une matrice de 8 x 8 Led y compris une carte de conducteur avec une puce MAX7219CNG. Malheureusement cette puce ne fonctionnait pas correctement. J'ai donc décidé de construire mon propre pilote avec l'aide de 2 registres à décalage 74HC5
Comment utiliser un registre à décalage - Arduino Tutorial

Comment utiliser un registre à décalage - Arduino Tutorial

Dans ce tutoriel, vous apprendrez comment utiliser un registre de décalage (ou série-parallèle contrôleur). Le registre à décalage donnera à votre Arduino un 8 sorties numériques supplémentaires, en utilisant seulement 3 points sur votre carteDans ce
Tutoriel débutant : contrôler la matrice de LED avec 2 595 registres à décalage et POTENTIOMETRE

Tutoriel débutant : contrôler la matrice de LED avec 2 595 registres à décalage et POTENTIOMETRE

Je viens juste de commencer avec Arduino et les instructables d'amandaghassaei m'a beaucoup aidé. Dans son second tutorialabout entrées et sorties, elle explique comment utiliser des registres à décalage et comment contrôler une matrice de LED par mu
Matrice de LED Shirt

Matrice de LED Shirt

La chemise de matrice de LED utilise des composants de circuits souples pour créer une basse résolution défilement babillard et plateforme de jeu vidéo qui peut être contrôlée avec une manette de jeu sur un T-shirt. C'était une de mes premières expér
En utilisant une LED Dot Matrix avec un Arduino et un registre à décalage

En utilisant une LED Dot Matrix avec un Arduino et un registre à décalage

The Siemens DLO7135 Dot matrix LED est un étonnant morceau de l'optoélectronique. Il a présenté comme un 5 x 7 matricielle affichage Intelligent (r) avec mémoire/décodeur/conducteur. Avec cette mémoire, il a obtenu un affichage de ASCII caractères 96
Matrice de LED interactif Intel Galileo

Matrice de LED interactif Intel Galileo

Créer un interactif 8 x 8 LED Matrix et envoyer photos à afficher de n'importe où dans le monde entier !Dans ce projet, nous utilisons une carte Intel Galileo qui nous a généreusement donné par Intel (ils vous donner beaucoup de ceux aux Etats-Unis d
Le registre à décalage 74HC164 et votre Arduino

Le registre à décalage 74HC164 et votre Arduino

registres à décalage sont une partie très importante de la logique numérique, elles agissent comme de la colle entre les mondes parallèles et séries. Ils réduisent le nombre de fils, broche utiliser et même aider à lever la charge hors de votre cpu e
Matrice de LED avec contrôleur de jeu - premier projet A

Matrice de LED avec contrôleur de jeu - premier projet A

ce projet a été construit pour mon cours d'introduction électronique à l'Université de Waterloo au Canada.  Il s'agissait de ma première introduction à l'électronique et donc, mon premier projet.Suivez ces étapes pour construire un tableau de LED 16
Matrice de LED de 9 x 9

Matrice de LED de 9 x 9

abstrait :Il y a quelques temps, j'ai fait cette matrice de LED. Mon but était d'avoir un écran qui je pouvais contrôler avec un Arduino Microcontroller et le programme pour faire des animations et jouer à des jeux simples. Voici ma version du jeu cl
Berlin horloge, Arduino Nano, DS1307 horloge en temps réel. Registre à décalage 8 bits 74HC595N.

Berlin horloge, Arduino Nano, DS1307 horloge en temps réel. Registre à décalage 8 bits 74HC595N.

Depuis un certain temps, j'ai voulu construire une horloge de Berlin. Je ne sais vraiment pas pourquoi ? J'aime juste la démarche « différente » pour dire l'heure.Alors, comment ça marche??Commençant par le bas il y a 4 jaune s'allume chaque lumière
À l’aide d’un registre à décalage avec Raspberry Pi

À l’aide d’un registre à décalage avec Raspberry Pi

cette instructable va tenter de l'expliquer, en termes simples, ce qu'un changement de Registre est, et comment vous pouvez l'utiliser avec le Raspberry Pi pour étendre le port GPIO en exécutant huit sorties avec seulement quatre ports GPIO.Pour comm
Conduite de deux tubes Nixie avec un Arduino via un registre à décalage et deux SN74141s.

Conduite de deux tubes Nixie avec un Arduino via un registre à décalage et deux SN74141s.

tubes Nixie sont vraiment cool, à la recherche et deviennent très populaires pour leur look « rétro ». Bien qu'il existe un certain nombre de tutoriels là-bas sur l'utilisation de tubes nixie et certaines unités préemballées sympa (voir ces gentils d
Contrôle d’affichage LCD ATTiny45/85 avec un registre à décalage, programmé dans l’Arduino

Contrôle d’affichage LCD ATTiny45/85 avec un registre à décalage, programmé dans l’Arduino

Arduino en cours d'exécution sur un ATTiny45 de puce 85 est un gain de coût énorme pour les mini projets. Toutefois, vous impossible de connecter un écran compatible HD44780 comme vous avez besoin de 6 sorties, mais vous n'avez que 5. Ce problème peu