Electronique > Réalisations > Affichage / Mesures > Journal lumineux 001

Dernière mise à jour : 30/10/2009

Article non terminé, volontairement non référencé dans les sommaires du site


Présentation

Vous connaissez sans doute déjà ce qu'est un journal lumineux, sans savoir peut-être que cela s'appelle comme ça. Un tel objet se présente sous la forme d'un plus ou moins grand rectangle, et est composé d'un ensemble de lignes / colonnes de leds qui permettent de faire défiler un message d'information.

journal_lumineux_texte_hello

On en voit souvent dans les bus, dans les gares et aéroports, et parfois même dans la vitrine de certains magasins. Certains sont monochromes (une seule couleur et toujours la même) alors que d'autres sont de type multicolore. Réaliser soi-même ce genre d'équipement est très aisé si on se contente d'un message fixe, mais devient complexe si un défilement des caractères est souhaité, tout du moins si on refuse catégoriquement l'usage de composant programmable et que l'on veut s'en tenir à de la logique câblée. Il existe plusieurs méthodes pour obtenir un message lumineux défilant, le présent projet en décrit une, qui s'appuie sur un microcontrôleur de type PIC 16F628A.

Etat avancement

- Multiplexage affichage : terminé et fonctionnel, pour l'instant affichage fixe (non défilant).
- Génération (décomposition) des caractères alphanumériques : pas entièrement fini, seulement fait les 26 lettres de l'alphabet
Je ne sais pas si je finirai ce projet, un autre plus performant ayant enfin vu le jour : Journal lumineux 002.

Avertisements

Je n'ai jamais eu besoin de construire un tel engin pour mes besoins personnels, mais le questionnement d'un collègue de travail sur ce sujet m'a donné envie de m'y interresser. Celui-ci se demandait en effet s'il était possible de concevoir un tel appareil, avec un clavier d'ordinateur comme seul organe de commande pour saisir le texte à afficher. Pour l'heure, je ne sais pas si ce projet aboutira. La conception est une chose, et la réalisation et les tests en sont d'autres. Le projet auquel je m'attèle là requiert la coquette somme de 45 x 7 leds, je vous laisse calculer le total...

Schéma

Le schéma de ce journal lumineux fait appel à du multiplexage d'affichage. Ce n'est pas réellement obligatoire pour ce type de montage... mais il faut alors disposer d'une solide alimentation secteur !

journal_lumineux_001

Principe de base
Chaque caractère alphanumérique (lettres, chiffres et caractères spéciaux tel que trait d'union ou point d'interrogation) est dessiné sur une matrice de 5 (colonnes) x 7 (rangées) de leds, de la même façon que je l'avais déjà fait avec ma boitabak.

journal_lumineux_lettre_a   journal_lumineux_lettre_e   journal_lumineux_lettre_z

Le fait que chaque caractère est affiché sur plusieurs colonnes autorise leur défilement progressif et pas brutal, puisqu'il suffit de décaller chaque colonne d'un (seul) cran vers la gauche.

journal_lumineux_texte_hello

journal_lumineux_texte_hello_001a

journal_lumineux_texte_hello_001b

journal_lumineux_texte_hello_001c

Le défilement des caractères n'est pas obligatoire si le message à afficher est court, mais le devient bien si l'ensemble du texte déborde de la capacité d'affichage.

Stockage des caractères
Afin de pouvoir être affichés à l'endroit voulu, les caractères doivent être "dessinés" et stockés en mémoire, et pouvoir être appelés à tout instant. L'occupation mémoire requise pour leur stockage dépend du nombre de leds affectées à chacun d'eux, qui dans le cas présent est de 35 bits (matrice 5 x 7). En pratique, l'occupation réelle est de 5 octets, ce qui correspond à 40 bits (5 x 8 bits), 5 bits n'étant pas utilisés sur les 40. Ce qu'il faut comprendre ici, c'est qu'on ne stocke pas des caractères "entiers", mais des "tranches verticales" de caractère, cela est indispensable pour permettre un défilement par pas de une colonne à la fois. Le mieux est de s'appuyer sur un exemple concret, prennons par exemple le cas de la lettre "E".

journal_lumineux_lettre_e

Si on regarde la première colonne de la matrice formant cette lettre, on constate que toutes les leds sont allumées. Chaque led étant représentée par un bit de donnée, et chaque colonne comportant sept leds (sept bits), chaque colonne peut être stockée dans un octet de huit bits. Par convention, disons que la led la plus haute de la colonne correspont au bit de poids fort de l'octet, et que la led la plus basse correspond au bit de poids faible. Dans ces contitions, on peut dire que la valeur de l'octet représentant la première colonne du caractère "E" est "01111111" en binaire, soit 7F en hexadécimal ($7F). Notez bien encore une fois que le bit de poids fort est ici le septième bit et non le huitième bit, puisque chaque colonne ne comporte que sept leds et non huit. La valeur du huitième bit qui n'est pas utilisé peut indifférement être 0 ou 1, j'ai choisi par convention de lui laisser toujours la valeur 0. La valeur de l'octet qui représente la deuxième colonne a pour valeur "01001001" ($49), cette valeur est la même pour les colonnes 3 et 4. Et pour la cinquième colonne, valeur de "01000001" ($41).
Au total, si on compte les 26 lettres de l'alphabet, les dix chiffres de 0 à 9 et une dizaine de caractères spéciaux, il nout faut 46 x 5 octets, soit 230 octets, qui seront placés en ROM. Le ou les messages à afficher seront quant à eux conservé en EEPROM, dont la taille de 128 octets permettra un message de taille déjà conséquente (256 octets avec un 16F648A).

Programmation du texte à afficher
Le texte à afficher doit être saisi via un clavier d'ordinateur de type PS2. Pour entrer le texte, procéder comme suit :
1 - Basculer le système en mode programmation en fermant l'interrupteur SW1 / Prog.
2 - Saisir le texte souhaité, qui peut contenir les lettres de l'alphabet, les chiffres de 0 à 9 et les caractères spéciaux classiques tels que virgule, point, trait d'union, point d'exclamation, etc. Pour effacer le dernier caractère entré, utiliser la touche Backspace (retour arrière).
3 - Une fois l'intégralité du texte souhaité saisi, appuyer sur la touche Entrée. Cette action provoque la mise en mémoire du texte saisi, qui sera ainsi conservé même après coupure secteur.
4 - Basculer le système en mode normal en ouvrant l'interrupteur SW1 / Prog.

Remarques 
- la lecture du clavier est entièrement désactivé en mode normal.
- si après avoir appuyé sur la touche Entrée, un nouveau texte est saisi, il ne sera conservé en mémoire que si la touche Entrée est à nouveau appuyée.
- la lecture du clavier impose une fréquence d'horloge minimale de 6 MHz. C'est pourquoi je n'ai pas pu me contenter d'utiliser l'oscillateur interne de 4 MHz, et ai choisi de cadencer l'ensemble à 10 MHz.

Logiciel du PIC

Code source (MikroPascal Pro V2.50) et fichier binaire compilé prêt à flasher (*.hex) disponibles dans l'archive suivante.
Journal lumineux 001.zip - pour 16F628A (version du 07/08/2009)
Archive non disponible pour le moment
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Historique

30/10/2009
- Première mise à disposition.