Travailler avec un LCD symbolique basé sur le contrôleur HD4780. STM32 et LCD. Travailler avec une bibliothèque d'affichage graphique pour travailler avec LCD

À la demande des travailleurs, et mes promesses ont décidé de décrire le travail avec le signal LCD 16x2 dans l'environnement CoDevisionavr. Commençons par la description de l'écran LCD lui-même. L'écran LCD numérique alpotovitatif avec la puce intégrée HD44780 La société HITACHI peut produire des caractères en un, deux ou quatre fois de 8, 16, 20 ou 40 caractères chacun. Dans cet article, je vais considérer le LCD 16x2 (16 caractères, 2 lignes) . Cet affichage pour la connexion physique à MK a 16 conclusions. (L'emplacement des conclusions dépend de la société du fabricant) . Regardons ces conclusions. Sans la caustava, je sentais un signe de fondre. En principe, il convient à n'importe quel écran LCD.
Eh bien, je pense qu'il n'est pas nécessaire d'expliquer pourquoi une ou une autre broche est nécessaire. Tout est écrit là en russe. Mais il y a des petits mais. 1) Les écrans LCD peuvent être libérés dans deux options de 5 volts, ou de 3,3. 2) Une résistance de limitation de courant n'est pas toujours installée dans le circuit d'alimentation. Regardez soigneusement, il peut rester juste cavalier. (J'ai tellement brûlé le rétro-éclairage sur deux écrans.) 3) Schéma de la résistance à ajuster le contraste.
Alors, maintenant comment c'est un miracle pour se connecter à MK. Nous travaillerons avec ATMEGA8 et QUARTZ sur 4 MHz. Voici le projet et le schéma.
Comme vous pouvez voir quelque chose de compliqué. Les trois premiers décharges de ports RÉ. Servir à gérer et les quatre derniers pour les données. Vous pouvez également travailler avec ces affichages sur un bus 8 bits, mais je pense que donner des gaspilles de 4 pieds supplémentaires. Par conséquent, nous travaillerons sur un bus 4 bits. Planifiée avec le schéma, maintenant, avec la partie du programme. Pour initialiser l'affichage et le transférer en mode 4 bits, vous devez effectuer plusieurs commandes. Mais avant cela, je veux clarifier la manière dont les bits de contrôle fonctionnent. Le bit RS est responsable de ce qui recevra l'écran LCD. Si un Rs \u003d 0.Ensuite, nous passons l'équipe, et si 1 Ces données. Si Rw \u003d 0.Ensuite, nous sommes enregistrés dans l'écran LCD, et si 1 , puis lire. Bit E. Juste porte. C'est-à-dire dès que nous voulons entrer la commande ou les données, puis après avoir mis tous les bits sur les jambes, il suffit de présenter 1 bit E.et puis encore baisser 0 . 1 - Allumez la puissance 2 - Résiste à une pause d'au moins 20 ms 3 - une commande pour 4 bits. Pneus 4 - Résiste à une pause d'au moins 40 μs 5 - une équipe pour 4 bits. pneus (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 1) 6 - Résiste à une pause d'au moins 40 μs 7 - une équipe pour 4 bits. pneus (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 1) 8 - Pour résister à une pause d'au moins 40 μs 9 - une équipe de 4 bits. pneus (Rs \u003d 0), (rw \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 0) 10 - Résiste à la pause d'au moins 40 μs 11 - Définissez les paramètres (RS \u003d 0), (rw \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 0) (RS \u003d 0), (RW \u003d 0), (D7 \u003d 1), (d6 \u003d 0), (d5 \u003d 0), (d4 \u003d 0) 12 - Éteignez l'écran (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 0) (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (d6 \u003d 0), (d5 \u003d 1), (d4 \u003d 0) 13 - Nettoyer l'écran (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 0) (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (d6 \u003d 0), (d5 \u003d 0), (d4 \u003d 1) 14 - Mode de saisie de données (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 0) (RS \u003d 0), (RW \u003d 0), (D7 \u003d 0), (d6 \u003d 1), (d5 \u003d 1), (d4 \u003d 0) Sur comment. Maintenant, après cet Abracadabra, notre écran est prêt à recevoir des données. Et après. Et ensuite considérons les équipes LCD. Pour la transmission de commandes / données dans l'écran LCD sur le bus 4 bits, deux démarrages sont nécessaires. Nous passons d'abord les plus âgés de 4 octets et la seconde que nous transmettons les plus jeunes 4 octets. En outre, toutes les commandes que je vais écrire par paires. Équipe nettoyant l'indicateur et réglage du curseur dans le coin supérieur gauche. Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 0, d7 \u003d 0 (e \u003d 1 (0) rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 0, d6 \u003d 0, D7 \u003d 1 (e \u003d 1 puis 0) Commande de commande à la position gauche. (X-signifie pointant quelle valeur) Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 0, d7 \u003d 0 (e \u003d 1 alors 0) rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 1, D7 \u003d x (e \u003d 1 puis 0) La commande définit la direction de décalage du curseur (ID \u003d 0/1 à gauche / droite). En outre, la résolution du décalage d'affichage (sh \u003d 1) lors de l'enregistrement dans DDRAM. Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 0, d7 \u003d 0 (e \u003d 1 puis 0) rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 1, d6 \u003d id, D7 \u003d sh (e \u003d 1 puis 0) La commande d'affichage (D \u003d 1) et sélectionnez le curseur (A, B). A \u003d 0, b \u003d 0 Pas de curseur, rien ne clignote A \u003d 0, b \u003d 1 Curseur non, clignote tout le symbole A \u003d 1, b \u003d 0 Le curseur sous forme de soulignement ne clignote pas A \u003d 1, b \u003d 1 Le curseur sous forme de soulignement et clignote Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 0, d7 \u003d 0 (e \u003d 1 puis 0) rs \u003d 0, rw \u003d 0, d4 \u003d 1, d5 \u003d d, d6 \u003d a, D7 \u003d b (e \u003d 1 puis 0) Équipe d'affichage / curseur (SC \u003d 0/1 curseur / affichage RL \u003d 0/1 gauche / droite). Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 0, d7 \u003d 1 (e \u003d 1 (0) rs \u003d 0, rw \u003d 0, d4 \u003d sc, d5 \u003d rl, d6 \u003d x, D7 \u003d x (e \u003d 1 puis 0) Commande d'installation du bit de pneus (DL \u003d 0/1 4/8 bits) ainsi que la page du signe du R. Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 0, d6 \u003d 1, d7 \u003d dl (e \u003d 1 puis 0) rs \u003d 0, rw \u003d 0, d4 \u003d 1, d5 \u003d 0, d6 \u003d p, D7 \u003d 0 (e \u003d 1 puis 0) La commande d'adresse de configuration de l'opération suivante avec l'installation du curseur et sélectionnez CGRAM (ses caractères inventés). Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 1, d6 \u003d acg, d7 \u003d acg (e \u003d 1 puis 0) RS \u003d 0, rw \u003d 0, d4 \u003d ACG, D5 \u003d ACG, D6 \u003d ACG, D6 \u003d ACG, D7 \u003d acg (e \u003d 1 puis 0) Commande de configuration d'une opération de fonctionnement suivante et sélection de la zone de mémoire DDRAM (générateur de signes). Rs \u003d 0, rw \u003d 0, d4 \u003d 0, d5 \u003d 1, d6 \u003d ajouter, d7 \u003d ajouter (e \u003d 1 puis 0) RS \u003d 0, rw \u003d 0, d4 \u003d Ajouter, d6 \u003d Ajouter, d6 \u003d Ajouter, D7 \u003d ajouter (e \u003d 1 puis 0) Commande d'enregistrement de données dans la zone actuelle. Rs \u003d 1, rw \u003d 0, d4 \u003d DATA, D5 \u003d DATA, D6 \u003d DATA, D7 \u003d DATA (E \u003d 1 ALU 0) RS \u003d 1, RW \u003d 0, D4 \u003d DATA, D6 \u003d DATA, D6 \u003d DATA, D6 \u003d DATA, D6 \u003d D7 \u003d données (e \u003d 1 puis 0) La commande de lecture de données dans la zone actuelle. Rs \u003d 1, rw \u003d 1, d4 \u003d DATA, D5 \u003d DATA, D6 \u003d DATA, D7 \u003d DATA (E \u003d 1 puis 0) RS \u003d 1, RW \u003d 1, D4 \u003d DATA, D6 \u003d DATA, D6 \u003d DATA, D6 \u003d D7 \u003d données (e \u003d 1 puis 0) C'est en fait toutes les équipes. Il reste encore une équipe de lire le drapeau d'exagération, mais je ne l'utilise pas, mais je supporte simplement entre chaque équipe au moins 40 μs. C'est tout. Et maintenant, après avoir lu ce traité, buvez une tasse de thé ou de café et d'oublier tout. Comme tout ce musura prend les fonctions de la bibliothèque CodeVisionavr. Créez un nouveau projet car il a déjà été dit. Pour ceux qui ne connaissent pas ici, le reste entrave dans le code générateur à l'onglet LCD. et choisir Portd.. Ce que nous avons fait. Le premier nous avons dit au programme que nous voulons travailler avec l'écran LCD (en sélectionnant l'onglet LCD.). Ensuite, nous avons dit que nous le connections au port RÉ.. En dessous de la liste déroulante, il est possible de sélectionner le nombre de caractères de la chaîne. Comme la valeur par défaut vaut 16 Et nous voulons travailler avec LCD 16x2, il n'est pas nécessaire de changer quoi que ce soit. Ci-dessous pour les invites sont des jambes de port peintes pour la connexion correcte de l'écran LCD au MK. Tous, enregistrez le projet et regardez le code fraîchement généré. La première chose à faire attention est à un morceau de code après la directive du préprocesseur #Inclure. Ici sur ceci: // Fonctions du module LCD alphanumérique #Asme .equ __lcd_port \u003d 0x12; portdd #endasm #include > Discerons la ligne de discernement. Le commentaire de première ligne dans lequel il dit que nous avons connecté le fichier d'en-tête avec des fonctions pour travailler avec l'écran LCD emblématique. Nous ouvrons l'appareil pour entrer des commandes d'assembleur. La chaîne suivante attribue le port auquel l'écran LCD est connecté. Équipe .ier. Dans l'assembleur fait la même chose #Inclure. Dans C. Si vous avez choisi au hasard le code dans le générateur de code, il peut toujours être modifié dans cette ligne. Le numéro de port peut toujours être trouvé dans le fichier d'initialisation MK. Il se connecte toujours à la toute première ligne. Dans notre cas, mega8.h.. La ligne suivante ferme l'unité de code de montage. Et la dernière ligne connecte simplement tout ce dont vous avez besoin pour travailler avec l'écran LCD. Maintenant, passons par des fonctions de base. La première fonction qui doit être provoquée avant de démarrer Tourmenté LCD - Ceci est bien sûr la fonction d'initialisation d'affichage. Elle ressemble à ceci: vide lcd_init (sans signé Char LCD_Columns) Cette fonctionnalité initialise l'affichage et le paramètre transmis doit être le nombre de caractères de la ligne. Nous lavons notre programme au fond et devant le cycle principal, nous voyons deux lignes du contenu suivant: // Initialisation du module LCD lcd_init (16); Voici les mêmes 16 lignes sélectionnées dans la liste du programme de générateur de code et ont poussé l'argument à la fonction. Ici aussi, si vous avez oublié une peur que vous avez 8 ou 20 caractères sur la chaîne, modifiez simplement la valeur de l'argument dans cette fonction. vide lcd_gotoxy (sans signé Char X, non signé Char Y) Cette fonctionnalité, en juger par son nom, traduit le curseur en position x, Y.. Ici x. - Ceci est un hêtre. De gauche à droite du 0 au 15/19/39 (Dépend du nombre de lettres dans la chaîne) . MAIS y. - Ceci est une chaîne. De haut en bas de 0 à 0/1/3 (Dépend du nombre de lignes) . vide LCD_PUTCARCHAR (CHAR C) Cette fonctionnalité affiche un caractère à la position actuelle. Exemple: lCD_PUTCARTCHAR ("A") ou alors lCD_PUTCARTCHAR (0x41) Qu'à la sortie donnera le même résultat. C'est-à-dire que le paramètre peut être à la fois un symbole et son code. Lcd_gotoxy (0,0); Lcd_putchaar ("a"); Lcd_gotoxy (0,1); LCD_PUTCARTCHAR (0x41); Je pense que les commentaires ici sont aussi, regardons le résultat.
Fonction suivante. vide lcd_puts (char * str) Cette fonctionnalité affiche une chaîne située en SRAM à partir de la position actuelle. Exemple: Lcd_gotoxy (0,0); Lcd_puts ("string"); Nous voyons:
Fonction suivante. vide LCD_PUTSF (Char * str) Cette fonctionnalité affiche une chaîne située en flash à partir de la position actuelle. Exemple: Lcd_gotoxy (0,0); Lcd_puttsf ("string"); Nous voyons:
Eh bien, il ferme toutes cette fonction de "gomme" disgrâce vide LCD_CLESR (VOID) Appelez cette fonctionnalité Vous effacerez tout ce qui est à l'écran et le curseur augmentera à la position extrême gauche de la chaîne supérieure. Donc, pour un démarrage, vous pouvez afficher des mots et des chiffres sur l'écran LCD à l'aide de fonctions prêtes à l'emploi. Parlons maintenant de savoir comment émettre la valeur des variables. À ces fins, nous aurons besoin d'une autre bibliothèque. Eh bien, ceux qui sont programmés sur le PC doivent savoir. On l'appelle stdio.h. Nous atteignons le haut du programme et après la directive du préprocesseur #Inclure. Doblym #Inclure. En conséquence, notre code va jeter un oeil. // Fonctions du module LCD alphanumérique #Asme .equ __lcd_port \u003d 0x12; portdd #endasm #include #Inclure. Maintenant, prenons connaissance avec la fonction qui est engagée dans le formatage du texte. void printf (char flash * fmtstr [, arg1, arg2, ...]) Comment ça fonctionne. DANS char Flash * fmtstr Le format de la valeur de sortie est défini et dans les arguments arg1, arg2, ... Le nom de la variable. Exemple. non signé Charp Temp \u003d 123; Printf ("TEMP \u003d% 05d \\ n", TEMP); Qu'est-ce que cela signifie qu'Abra-Kadabra? La première ligne crée une variable et l'attribue la valeur. Ici tout est clair, mais quel est le second. Tout dans l'ordre. D'abord affiché temp \u003d., ensuite 00123 . Pourquoi excrété 00123 . Mais parce que nous avons une condition % 05d \\ N Qui dit: 1) % - Nous allons formater les valeurs du premier argument 2) 0 - Nous retirerons n Signes, vides Zeros Scratch 3) 5 - Nous prenons 5 caractères si le nombre est inférieur à 5 caractères, puis remplissez les sucettes avec des zéros. Cela indique l'élément 2. Le nombre sera aligné sur le bord droit. quatre) rÉ. - Nous dérivons un nombre en format décimal. cinq) \\ N. - Majeur après avoir affiché le symbole pour aller à une autre chaîne. Fonction suivante. vOID SPRINTF (Char Flash, Char Flash * FMTSTR [, Arg1, Arg2, ...]) Cette fonctionnalité est la plus intéressante pour nous. Il formate la chaîne et l'écrit dans un tableau. Après que nous puissions avoir une matrice audacieuse pour afficher. Comment ça fonctionne. non signé Charp Temp \u003d 123; String de caractère non signé; Sprintf (chaîne, "temp \u003d% 05d \\ n", temption); Lcd_puts (chaîne); C'est comme ça que ça a l'air vivant.
Nous avons donc appris à produire du texte formaté sur l'écran LCD. Ensuite, parcourez brièvement les types de transformation. jE. rÉ. - retirer un tout décimal avec un signe u. - Pour générer décimale sans signe e. -d.d e-d E. - Pour la sortie d'une substance avec un point flottant du type -d.d e-d f. - Pour la sortie d'une substance avec un point flottant du type -d.d. x. - Pour le retrait dans les messieurs, de petites lettres X. - pour se retirer en sixième de la forme de grandes lettres c. - Afficher dans le symbole si vous écrivez % -05d. puis signe "-" Forcé d'aligner sur le bord gauche et les sucettes ne seront pas bouchées. Si vous essayez d'imprimer un numéro de point flottant, alors grandement surpris. Le nombre n'est pas imprimé. Dans l'embuscade)), le problème réside dans les paramètres du compilateur. Pour que le compilateur commence à comprendre le format flotter Vous devez le configurer un peu. Pour ça aller Projet-\u003e Configurer. et aller à l'onglet C compilateur. Dans la province (s) Printf Caractéristiques: Choisir flotteur, largeur, précision. C'est tout. Essayez, expérimentez. Il y aura des questions, écrivez sur le forum. Bonne chance!

Le lecteur de notre blog mikhail ( mishadesh) A créé une excellente bibliothèque pour travailler avec LCD. Et suggéré d'écrire un article pour démontrer ses capacités. En fait, aujourd'hui, il s'agit de cela et nous serons discutés que les fonctions sont mises en œuvre, ainsi que à la fin de l'article, il y aura un exemple de travailler avec l'affichage.

Comme d'habitude, je commencerai par la discussion du fer ... et puis il n'y a vraiment rien à parler. Comme dans le premier article sur le travail avec des affichages (), nous utiliserons le tableau de débogage Mini STM32.. En réalité, connecter l'affichage, les commandes principales pour la rédaction de données, la séquence des instructions d'initialisation - tout cela est là \u003d) Par conséquent, nous allons maintenant directement à la discussion de la bibliothèque pour travailler avec des affichages graphiques.

Voici une liste complète des fonctionnalités avec explications:

La fonction suivante, commee à partir de son nom, modifie l'orientation de l'écran. Deux positions d'écran peuvent respectivement deux valeurs de paramètres possibles orientation:

  • Orientation_portrait.
  • Orientation_album.

La fonction dessine un symbole sur l'écran graphique en la plaçant sur les coordonnées transmises à la fonction, ainsi que en définissant sa couleur. Le dépistage des symboles correspond à une police définie dans le fichier. font.c. (Le fichier va dans la bibliothèque).

De la fonction Lcd_drawchar () La fonction suivante suit:

Vide lcd_drawstring (char * s, uint16_t x, uint16_t y, uint16_t couleur, uint16_t backcolor, uint8_t istransparent);

Ici, il est clair et sans mots inutiles 😉 La fonction imprime sur LCD. Ligne de texte. La base de cette fonction est la précédente - Lcd_drawchar ().

En plus des symboles et du texte, bien sûr, il est nécessaire d'avoir la capacité de dessiner des primitives graphiques de base, telles qu'une ligne ou un cercle. Pour cela, ce qui suit est mis en œuvre:

Vide lcd_drawline (int x1, int y1, int x2, int y2, uint16_t couleur); Vide lcd_drawrect (int x1, int y1, int x2, int y2, uint16_t couleur, uint8_t rempli); Vide lcd_drawellipse (uint16_t x1, uint16_t y1, uint16_t r, uint16_t couleur);

Pour dessiner une ligne, vous devez passer à la fonction de coordonnée du point de départ, les coordonnées du point final, ainsi que la couleur souhaitée. Pour un rectangle - les coordonnées du coin supérieur gauche et des coordonnées du coin inférieur droit (!). Dernier paramètre rempli - détermine si la forme est nécessaire pour effectuer. L'unité signifie Oui, la figure sera peinte avec la couleur sélectionnée, zéro - seul le contour de la figure sera tiré. Ceci est compréhensible) Seul un cercle est resté - une fonction Drawellipse (). Ici, au lieu des coordonnées du début et de la fin (corners supérieurs / inférieurs), nous transmettons le centre du cercle et du rayon comme des arguments.

Eh bien, enfin, une autre caractéristique:

Vide lcd_fillscr (couleur uint16_t);

La fonction vous permet de verser l'écran avec une couleur unie.

Toutes les fonctionnalités énumérées sont implémentées dans le fichier. Gui_drv.c..

En plus d'eux, la bibliothèque comprend des fonctions pour écriture de données dans l'affichage ( Lcd_driver.c.) ainsi que des polices déjà mentionnées ( font.c.). Comme vous pouvez le constater, tout est clairement trié par différents fichiers, donc en principe, tout est très clair, alors allons à l'exemple pratique!

Traite avec! Aller au fichier. principal c.... Je ne donnerai pas le code complet des fonctions d'initialisation périphérique, tout cela peut être visualisé directement dans le fichier, ou dans l'article précédent, la référence au début de cet article 😉 fonction principale ():

INTERIPH (); initfsmc (); initlcd (); retard (10 000); LCD_FILLSCR (0xFFFF); retard (100); LCD_Setorient (orientation_album); retard (100); LCD_DRAWSTRING ( "Bibliothèque pour LGDP4532", 30, 30, 0x888f, 0x0000, 0); Lcd_drawrect (100, 100, 200, 200, 0x0000, 0); Lcd_drawrect (120, 120, 180, 180, 0xFF00, 1); Lcd_drawelpsse (150, 150, 50, 0xf000); Tandis que (1) ())

Nous commençons par l'initialisation, peignons l'écran avec blanc et installons l'orientation du paysage de l'écran. Et maintenant aller pour dessiner des graphiques)

Nous affichons la chaîne à l'écran, ainsi que deux rectangles et cercle. Le résultat est évident:

Évidemment, tout fonctionne bien

Donc, à cela aujourd'hui, vous avez terminé, merci, grâce à Mikhail pour le travail effectué et que les matériaux présentés. Voici les contacts de l'auteur de la bibliothèque:

Skype - mishadesh

Poster - [Email protégé]

C'est tout, merci de votre attention, de réunions ambiguës!

Général

La carte de débogage de STM32L-Discovery a un indicateur de cristaux liquides (LCD, LCD anglais. Affichage à cristaux liquides), ayant six panneaux de 14 segments, 4 signes du côlon (côlon), 4 points (DP), 4 bandes (bar). Tous les segments sont combinés dans le complexe de groupe, COM1, COM2, COM3 dans 24 segments. Chaque groupe a son propre "fil partagé" distinct.


Le tableau de débogage est installé Microcontroller STM32L152RBT6. Le microcontrôleur possède un contrôleur LCD intégré, qui contrôle les indicateurs de cristaux liquides monochromes.
Contrôleur LCD:

  1. Vous permet de configurer la fréquence de mise à jour (taux de trame - la fréquence avec laquelle les informations sur l'écran LCD sont mises à jour)
  2. Prend en charge le mode de contrôle statique et multiplex
  3. Prend en charge l'installation du logiciel contrasté
  4. Vous permet d'utiliser plusieurs niveaux de tension de commande (jusqu'à quatre)
  5. Utilise le double tampon qui vous permet de mettre à jour les données des registres LCD_RAM \u200b\u200bà tout moment du programme, sans perturber l'intégrité des informations d'affichage.

Registres de mémoire de contrôleur LCD

Dans le microcontrôleur STM32L152RB, les registres LCD_RAM \u200b\u200bspéciaux sont mis en évidence, les informations stockées dans lesquelles correspond au groupe de segments COM0 - COM3. Chaque groupe correspond à deux 32 registres de décharge. Un tel nombre de registres permet au microcontrôleur de contrôler l'écran LCD avec un grand nombre de segments que d'installés sur la carte de débogage.

Pour contrôler l'écran LCD avec 176 segments, 4 groupes de COM0 - COM3 sont utilisés pour 44 segments chacun, 8 groupes de COM0 - COM7 dans 40 segments sont utilisés pour contrôler la LCA avec 320 segments chacun.



La carte de débogage STM32L-Discovery utilise l'écran LCD avec 96 segments séparés par 4 groupes de COM0 - COM3 dans 24 segments chacun.


L'écran LCD sur la carte de débogage de STM32L-Discovery est connecté de manière à ce que les bits S40, S41 de la deuxième registre LCD_RAM \u200b\u200bsoient utilisés dans chaque groupe et les bits S0-S27 des premiers registres LCD_RAM. Pour réduire le nombre de registres utilisés, les informations des bits S40-S43 seront enregistrées dans les bits libres S28-S31 à l'aide de la fonction de réaffectation (remappage).

Unité de diviseur de fréquence

L'unité de séparateur de fréquence (générateur de fréquence) vous permet d'obtenir différentes fréquences de trame (taux de trame) sur l'écran LCD dans la plage de 32 kHz à 1 MHz. Comme une source d'un signal de tacting peut être utilisée:
  1. Générateur NF externe avec une fréquence de 32 kHz (LSE. Externe à basse vitesse)
  2. Générateur HF interne avec une fréquence de 37 kHz (LSI. Basse vitesse interne)
  3. Générateur RF externe avec diviseurs de fréquence de 2,4,8 et 16 et fréquence maximale de 1 MHz. (HSE. Externe à grande vitesse)
Pour obtenir une synchronisation précise et réduire le déplacement de la tension CC à travers les segments de l'écran LCD, la source du signal de tacting doit avoir une stabilité. Le signal de tacting LCDCLK entre dans le contrôleur LCD. La fréquence du signal d'horloge est divisée, conformément aux coefficients de fission définis par les bits PS, l'enregistrement LCD_FCR DIV (registre de contrôle de trame). La fréquence résultante à la sortie du bloc de diviseur de fréquence est calculée par la formule:

F CK_DIV \u003d F LCDCLK / (2 PS * (16 + DIV))

La fréquence de cadre est calculée par la formule:

F Cadre \u003d f ck_div * devoir

Où le devoir est le coefficient de remplissage - le rapport de la durée de l'impulsion à sa période. Au cours d'une image sur la LCA, les informations provenant des registres LCD_RAM \u200b\u200b[X], LCD_RAM \u200b\u200bet TD sont affichés séquentiellement. Pour l'écran LCD installé sur la carte de débogage, dans une image, le contrôleur LCD doit dériver des informations de 4 groupes de segments COM0 - COM3, la durée de l'impulsion de contrôle pour un groupe sera de 1/4 de la durée du trame, c'est-à-dire DROIT \u003d 1/4.

Gestion LCD

Il existe deux façons de contrôler l'écran LCD - mode de contrôle statique et mode de contrôle du multiplex. Avec affichage statique, chaque segment de décharge indicateur est connecté à la sortie du microcontrôleur. En ce qui concerne l'écran LCD, sur le conseil d'administration de STM32Discovery Debug, il faudra 6 * 14 \u003d 84 Conclusions de microcontrôleur (à l'exclusion du côlon, des points et des bandes). En raison de l'utilisation d'un tel certain nombre de conclusions, la connexion d'une autre périphérie sera impossible. Le microcontrôleur STM32L152RB a 64 sorties. Lorsque le mode de contrôle du multiplex (mode de contrôle dynamique), les mêmes segments de décharge indicateurs sont combinés en groupes. L'affichage des informations survient en raison de l'allumage alternatif des segments de décharge indicateurs, avec une fréquence qui n'est pas perçue par l'œil humain.

Le contrôle du multiplex vous permet de gérer un grand nombre de segments. Au lieu d'un contrôle séparé par chaque élément, ils peuvent ajouter des colonnes et des colonnes (COM et SEG), ainsi simplifiées par le circuit de commande, car Chaque segment ne nécessite pas sa propre ligne de contrôle. Pour activer le segment sélectionné, il est nécessaire de soumettre la différence dans les potentiels COM et SEG. Un exemple de fonctionnement de la première décharge indicatrice ("1:" est affiché sur l'indicateur):


Le premier chiffre de l'indicateur au moment t 0


Le premier chiffre de l'indicateur au moment t 1


Le premier chiffre de l'indicateur au moment t 2


Système général de connexion de segments aux conclusions de l'écran LCD


Diagramme de connexion des conclusions de l'écran LCD aux ports du microcontrôleur

Pour les lignes SEG, la tension de commande est utilisée, dont le nombre de niveaux est déterminé par le coefficient de biais. L'écran LCD sur la carte de débogage utilise le mode de contrôle du multiplex avec droit \u003d \u200b\u200b1/4 et biais \u003d 1/3. La valeur de droit et de biais est installée via le registre LCD_CR (registre de contrôle) dans les bits de service et de biais.

Entraine toi

Configuration des ports du microcontrôleur

Pour contrôler les ports LCD, le microcontrôleur doit être configuré en conséquence:
  1. À la sortie
  2. Utilisez une fonction alternative AF 11 (fonction alternative)
  3. Avoir des fréquences de sortie dans le port 400 kHz
  4. Utilisez le mode push-pull
  5. Sans résistances de serrage
Lorsque le port fonctionne dans une fonction alternative, le tampon de sortie du port est contrôlé par les signaux de la périphérie. Le fichier d'en-tête STM32LXX.H CMSIS Bibliothèque contient une description de tous les registres périphériques, ainsi que des structures d'accès.

Les conclusions de l'écran LCD sont connectées aux ports Gpioa (PA1-PA3, PA8-PA10, PA15), GPIOB (PB3-PB5, PB8-PB15), GPIOC (PC0-PC3, PC6-PC11) du microcontrôleur. Pour le travail de la LCA, vous devez soumettre un signal d'horloge aux ports sélectionnés. Le tact des ports GPIO du microcontrôleur provient du bus AHB RCC (réinitialisation et contrôle de l'horloge) - Systèmes de tact et de réinitialisation. Un signal d'horloge est effectué en installant les bits correspondants dans le registre RCC_AHBENR (enregistrement d'activation de l'horloge périphérique AHB).

RCC_AHBENR registre (la figure montre les 15 premiers décharges)

Pour Gpioa, GPIOB, Ports GPIOC, il est nécessaire de définir des décharges de 1 à 0, 1, 2.

Ensuite, je fournirai le code d'enregistrement d'informations dans le registre à l'aide de bitmascus et à l'aide de codes hexadécimaux. L'utilisation de bitmask est plus pratique, mais le travail avec des codes hexadécimaux vous permet de comprendre l'essence de travailler avec des registres.

RCC-\u003e Ahbenr | \u003d (rcc_ahbenr_gpioaen | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEEN); ou RCC-\u003e AHBENR \u003d 0x7; / * 0x7 \u003d 111 * /

Pour spécifier les modes de fonctionnement du port, le registre GPIOX_MODER (GPIO Port Mode Register) est utilisé (x \u003d a..h). Tous les décharges de registre sont regroupés dans le groupe de modes, où Y numéro Pina est le port correspondant. Les ports doivent être configurés en mode de fonction alternatif, c'est-à-dire Dans un groupe responsable de l'IDU, définissez la valeur de 10. Pour le port Gpioa, vous devez ajuster les broches 1-3.8-10.15, c'est-à-dire 1 à 3,5,7,17,19,21,31 décharges.


Enregistrer gpiox_moder (enregistrement en mode GPIO Port)

Gpioa-\u003e moder | \u003d (gpio_moder_moder1_1 | GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1 | GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1 | GPIO_MODER_MODER15_1); ou gpioa-\u003e moder \u003d 0x802a00a8; / * 0x802A00A8 \u003d 1000 0000 0010 1010 0000 0000 0000 1010 1000 * /
Les ports du microcontrôleur doivent être traduits en mode push-pull. Pour ce faire, vous devez définir 1 dans le registre GPIOX_OTYPER (Registre de type de sortie GPIO) 1 dans les décharges responsables des broches.


GPIOX_OTYPER (Type de sortie GPIO Type de sortie)

Gpioa-\u003e oyper_ot_1 | gpio_otyper_ot_2 | gpio_otyper_ot_3 | gpio_otyper_ot_8 | gpio_otyper_ot_9 | gpio_otyper_ot_10 | gpio_otyper_ot_15); ou gpioa-\u003e otyper & \u003d ~ 0x0000870e; / * 0x870e \u003d 1000 0111 0000 1110 * /
Les deux options affectent les broches sélectionnées. (Les broches 1-3.8-10.15 sont configurées pour le port GPIA). Si vous devez traduire toutes les broches de port en mode Push-Pull, vous pouvez écrire à la valeur de registre:
Gpioa-\u003e otyper \u003d 0x0;
Pour spécifier la fréquence des informations sur le port, le registre GPIOX_OPEEDR (GPIO Port Sortie Speed \u200b\u200bRegister) est utilisé. Tous les décharges de registre sont regroupés dans des groupes opeedry, où y est un numéro de pine du port correspondant. Dans cet article, la fréquence de 400 kHz doit être installée. Dans un groupe responsable des IDU, définissez la valeur 00.


Inscrivez-vous GPIOX_OSPEEDR (registre de vitesse de sortie du port GPIO)

GpioA-\u003e OSPEEDR & \u003d ~ (GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR2 | GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR10 | GPIO_OSPEEDER_OSSPEEDR15); ou gpioa-\u003e opeedr & \u003d ~ 0xc03f00fc; / * 0xc03f00fc \u003d 1100 0000 0011 1111 0000 0000 1111 1100 * /
Si vous devez définir la fréquence de sortie sur Port 400 kHz pour toutes les goupilles, vous pouvez écrire à la valeur du registre:
Gpioa-\u003e opeedr \u003d 0x0;
Pour désactiver les résistances à pull-up, retirez-vous pour les broches sélectionnées, utilisez le registre GPIOX_PUPUPDR (GPIO PORT PULLUP / Registre de pull-Down). Tous les décharges de registre sont regroupés dans des groupes de pubon, où y est le numéro du port correspondant. Pour désactiver le resserrement des résistances dans un groupe responsable des IDU est défini sur 00.


Inscrivez-vous GPIOX_PUPUPDR (GPIO TIX-UP / DIBLISSEMBRE DIX-DOWN)

Gpioa-\u003e chippdr & \u003d ~ (gpio_pupdr_pupdr1 | gpio_pupdr_pupdr2 | gpio_pupdr_pupdr3 | gpio_pupdr_pupdr8 | GPIO_PUPUPDR_PUPDDR9 | GPIO_PUPUPDR_PUPDDR10 | GPIO_PUPUPDR_PUPDDR15); ou gpioa-\u003e chiotdr & \u003d ~ 0xc03f00fc; / * 0xc03f00fc \u003d 1100 0000 0011 1111 0000 0000 1111 1100 * /
Si vous devez éteindre les résistances de serrage pour toutes les épingles, vous pouvez écrire à la valeur de registre:
Gpioa-\u003e chippdr \u003d 0x0;
Pour utiliser une fonction alternative pour les ports du microcontrôleur, deux registres GPIOX_AFRL (Fonction GPIO Alternate Foncregistre) est utilisée, responsable des broches plus jeunes (de 0 à 7) et GPIOX_AFRH (GPIO Alternate Fonction High Register), qui est responsable. pour les épingles plus anciennes (de 8 à 15). Tous les décharges de registre sont regroupés dans les groupes AFRLY et AFHY, où y est un numéro de pine du port correspondant. Les ports doivent être configurés pour utiliser la fonction alternative AF11, car celle-ci dans le groupe responsable des IDU doit être définie sur 1011.


Inscrivez-vous GPIOX_AFRL (GPIO Alternate Fonces Inscrivez-vous)


Inscrivez-vous GPIOX_AFRH (GPIO Alternate Fonction High Register)

Pour ce faire, écrivez aux registres:
Gpioa-\u003e afr \u003d 0xBBB0; / * 0xbbb0 \u003d 1011 1011 1011 0000 * / GpioA-\u003e AFR \u003d 0xB0000BBB; / * 0xb0000bbb \u003d 1011 0000 0000 0000 0000 0000 1011 1011 1011 * /

AFR \u003d 0xBBBB0 - Écrit une valeur au registre GPIOX_AFRL.
AFR \u003d 0XB0000BBBB - Écrit une valeur au registre GPIOX_AFRH.

Paramètres des ports GPIOB de pins respectifs, GPIOC sont fabriqués de la même manière.

Configuration du contrôleur LCD

Lorsque vous travaillez avec le contrôleur LCD, comme avec une autre périphérie, il est nécessaire de soumettre un signal d'horloge. Un signal d'horloge est également introduit au système de gestion de l'alimentation. Le contrôleur et le système de gestion de l'alimentation pour la tacture utilisent le bus APB1. Pour résoudre l'horloge dans le registre RCC_APB1ENR (enregistrement d'activation de l'horloge périphérique APB1), il est nécessaire de définir 1 décharges sur 9 et 28.


Registre RCC_APB1ENR (enregistrement d'activation de l'horloge périphérique APB1)

RCC-\u003e apb1enr | \u003d rcc_apb1enr_pwren | rcc_apb1enr_lcden; ou RCC-\u003e apb1enr | \u003d 0x10000200; / * 0x10000200 \u003d 1 00h00 00h00 0000 0000 0010 0000 0000 * /
Pour travailler le contrôleur LCD, vous devez spécifier la source des signaux d'horloge. La source est spécifiée dans le registre RCC_CSR. Par défaut, l'enregistrement dans ce registre est interdit. Dans le registre de gestion de l'alimentation PWR_CR (registre de contrôle de l'énergie PWR), la protection contre l'écriture sur le registre RCC_CSR est supprimée. RCC_CSR registre contrôle les sources d'horloge de l'horloge RTC et le contrôleur LCD
L'enregistrement dans le registre RCC_CSR est autorisé à installer 1 dans la catégorie 8 de l'enregistrement PWR_CR.


Registre PWR_CR (registre de contrôle de l'énergie PWR)

PWR-\u003e cr | \u003d pwr_cr_dbp; ou pwr-\u003e cr | \u003d 0x100; / * 0x100 \u003d 1 0000 0000 * /
Pour modifier la source de l'horloge du contrôleur LCD (et une horloge RTC également), vous devez d'abord réinitialiser la source de l'horloge du jeu de bits RTCRST (réglage 1 à 23 catégorie) dans le registre RCC_CSR (contrôle / registre d'état).


Registre RCC_CSR (contrôle / enregistrement d'état)

RCC-\u003e CSR | \u003d RCC_CSR_RTCRST;
Ou écrire une valeur dans le registre à l'aide de l'opérateur "| \u003d", car En valeur
Le registre par défaut est différent de 0x0:
RCC-\u003e CSR | \u003d 0x800000; / * 0x800000 \u003d 1000 0000 00h00 0000 0000 0000 0000 * /
Pour sélectionner une nouvelle source d'horloge, vous devez supprimer le bit RTCRST:
RCC-\u003e CSR & \u003d ~ RCC_CSR_RTCRST; ou RCC-\u003e CSR & \u003d ~ 0x800000;
La source du signal d'horloge est sélectionnée un générateur LC externe. Pour activer le générateur dans le registre RCC_CSR, vous devez installer LSON BITS (SET 1 à 8 catégories):
RCC-\u003e CSR | \u003d rcc_csr_lseon; ou RCC-\u003e CSR | \u003d 0x100; / * 0x100 \u003d 1 0000 0000 * /
Après avoir tourné le générateur, il est nécessaire de le stabiliser pour le stabiliser. La préparation du générateur est vérifiée par le paramètre LSERDY BIT dans le registre RCC_CSR:
Tandis que (! (RCC-\u003e CSR & RCC_CSR_LSERDY));
La sélection du LC externe du générateur en tant que source d'horloge est effectuée par paramètre dans le groupe RTCSEL de valeurs RCC_CSR 01:
RCC-\u003e CSR | \u003d rcc_csr_rtcsel_lse; ou RCC-\u003e CSR | \u003d 0x10000; / * 0x10000 \u003d 01 0000 0000 0000 0000 0000 * /
Dans le contrôleur LCD, vous devez installer le mode de biais requis. Pour ce faire, dans le registre LCD_CR (registre de contrôle LCD), vous devez définir la valeur de 10 au groupe de biais. Avant d'installer le bit, il est nécessaire de dégager les bits de la "ordures".


LCD_CR Inscrivez-vous (enregistrement de contrôle LCD)

Réinitialiser les bits:
LCD-\u003e CR & \u003d ~ lcd_cr_bias; ou LCD-\u003e CR & \u003d ~ 0x60;
Sélection du mode de biais \u003d 1/3 à l'aide de bitmascus:
LCD-\u003e CR | \u003d LCD_CR_BIAS_1; ou LCD-\u003e CR | \u003d 0x40;
Installez le mode droit \u003d \u200b\u200b1/4. Pour ce faire, je débarrassez d'abord tous les bits:
LCD-\u003e CR & \u003d ~ LCD_CR_DUTY; ou LCD-\u003e CR & \u003d ~ 0x1C;
Installez la valeur 011 dans le groupe de fonctions LCD_CR pour
DROIT \u003d 1/4:
LCD-\u003e CR | \u003d LCD_CR_DUTY_0 | LCD_CR_DUTY_1; ou LCD-\u003e CR | \u003d 0xc;
Activer la fonctionnalité de réaffectation de conclusion. Pour ce faire, définissez 1 à 7 catégories de registres LCD_CR:
LCD-\u003e CR | \u003d LCD_CR_MUX_SEG; ou alors LCD-\u003e CR | \u003d 0x80;
Installez les valeurs des coefficients de fission de fréquence d'horloge LCDCLK. Les valeurs des coefficients sont définies dans le registre LCD_FCR (registre de contrôle de cadre LCD). Tout d'abord, nous nettoyons également tous les bits, puis installez le souhaité souhaité.


Registre LCD_FCR (registre de contrôle de cadre LCD)

LCD-\u003e FCR & \u003d ~ LCD_FCR_PS; LCD-\u003e FCR & \u003d ~ LCD_FCR_DIV; ou LCD-\u003e FCR & \u003d ~ 0x3C00000; LCD-\u003e FCR & \u003d ~ 0x3C0000;
Les valeurs des coefficients de fission de fréquence d'horloge sont définis sur ck_ps \u003d lcdclk / 16, ck_div \u003d ck_ps / 17. Pour ce faire, définissez 1 à 24 et dans 18 catégories:
LCD-\u003e FCR | \u003d 0x1040000; / * 0x1040000 \u003d 1 0000 0100 0000 0000 0000 0000 0000 * /
Pour installer le niveau de contraste souhaité, il est nécessaire de définir la valeur 010 sur le groupe SS, également des bits pré-clivés des anciennes valeurs:
LCD-\u003e FCR & \u003d ~ LCD_FCR_CC; LCD-\u003e FCR | \u003d LCD_FCR_CC_1; ou LCD-\u003e FCR & \u003d ~ 0x1C00; LCD-\u003e FCR | \u003d 0x800; / * 0x800 \u003d 1000 0000 0000 0000 * /
Après avoir installé toutes les valeurs, il est nécessaire pendant un certain temps sur la synchronisation du registre LCD_FCR. La synchronisation du registre est vérifiée par l'installation du bit FCRSF dans le registre LCD_SR (enregistrement d'état LCD).

Registre LCD_SR (registre d'état de l'écran LCD)

Tandis que (! (LCD-\u003e SR & LCD_SR_FCRRSR));
En tant que source de tension pour l'écran LCD, sélectionnez le convertisseur d'étapes interne pour former V LCD. Pour ce faire, la première catégorie du registre LCD_CR (registre de contrôle LCD) est définie sur 0:
LCD-\u003e CR & \u003d ~ LCD_CR_VSEL; ou LCD-\u003e CR & \u003d ~ 0x2;
L'autorisation du travail du contrôleur LCD est réglé sur 1 0 catégorie de registre LCD_CR (registre de contrôle LCD):
LCD-\u003e CR | \u003d LCD_CR_LCDDEN; ou LCD-\u003e CR | \u003d 0x1;
Après l'installation en tant que source de convertisseur d'étapes interne de tension, il est nécessaire d'attendre sa préparation. La préparation est vérifiée par l'installation matérielle du bit de rddy dans le registre LCD_SR (enregistrement d'état LCD):
Tandis que (! (LCD-\u003e SR & LCD_SR_RDY));
Après avoir résolu le travail du contrôleur LCD, il est nécessaire d'attendre sa disponibilité. La préparation est vérifiée par l'installation matérielle des bits de l'ENS dans le registre de LCD_SR (LCD REGISTRE D'ETAT):
While ((LCD-\u003e RS & LCD_SR_ENS)!);

Formation de l'image sur l'écran LCD

Tous les segments indicateurs sont combinés dans le COM0 - groupe COM3 dans les 24 segments chacun (SEG0-SEG23). Les informations sur Segments sont stockées dans les registres LCD_RAM \u200b\u200bdu contrôleur LCD. Le câblage de la carte de circuit imprimé est tel que le nombre de segments ne correspondent pas aux catégories des registres de LCD_RAM.

Pour afficher 1 dans la première décharge de l'écran LCD, vous avez besoin à des segments de lumière 1B, 1C. Le segment 1b appartient au groupe COM0, le segment 1C appartient au groupe COM1. Par conséquent, les informations à leur sujet doivent être enregistrées dans les registres de RAM (de LCD_RAM0), RAM (LCD_RAM2), respectivement. Le segment 1b rencontre la sortie LCD LCDSEG22, des informations sur lesquelles sont stockées dans le registre RAM SEG40 (LCD_RAM1). En utilisant la fonction de réaffectation, le segment LCDSEG22 sera responsable du registre RAM SEG28 (LCD_RAM0). Le segment 1c est répondu à la sortie de l'écran LCD LCDSEG1, des informations sur qui est stocké dans la décharge de SEG1 du registre RAM (LCD_RAM2).

LCD-\u003e RAM \u003d 0x10000000; / * 0x10000000 \u003d 0000 0000 0000 1 0000 0000 0000 0000 * / LCD-\u003e RAM \u003d 0x2; / * 0x2 \u003d 10 * /
Avant d'enregistrer des valeurs dans des registres de mémoire, il est nécessaire de vérifier si le transfert de données précédent à l'écran LCD est terminé. Ceci est vérifié par la demande UDR (Demande de mise à jour) du registre LCD_SR (enregistrement d'état LCD). Le contrôleur d'écran LCD comprend deux tampons de sortie, des informations sont entrées dans le premier tampon, et est affiché sur l'écran LCD à partir de la seconde mémoire tampon. Le bit UDR est défini pendant le transfert du premier tampon dans la seconde, protégeant les registres LCD_RAM:
While (LCD-\u003e RS & LCD_SR_UDR);
Après l'enregistrement des informations dans les registres de LCD_RAM, vous devez installer le bit UDR dans le registre LCD_SR (Status LCD Register) (set 1 en 2 catégories):
LCD-\u003e SR | \u003d LCD_SR_UDR; ou LCD-\u003e SR | \u003d 0x4; / * 0x4 \u003d 100 * /

Souvent, l'utilisateur doit recevoir certaines informations visuelles à partir du périphérique électronique. Si des informations peuvent être représentées sous forme symbolique, l'une des options de son écran est l'utilisation d'indicateurs cristallins liquides symboles (LCD ou LCD dans la désignation étrangère). Aujourd'hui, nous parlerons d'indicateurs symboliques mis en œuvre sur la base de contrôleurs Hitachi. HD44780, Samsung KS 0066 et similaire.

À titre d'exemple, je vais considérer l'écran LCD WINSTAR WH1602D-TMI-CT #J'ai pour des expériences. J'ai déjà mentionné cet écran LCD dans l'article, les développements graphiques dont j'utilise aujourd'hui.

Détaillé fiche de données. à LCD WINSTAR WH1602D-TMI-CT:

Catégorie: Documents
Date: 22.03.2015

Un schéma LCD simplifié peut être représenté comme suit:

La base de l'indicateur est une matrice cristalline liquide, alimentant la tension à l'élément dont nous pouvons observer le point à l'écran. Dans l'écran LCD symbolique, cette matrice consiste en un certain nombre de connaissances, regroupées par des lignes et des colonnes. La taille de la connaissance des pixels est souvent de 5 × 8 points. Le marquage de mon indicateur contient des chiffres 1602 et cela signifie que mon indicateur peut afficher 2 lignes de 16 caractères dans chacun. En outre, le codage comprend: le code du fabricant et le type d'indicateur, la surbrillance, la couleur, la table de code, etc.

Système d'indicateurs WinStar

Afficher / masquer les désignations de déchiffrement

1. Code du fabricant: WinStar Display Co, Ltd

2. Type d'indicateur:

  • H. - Symbole (signe synthétique)
  • C. - couleur graphique avec matrice passive CSTN (colorystn.)
  • X. - graphique avec matrice Languette. (Collage automatique de bande.- Crystal monté sur une bande de substrat en polyamide à trois couches)
  • O. - graphique avec matrice Dent. (Puce sur verre. - Crystal sur verre)

3. Résolution horizontale:

  • nombre de caractères de la chaîne pour indicateurs de type symbolique
  • le nombre de points horizontaux pour les indicateurs graphiques

4. Résolution verticale:

  • numéro de ligne pour indicateurs de type symbolique
  • le nombre de points verticaux pour les indicateurs graphiques

5. Code de modèle

  • Codes les dimensions géométriques utilisées par le contrôleur

6. Type de rétro-éclairage:

  • N. - sans rétroéclairage
  • B. - électrolumine, couleur de lueur - bleu
  • RÉ. - électrolumine, couleur de lueur - vert
  • W. - électrolumine, couleur de lueur - blanc
  • Y. - LED, couleur lueur - jaune-vert
  • UNE. - LED, couleur de lueur - ambre
  • R - LED, couleur lueur - rouge
  • G. - Couleur de lumière de lumière - vert
  • T. - LED, couleur lueur - blanc
  • P. - LED, couleur lueur - bleu
  • F. - Lampe cathode froide (CCFL), couleur lueur - Blanc

7. Technologie de fabrication LCD

  • B. - TN gris, positif
  • N. - TN, négatif
  • G. - STN gris, positif
  • Y. - Jaune-vert STN, positif
  • M. - Bleu stn, négatif
  • F.- FSTN positif
  • T. - FSTN négatif
  • H. - htn gris, positif
  • JE. - htn noir, négatif
  • Tn. (Nématique tordue) -la structure des cristaux a un type en spirale
  • STN. (Super Twisted Nematic.) - matrice constituée d'éléments LCD avec une transparence variable
  • Fstn. (Film compensé STN.) — STN.- Satchase avec une compensation de film. La technologie vous permet d'obtenir un angle de visualisation élargi.
  • Httn (Nématique tordupe homéotropique.) - Les affichages sont basés sur une torsion moléculaire plus forte (généralement de 110 °) par rapport à la nématique torsadée conventionnelle TN (90 °). Donnez un grand angle de vision et un contraste amélioré. Selon les caractéristiques, la technologie STN est supérieure. La faible tension de fonctionnement (2,5 V et le coût le plus bas chez Nematic les permettent d'utiliser bénéfique dans des appareils autonomes portables).

8. Polariseur, angle de visualisation, plage de température de travail

  • UNE. - RF, 6:00, N.T.
  • RÉ. - RF, 12:00, N.T.
  • G. - RF, 6:00, W.T.
  • J. - RF, 12:00, W.T.
  • B. - TF, 6:00, N.T.
  • E.- TF, 12:00, N.T.
  • H. - TF, 6:00, W.T.
  • K. - TF, 12:00, W.T.
  • C. - TM, 6:00, N.T.
  • F.- TM, 12:00, N.T.
  • JE. - TM, 6:00, W.T.
  • L. - TM, 12:00, W.T.
  • Rf (LCD réfléchissant) - Indicateur LCD fonctionnant exclusivement sur le reflet de la lumière. L'image est visible uniquement avec un éclairage externe suffisant.
  • Tf. - (LCD transflectif.) Affichage hydrocristallique, qui reflète la lumière et l'émet (brille seul).
  • Tm (transmissive LCD.) - La lumière passe par l'écran LCD du côté du rétroéclairage. Il a une image de haute qualité à l'intérieur et est généralement très faible (écran noir) avec la lumière du soleil.
  • NT. - Plage de température normale 0 ... + 50ºC W.t. - Plage de température avancée -20 ... + 70ºC

9. Options supplémentaires

Les deux premiers caractères sont un signe:

  • Ct./Cp. - Latina / Cyrillique
  • EP./ET./Ee/En/CE/Estime - Latina / européen
  • JP./JT./JS./JN. - Latina / Japonais
  • Hp./Hs. - Hébreu

3-4 symboles:

  • T. - Compensation de température
  • E. ou alors Ez. - EDGE BL (LED de rétro-éclairage sont situés autour du périmètre). Le symbole peut également être absent.
  • K.ou alors KG. - Eco BL (DEL sont situées à l'arrière de l'écran uniformément)
  • V. - Source intégrée de tension négative
  • N. - Sans une source de tension négative intégrée

10. Informations supplémentaires:

# - Compatibilité avec la norme Rohs.

Noter (Fabricant de microcircuit du contrôleur):

  • xs. - Samsung
  • xP. - Sunplus.
  • xt. - Sittronix.
  • xe. - Epson.
  • xu. - UMC.

Utilisation de ce système de désignations, j'ai découvert que je me suis avéré être un signe de l'indicateur de synthèse WinstarAffichage des caractères dans 16 colonnes et 2 lignes à l'aide du contrôleur Ks. 0066 ou son analogue, avec un éclairage de couleur de couleur blanche autour du périmètre, avec un négatif bleu transmission.- Satisfaire, un angle de révision "pendant 6 heures", une gamme de températures de travail -20 ... + 70ºC avec un indogeneurateur, y compris cyrillique et compatible avec la norme Rohs. (Il ne contient pas de composants nocifs pour la santé, il semble que, lors de l'assemblage, une soudure sans plomb a été utilisée).

Indicateurs basés sur des contrôleurs HD44780., Ks066u.

Gère le fonctionnement du contrôleur intégré Indicateur. Comme un contrôleur effectue habituellement Hitachi HD44780., Samsung ks0066u. ou leurs nombreux analogues et clones. Dans les indicateurs produits par la société russe Melt Utilisé Controller PCF8576.

Le contrôleur a des cellules de mémoire d'une octet ( Ddram), dont le contenu est affiché sur l'écran selon la table enregistrée dans Cgram. Les cellules de mémoire sont généralement plus familiarisées dans l'écran LCD, de sorte que la connaissance de la connaissance dont vous avez besoin pour examiner fiche de données.. Nous devons enregistrer le code du symbole souhaité dans la position souhaitée et tout le reste du contrôleur le fera vous-même.

Pour sélectionner une position, il existe un curseur de commandes contrôlé par des commandes (numéro de la cellule de mémoire actuelle, Ca). Cela peut être fait visible. Par défaut, lors de l'écriture d'un symbole dans une cellule, le curseur passe en avant vers une position.

La table de code de l'indicateur consiste généralement en trois parties:

  • 0 × 00-0 × 07 - Signénérateur téléchargeable, caractères créés par vous
  • 0 × 20-0XFF - Codes ASCII Symboles standard Set et alphabet anglais
  • 0xa0-0XFF - Symboles des alphabets nationaux et autres, avec les symboles de saut de la coïncidement sur un inventaire avec l'anglais.

Montrer / masquer la table de code, Cyrillic

Exemple: le code hexagonal 0x4a correspond à la lettre J., 0xb6 code - lettre j..

Les quatre plus âgés de quatre bits définissent la colonne du symbole sélectionné dans la table, la rangée plus jeune. Vous pouvez créer votre propre table de symboles en l'écrivant dans Cgram. Chaque caractère nécessite 5 octets (sur la colonne Octet). Les unités dans chaque pate déterminent des pixels significatifs. Par exemple, pour coder les numéros de pixelno 8 Cette séquence est requise: 0x6C, 0 × 92,0 × 92,0x × 92.0x6c.

Convertisseur cyrillique

Pour convertir le texte contenant les caractères cyrilliques dans les codes correspondant à la table ci-dessus, entrez le texte souhaité dans la zone de texte. Le résultat obtenu ci-dessous peut être copié et utilisé dans vos programmes pour générer ce texte sur l'écran LCD.

Texte original:

Texte codé:

Table de codes d'équipe:

D7 D6. D5. D4. D3. D2. D1. D0 Objectif
0 0 0 0 0 0 0 1 Nettoyage à l'écran Ca\u003d 0, adressant Ca sur le Ddram
0 0 0 0 0 0 1 Ca\u003d 0, adressant sur Ddram, les changements sont réinitialisés, le début de la ligne est adressé au début. Ddram
0 0 0 0 0 1 IDENTIFIANT.S.Sélectionne la direction du décalage du curseur ou de l'écran
0 0 0 0 1 RÉ.C.B.Sélectionne le mode d'affichage
0 0 0 1 S / C.R / l.Équipe de curseur / écran d'écran
0 0 1 DlN.F.Définition des paramètres de balayage et largeur de bus de données
0 1 Ac5AC4.AC3AC2AC1AC0.Affectation d'un mètre Ca Adresses dans la région Cgram
1 AC6Ac5AC4.AC3AC2AC1AC0.Affectation d'un mètre Ca Adresses dans la région Ddram

Tableau des valeurs de drapeau:

Drapeau Valeur
IDENTIFIANT.Distribution du compteur d'adresses AC, 0 - Diminution, 1 - Augmentation
S.Drapeau du mode de décalage de contenu d'écran. 0 - Le décalage de l'écran n'est pas effectué, 1 - Après l'enregistrement dans le DDRAM du code suivant, l'écran se déplace dans la direction déterminée par le drapeau I / D: 0 - droite, 1 - gauche. Le changement ne change pas le contenu de DDRAM. Seuls les indicateurs d'emplacement interne du début visible de la rangée dans le changement de DDRAM
S / C.Commande de drapeau, produisant avec le drapeau R / L, l'opération de décalage d'affichage (ainsi que dans le cas précédent, sans modification du DDRAM) ou du curseur. Définit l'objet décalé: 0 - curseur décalé, 1 - Écran décalé
R / l.Commande de drapeau produisant avec le drapeau S / C du décalage d'écran ou du curseur. Spécifie la direction de décalage: 0 - gauche, 1 - droite
D / L.Drapeau Définition d'une largeur de bus de données: 0 - 4 Décharge, 1 - 8 décharges
N.Mode numérisation d'image sur l'écran LCD: 0 - une ligne, 1 - deux lignes
F.Taille Matrix Symboles: 0 - 5 × 8 Points, 1 - 5 × 10 points
RÉ.Disponibilité de l'image: 0 - Désactivé, 1 - Inclus
C.Curseur sous la forme d'un symbole de soulignement: 0 - Off, 1 - Activé
B.Curseur sous la forme d'une connaissance vacillante: 0 - Off, 1 - Activé

Nomination des conclusions du contrôleur:

  • Db0.-Db7 - Responsable des données entrantes / sortantes
  • Rs. - niveau élevé signifie que le signal aux sorties de DB0-DB7 est la donnée, basse-commande
  • W / R. - Détermine la direction des données (lecture / écriture). Étant donné que le fonctionnement de données de lecture de l'indicateur est généralement non réclamé, il peut être installé continuellement à cette entrée basse.
  • E. - L'impulsion d'une durée d'au moins 500 ms sur cette sortie détermine le signal pour lire / écrire des données à partir de terminaux DB0-DB7, RS et W / R
  • V 0 - utilisé pour spécifier l'image de contraste
  • A, K. - rétroéclairage de l'alimentation (anode et cathode) s'il est disponible
  • V cc. et Gnd. - Indicateur d'écran LCD nutritionnel

Pour contrôler l'indicateur LCD, il est nécessaire de sélectionner 6 ou 10 sorties, selon que le mode d'échange de données de 4 ou 8 bits est sélectionné. Pour réduire le nombre de conclusions souhaité, le microcontrôleur peut être utilisé en mode 4 bits. Dans ce cas, sur les conclusions DB4.-Db7 L'indicateur sera d'abord transmis par les quatre bits / commandes de données plus âgés, puis les quatre bits les plus jeunes. conclusions Db0.-Db3. restera inutilisé.

Un contrôleur contrôle le nombre limité de caractères. Sur la carte indicatrice, il peut y avoir des contrôleurs de 1, 2, 4, 8 et éventuellement - et plus.

Documentation sur les contrôleurs:

Manette Samsung ks0066u.

Manette Hitachi HD44780.

Catégorie: Documents
Date: 21.03.2015

traduit en option russe:

Catégorie: Documents
Date: 21.03.2015

Les indicateurs de divers fabricants sont souvent compatibles et interchangeables, mais peuvent différer dans les dimensions, la fixation, les contacts et autres choses. Par conséquent, lors du choix de nouveaux développements et de recherche de remplacement, contactez les catalogues des fabricants:

Table de compatibilité des indicateurs LCD symboliques de différents fabricants:

Afficher / masquer la table

Un type Winstar FONDRE Vision des données. Bolymine. Similitude. Microtips. Wintek. Ampire.
8 × 2.WH0802A.MT-8S2A.DV-0802.BC0802A.SC0802A.MTC-0802X.WM-C0802M.AC082A.
10 × 1.MT-10S1
12 × 2.WH1202A.BC1202A.
16 × 1.WH1601A.DV-16100.BC1601A1.SC1601A.MTC-16100X.WM-C1601MAc161a.
WH1601B.BC1601B.SC1601B.
WH1601LMT-16S1A.DV-16100.BC1601D1.SC1601D.MTC-16101X.WM-C1601Q.AC161B.
DV-16120.AC161J.
16 × 2.Wh1602LMT-16S2RDV-16210.BC1602E.SC1602E.MTC-16201X.WM-C1602Q.AC162E.
SC1602N.
WH1602D.MT-16S2J.DV-16230.BC1602B1SC1602B.MTC-16202X.WM-C1602N.AC162A.
DV-16235MTC-16203X.
WH1602C.MT-16S2D.DV-16236.BC1602D.SC1602D.
WH1602A.MT-16S2HDV-16244.BC1602HSC1602C.MTC-16204X.WM-C1602K.
WH1602B.DV-16252.BC1602A.SC1602A.MTC-16205B.WM-C1602M.
Wh1602m.DV-16257.BC1602F.SC81602F.
DV-16275
DV-16276.
16 × 4.WH1604A.MT-16S4A.DV-16400.BC1604A1.SC1604A.MTC-16400X.WM-C1604M.AC164A.
WH1604B.
20 × 1.DV-20100.
MT-20S1L
20 × 2.WH2002A.MT-20S2A.DV-20200.BC2002A.SC2002A.MTC-20200X.WM-C2002M.AC202A.
Wh2002m.
Wh2002LMt-20s2m.DV-20210.BC2002B.SC2002C.MTC-20201X.WM-C2002P.AC202B.
DV-20211.AC202D.
DV-20220.
DV-20206-1
20 × 4.WH2004A.MT-20S4A.DV-20400.BC2004A.SC2004A.MTC-20400X.WM-C2004P.AC204A.
SC2004G.
SC2004C.
Wh2004LDV-20410.BC2004B.MTC-20401X.WM-C2004R.AC204B.
24 × 1.MT-24S1L
24 × 2.WH2402A.MT-24S2A.DV-24200.BC2402A.SC2402A.MTC-24200X.WM-C2402P.AC242A.
MT-24S2L
40 × 2.WH4002A.DV-40200.BC4002A.SC4002A.MTC-40200X.WM-C4002P.AC402A.
40 × 4.Wh4004a.DV40400.BC4004A.SC4004A.MTC-40400X.WM-C4004M.AC404A.
SC4004C.

Puissance, réglage de contraste et rétroéclairage

Soigneusement doit être lié à la polarité de la connexion de l'alimentation à l'indicateur LCD, ainsi que de s'assurer que la tension d'alimentation est située dans la plage de +4,5 ... 5,5 V. attitude inatténive à ces moments peut entraîner une sortie indicatrice!

Les indicateurs LCD vous permettent de régler le contraste à l'aide d'un diviseur de tension. Avant d'afficher des données sur l'indicateur, vous devez vous assurer que le contrôle de la contrainte est dans la plage de fonctionnement. Les cotes de résistances diffèrent dans divers fabricants d'indicateurs LCD. Certains modèles d'indicateurs sur la carte fournissent des lieux d'installation d'un tel diviseur et suffisamment pour avoir les taux de résistance nécessaires. Le contraste de l'indicateur dépend de l'angle de visualisation. Si l'indicateur "douze heures", examinez ensuite un tel indicateur de manière à ce qu'il soit inférieur au niveau des yeux, si "zéro heure", il est conçu pour observer le niveau des yeux (perpendiculaire au plan d'écran) . Si l'indicateur "six heures", il doit être utilisé lorsqu'il est observé au-dessus du niveau des yeux. Ce moment doit être pris en compte lors de l'achat.

Rétroéclairage de nutrition

Si l'indicateur dispose d'un rétroéclairage, les conclusions sont généralement situées séparément. Il est nécessaire de le connecter à l'alimentation, en définissant un courant nominal à l'aide d'une résistance externe R (voir fiche de données.). Pour mon indicateur, la tension nominale de l'anode doit être de 3,5 V et un courant de 40 mA. Basé sur cela, la dénomination de la résistance de limitation actuelle:

Certains fabricants de la carte indicatrice fournissent un lieu d'installation d'une telle résistance, vous devez avoir la valeur nominale correspondante, plus près du cavalier et le rétroéclairage seront alimentés à partir de la même ligne que l'indicateur.

Comment évaluez-vous cette publication?

  • Le module FC-113 est effectué sur la base de la puce PCF8574T, qui est un registre à décalage 8 bits - l'extension des sorties pour le pneu en série de l'I2C. Dans la figure du microcircuit est désigné DD1.
  • R1 est une résistance rapide pour régler le contraste de l'écran LCD.
  • J1 Jumper est utilisé pour allumer le rétroéclairage d'affichage.
  • Conclusions 1 ... 16 sont utilisées pour connecter le module aux sorties de l'écran LCD.
  • Les plates-formes de contact A1 ... A3 sont nécessaires pour modifier l'adresse I2C de l'appareil. Assise les cavaliers correspondants, vous pouvez modifier l'adresse de l'appareil. Le tableau indique la conformité des adresses et des cavaliers: "0" correspond à la rupture de la chaîne "1" - le cavalier réglable. Par défaut, tous les 3 cavaliers ouverts et l'adresse du périphérique 0x27..

2 Schéma de connexion d'affichage de l'écran LCD Arduinoselon I2C.

Connexion d'un module à Arduino est effectué Standard pour le bus I2C: la sortie SDA du module est connectée au port analogique A4, la sortie SCL au port analogique de A5 Arduino. Le module est alimenté par la tension +5 V de Arduino. Le module lui-même est connecté par les conclusions 1 ... 16 avec les conclusions correspondantes de 1 ... 16 sur l'écran LCD.


3 Bibliothèque pour le travailselon I2C.

Vous avez maintenant besoin d'une bibliothèque pour travailler avec l'écran LCD via l'interface I2C. Vous pouvez utiliser, par exemple, cela (lien dans la ligne "Télécharger des exemples de code et de la bibliothèque").

Archives téléchargées LiquideCrystal_I2CV1-1.RAR. Unzip dans le dossier \\ Bibliothèques \\qui est situé dans le répertoire IDE Arduino.

La bibliothèque prend en charge un ensemble de fonctions standard pour les écrans LCD:

Une fonctionObjectif
Liquide Crystal () crée une variable de type liquideCrystal et accepte les paramètres d'affichage (numéros de code PIN);
commencer () initialisation de l'écran LCD, paramètres de réglage (nombre de lignes et de symboles);
dégager () nettoyer l'écran et renvoyer le curseur à la position initiale;
domicile () renvoyer le curseur à la position initiale;
setcursor () installation du curseur à la position spécifiée;
Écrivez () affiche un symbole sur l'écran LCD;
imprimer () affiche le texte sur l'écran LCD;
le curseur () montre le curseur, c'est-à-dire La sous-couche au siège symbole suivant;
nocursor () cache le curseur;
cligner () curseur clignotant;
nobleskink () annuler des clignotants;
nodisplay () Éteignez l'écran tout en enregistrant toutes les informations affichées;
aFFICHAGE () allumez l'écran tout en enregistrant toutes les informations affichées;
scrolldisplayleftft () faire défiler le contenu de l'écran sur la première position à gauche;
scrollDisplayRight () faire défiler le contenu de l'écran sur 1 position à droite;
défilement automatique () inclusion de la passation automatique;
noautoscroll () éteindre l'auto lober;
de gauche à droite () spécifie la direction du texte de gauche à droite;
de droite à gauche () la direction du texte sur le droit à gauche;
createchar () crée un symbole personnalisé pour l'écran LCD.

4 Sketch pour la sortie de textesur écran LCD via un bus I2C

Ouvre l'échantillon: File Samples LiquidCrystal_I2C Customchars Et il l'altère un peu. Nous retirerons un message à la fin de laquelle le symbole clignotant sera. Dans les commentaires du code, toutes les nuances de croquis sont commentées.

#Inclure. // connecter la bibliothèque de fil #include // Nous connectons la bibliothèque de l'écriture (args) LCD #define (args); // uint8_t coeur \u003d (0x0.0xa, 0x1f, 0x1f, 0xE, 0x4.0x0); // symbole de masque de bits "coeur" liquideCrystal_i2c LCD (0x27, 16, 2); // Définit l'adresse 0x27 pour écran LCD 16x2 void setup () ( lcd.init (); // initialisation de l'écran LCD LCD.Backlight (); // Activez le rétroéclairage de l'écran LCD.Createchark (3, coeur); // crée le symbole du coeur dans 3 lcd.home () cellule de mémoire; // Placez le curseur dans le coin supérieur gauche, à la position (0,0) LCD.! "); // Imprimer la chaîne de texte LCD.Setcursor (0, 1); // transférer un curseur sur une chaîne 2, un symbole 1 LCD.Print ("I"); // Imprimer un message sur une ligne 2 LCD.PRINTBINTTE (3); // Imprimer le symbole "Heart", situé dans la 3ème cellule LCD.Print ("Arduino"); } boucle vide () ( // clignotant le dernier symbole LCD.Setcursor (13, 1); // transfert curseur sur String 2, Symbole 1 LCD.PRINT ("\\ T"); Retard (500); Lcd.setcursor (13, 1); // transfert curseur sur String 2, symbole 1 LCD.Print (""); Retard (500); }

Au fait, les personnages enregistrés par l'équipe lcd.createchar ();, restez à l'écran de l'écran même après la mise hors tension, car Enregistré dans le 1602 MFU.

5 Créer vos propres personnagespour l'écran LCD

Peu plus de détails, considérez la question de la création de vos propres personnages pour les écrans LCD. Chaque symbole de l'écran est composé de 35 points: 5 en largeur et 7 en hauteur (chaîne de sauvegarde +1 pour la sous-coupe). Dans la ligne 6 de l'esquisse donné, nous définissons un tableau de 7 numéros: (0x0, 0xa, 0x1f, 0x1f, 0xE, 0x4, 0x0). Nous transformons les numéros de 16 riches en binaires: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Ces chiffres ne sont qu'un masque de bits pour chacune des 7 lignes du symbole, où "0" désigne un point de lumière et "1" - sombre. Par exemple, un symbole cardiaque spécifié sous la forme d'un masque de bits examinera l'écran comme indiqué sur la figure.

6 Écran LCD de bureausur le bus I2C

Drive Sketch à Arduino. SUR L'ÉCRAN apparaîtront à l'inscription avec le curseur clignotant à la fin.


7 Qu'est-ce que "pour"pneu i2c.

En prime, envisagez un diagramme temporaire de la sortie des caractères latins "A", "B" et "C" sur l'écran LCD. Ces caractères sont disponibles dans la ROM d'affichage et sont affichés simplement par la transmission de leur adresse. Le diagramme est retiré des conclusions RS, RW, E, D4, D5, D6 et D7, I.E. Déjà après le convertisseur FC-113 "bus parallèle I2C". Nous pouvons dire que nous plions un peu "plus profond" dans le "fer".


Diagramme temporaire de la sortie des caractères latins "A", "B" et "C" sur l'écran LCD 1602

Le diagramme montre que les caractères de la ROM DVLD (voir page 9.11, la référence ci-dessous) sont transmis par deux ghee, dont le premier définit le tableau de la colonne Table et le second est le numéro de ligne. Dans le même temps, les données "arrachées" sur le front avant E. (Activer), et ligne Rs. (Enregistrer Sélectionner, la sélection du registre) est dans un état d'unité logique, ce qui signifie le transfert de données. L'état bas de la ligne RS signifie la transmission des instructions que nous voyons avant le transfert de chaque symbole. Dans ce cas, le code de l'instruction de retour de chariot est transmis à la position (0, 0) écran LCD, comme vous pouvez également le savoir en étudiant la description technique de l'écran.

Et un autre exemple. Sur ce diagramme de temps indique la sortie du symbole "coeur" de l'écran LCD.


Encore une fois, les deux premières impulsions Activer Instructions conformes Domicile () (0000 0010 2) - Retour du chariot à la position (0; 0) et la deuxième fois - la sortie de l'écran LCD stockée dans la cellule de mémoire 3 10 (0000 0011 2) Le symbole "coeur" (instruction lcd.createchar (3, coeur); Esquisser).