Pour établir une bonne communication entre le monde humain et le monde des machines, les unités d'affichage jouent un rôle important. Ils constituent donc une partie importante des systèmes embarqués. Les unités d'affichage - grandes ou petites, fonctionnent sur le même principe de base. Outre les unités d'affichage complexes telles que les affichages graphiques et les affichages 3D, il faut savoir travailler avec des écrans simples comme les unités 16x1 et 16x2. L'unité d'affichage 16x1 aura 16 caractères et sont sur une seule ligne. L'écran LCD 16x2 aura 32 caractères au total 16 en 1 ère ligne et 16 autres en 2 èmeligne. Ici, il faut comprendre que dans chaque caractère il y a 5x10 = 50 pixels donc pour afficher un caractère, tous les 50 pixels doivent fonctionner ensemble. Mais nous n'avons pas à nous en soucier car il y a un autre contrôleur (HD44780) dans l'unité d'affichage qui fait le travail de contrôler les pixels. (vous pouvez le voir dans l'unité LCD, c'est l'œil au beurre noir à l'arrière).
Composants requis
Matériel:
Microcontrôleur ATmega32
Alimentation (5v)
Programmeur AVR-ISP
JHD_162ALCD (écran LCD 16x2)
Condensateur 100uF.
Logiciel:
Atmel Studio 6.1
Progisp ou magie flash
Schéma de circuit et explication
Comme le montre l' interface LCD avec le circuit ATmega32, vous pouvez voir que PORTA d'ATMEGA32 est connecté au port de données LCD. Ici, il faut se rappeler de désactiver la communication JTAG dans PORTC d'ATMEGA en changeant les octets de fusible, si l'on veut utiliser le PORTC comme port de communication normal. Dans l'écran LCD 16x2, il y a 16 broches sur tout, s'il y a un rétro-éclairage, s'il n'y a pas de rétro-éclairage, il y aura 14 broches. On peut alimenter ou laisser les broches du rétroéclairage. Or, dans les 14 broches, il y a 8 broches de données (7-14 ou D0-D7), 2 broches d'alimentation en énergie (1 et 2 ou VSS et VDD ou GND et + 5v), 3 ème broches de la commande de contraste (VEE-contrôle l'épaisseur des caractères doivent être illustré), 3 broches de commande (RS & RW & E)
Dans le circuit ci-dessus pour interfacer l'écran LCD 16x2 avec le microcontrôleur AVR, vous pouvez observer que je n'ai pris que deux broches de contrôle. Cela donne la flexibilité d'une meilleure compréhension. Le bit de contraste et READ / WRITE ne sont pas souvent utilisés, ils peuvent donc être court-circuités à la masse. Cela met l'écran LCD en mode de contraste et de lecture le plus élevé. Nous avons juste besoin de contrôler les broches ENABLE et RS pour envoyer des caractères et des données en conséquence.
Les connexions entre le microcontrôleur ATmega32 et l'écran LCD 16x2 sont données ci-dessous:
PIN1 ou VSS - masse
PIN2 ou VDD ou VCC - alimentation + 5v
PIN3 ou VEE - masse (donne le meilleur contraste pour un débutant)
PIN4 ou RS (sélection de registre) - PD6 du microcontrôleur
PIN5 ou RW (lecture / écriture) - masse (met l'écran LCD en mode lecture facilite la communication pour l'utilisateur)
PIN6 ou E (Activer) - PD5 du microcontrôleur
PIN7 ou D0 - PA0 du microcontrôleur
PIN8 ou D1 - PA1
PIN9 ou D2 - PA2
PIN10 ou D3 - PA3
PIN11 ou D4 - PA4
PIN12 ou D5 - PA5
PIN13 ou D6 - PA6
PIN14 ou D7 - PA7
Dans le circuit, vous pouvez voir que nous avons utilisé la communication 8 bits (D0-D7) mais ce n'est pas obligatoire et nous pouvons également utiliser la communication 4 bits (D4-D7) mais avec le programme de communication 4 bits devient un peu complexe pour les débutants, nous sommes donc allés avec Communication 8 bits.
Donc, à partir de la simple observation du tableau ci-dessus, nous connectons 10 broches de l'écran LCD au contrôleur dans lequel 8 broches sont des broches de données et 2 broches pour le contrôle.
Travail
Maintenant, pour commencer, vous devez connaître les fonctions de 10 broches de 16x2 LCD (8 broches de données + 2 broches de contrôle). Les 8 broches de données servent à envoyer des données ou des commandes à l'écran LCD. Dans deux broches de contrôle:
1. La broche RS (sélection de registre) indique à l'écran LCD si nous lui envoyons des données ou si nous y commandons.
Par exemple:
Dans le tableau ci-dessus un pour une valeur de port de données (D7-D0) de «0b0010 1000 ou 0x28» indique à l'écran LCD d'afficher le symbole «(». Dans le tableau 2, la même valeur de 0x28 indique à l'écran LCD «vous êtes un écran LCD 5x7 points et se comporter comme un », donc pour la même valeur, l'utilisateur peut définir deux choses, maintenant cette situation est neutralisée par la broche de sélection de registre, si la broche RS est réglée sur bas, l'écran LCD comprend que nous envoyons une commande. Si nous réglons la broche RS sur haut, alors L'écran LCD comprend que nous envoyons les données, et donc dans les deux cas, l'écran LCD respecte la valeur du port de données en fonction de la valeur de la broche RS.
2. La broche E (Activer) sert simplement à indiquer «LED d'indication d'alimentation d'un PC», cette broche est réglée sur haut pour indiquer à l'écran LCD «de recevoir le port de données du contrôleur». Une fois que cette broche passe bas après haut, l'écran LCD traite les données reçues et affiche le résultat correspondant. Cette broche est donc réglée sur haut avant d'envoyer des données et abaissée au sol après l'envoi des données.
Maintenant, après avoir connecté le matériel, démarrez Atmel studio et démarrez un nouveau projet pour écrire le programme, ouvrez maintenant l'écran de programmation et lancez le programme d'essorage. Le programme doit suivre comme indiqué ci-dessous.
Nous indiquons d'abord au contrôleur les ports que nous utilisons pour les données et le contrôle de l'écran LCD. Dites ensuite au contrôleur quand envoyer des données ou une commande en conséquence en jouant avec les broches RS et E.
Brève explication des concepts utilisés dans le programme:
1. E est réglé sur haut (indiquant à l'écran LCD de recevoir des données) et RS est défini sur bas (indiquant à l'écran LCD que nous donnons la commande)
2. Donner la valeur 0x01 au port de données comme commande pour effacer l'écran
3. E est réglé sur haut (indiquant à l'écran LCD de recevoir des données) et RS est réglé sur haut (indiquant à l'écran LCD que nous donnons des données)
4. Prendre une chaîne de caractères en envoyant chaque caractère dans une chaîne un par un.
5. E est réglé bas (indiquant à l'écran LCD que nous avons fini d'envoyer des données)
6. Après la dernière commande, l'écran LCD met fin à la communication et traite les données et affiche la chaîne de caractères à l'écran.
Dans ce scénario, nous allons envoyer les personnages les uns après les autres. Les caractères sont donnés au LCD par des codes ASCII (Code standard américain pour l'échange d'informations).
Le tableau des codes ASCII est présenté ci-dessus. Ici, pour que l'écran LCD affiche un caractère «@», nous devons envoyer un code hexadécimal «64». Si nous envoyons '0x62' à l'écran LCD, il affichera le symbole '>'. Comme cela, nous allons envoyer les codes appropriés à l'écran LCD pour afficher un nom.
Le moyen de communication entre le microcontrôleur LCD et ATmega32 AVR est mieux expliqué étape par étape du code C ci-dessous,