Un HD44780 est un contrôleur standard permettant de piloter un dispositif d'affichage par cristaux liquides.
Des « clones » existent, tels que le KS0070B ou le SPLC780A1.
Branchement physique
Un module HD44780 comporte 16 bornes (dont les 2 dernières sont optionnelles si l'écran piloté ne dispose pas d'un rétroéclairage) :
Borne Symbole Type Fonction 1 Vss ou V0 Alim Masse 0V 2 Vcc ou Vdd Alim Alimentation générale 5V 3 Vee Alim Alimentation du panneau LCD (Contraste des caractères) Vee = Vcc – Vss
Vss = Vcc → Vee = 0 → Caractères invisibles
Vss = 0 → Vee = Vcc → Contraste maximum 4 RS Entrée RS = 1 → Sélection du registre de données
RS = 0 et R/W = 0 → Sélection du registre d’instruction
RS = 0 et R/W = 1 → Sélection du drapeau BUSY et du compteur d’adresse 5 R/W Entrée R/W = 0 → Mode écriture R/W = 1 → Mode lecture 6 E Entrée Entrée de validation Les entrées RS et R/W sont lues sur le front montant, et le bus de données est lu sur le front descendant. 7 D0 Entrée/Sortie Bus de données, bit n°0 (LSB) 8 D1 Entrée/Sortie Bus de données, bit n°1 9 D2 Entrée/Sortie Bus de données, bit n°2 10 D3 Entrée/Sortie Bus de données, bit n°3 11 D4 Entrée/Sortie Bus de données, bit n°4 12 D5 Entrée/Sortie Bus de données, bit n°5 13 D6 Entrée/Sortie Bus de données, bit n°6 14 D7 Entrée/Sortie Bus de données, bit n°7 (MSB) 15 A Alim Anode du système de rétro-éclairage (à alimenter en 5V à travers une résistance de 50 à 100Ω pour limiter le courant à 100mA) 16 K Alim Cathode du système de rétro-éclairage (masse)
Commande
En mode 8 bits
Dans ce mode, l’octet contenant les données est envoyé à l'afficheur (ou lu par l'afficheur) directement sur les broches D0 à D7.
En mode 4 bits
Dans ce mode, on n’utilise que les broches D4 à D7, les broches D0 à D3 doivent être connectées à la masse.
L’octet de données est envoyé (ou lu) en 2 fois : d’abord les 4 bits de poids fort, par une première validation sur la broche E, puis les 4 bits de poids faible, par une seconde validation sur la broche E.
Timings à respecter
En écriture
center|Temps à respecter en écriture pour le HD44780
En lecture
center|Temps à respecter en lecture pour le HD44780
Instructions de contrôle et d’affichage
Instructions RS R/W D7 D6 D5 D4 D3 D2 D1 D0 Description DuréeClear display 0 0 0 0 0 0 0 0 0 1Efface l'écran Place le curseur dans la position d'origine ( position à gauche, ligne : compteur d'adresse à 00h) > 1.64 ms Return home 0 0 0 0 0 0 0 0 1 -Place le curseur dans la position d'origine ( position à gauche, ligne : compteur d'adresse à 00h) > 1.64 ms Entry set mode 0 0 0 0 0 0 0 1 I/D SI/D = 1 → Déplacement du curseur d'une position à droite (Incrémentation du compteur d'adresse) I/D = 0 → Déplacement du curseur d'une position à gauche (Décrémentation du compteur d'adresse) S(Shift) = 1 → Décalage de l'affichage dans le sens de déplacement du curseur S = 0 → L'affichage n'est pas décalé Attention le décalage de l'affichage (S = 1) décale également les adresses de l'afficheur de sorte que l’adresse 00h ne correspondra plus à la position à gauche, ligne. > 40 µs Display on/off control 0 0 0 0 0 0 1 D C BD = 1 → Affichage visible D = 0 → Affichage invisible C = 1 → Curseur visible C = 0 → Curseur invisible B = 1 → Curseur clignotant B = 0 → Curseur fixe > 40 µs Cursor or display shift 0 0 0 0 0 1 S/C R/L - -S/C = 1 → Décalage de l'affichage S/C = 0 → Déplacement du curseur R/L = 1 → Décalage à droite R/L = 0 → Décalage à gauche > 40 µs Function set 0 0 0 0 1 DL N F - -DL = 1 → Interface 8 bits DL = 0 → Interface 4 bits N = 1 → 2 lignes d'affichage N = 0 → 1 ligne d'affichage F = 1 → Matrice 5 x 11 points F = 0 → Matrice 5 x 8 points > 40 µs Set CGRAM address 0 0 0 1 ACG5 ACG4 ACG3 ACG2 ACG1 ACG0Positionne le compteur d'adresse de la CGRAM à la valeur (ACG5 ... ACG0) > 40 µs Set DDRAM address 0 0 1 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0Positionne le compteur d'adresse de la DDRAM (ADD6 ... ADD0) > 40 µs Read busy & address 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0Lit le drapeau BF (Busy Flag) et le compteur d'adresse (AC6 ... AC0) BF = 1 → Le contrôleur est occupé et n’accepte aucune nouvelle instruction BF = 0 → Le contrôleur est disponible pour une nouvelle instruction > 1 µs Write data to CGRAM or DDRAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0Write data to CGRAM : écrit la donnée (D7 ... D0) à l'adresse de la CGRAM définie par l'instruction précédente Set CGRAM address Write data to DDRAM : écrit la donnée (D7 ... D0) à l'adresse de la DDRAM définie par l'instruction précédente Set DDRAM address > 43 µs Read data from CGRAM or DDRAM 1 1 D7 D6 D5 D4 D3 D2 D1 D0Read data from CGRAM : lit la donnée (D7 ... D0) à l'adresse de la CGRAM définie par l'instruction précédente Set CGRAM address Read data from DDRAM : lit la donnée (D7 ... D0) à l'adresse de la DDRAM définie par l'instruction précédente Set DDRAM address > 43 µs
Initialisation
Attendre au moins 15ms depuis le passage à +5V de Vcc, Envoyer l'instruction Function set avec la valeur 0011...(.), Attendre au moins 4.1ms, Envoyer à nouveau l'instruction Function set avec la valeur 0011(.)..., Attendre au moins 100µs, Envoyer à nouveau l'instruction Function set avec la valeur 0011...., Si on veut activer le mode 4 bits, envoyer les 4 bits de poids fort de l'instruction Function set avec la valeur 0010, Configuration du nombre de lignes et de la matrice, en envoyant l'Instruction Function set avec par exemple la valeur 00111000 (8 bits, 2 lignes, 5x8pixels), Configuration du contrôle d'affichage, en envoyant l'instruction Display on/off control avec par exemple la valeur 00001110 (Affichage visible, curseur visible, curseur fixe), Effacement de l'écran, en envoyant l'instruction Clear display, avec pour valeur 00000001, Configuration du curseur, en envoyant l'instruction Entry set mode, avec par exemple pour valeur 00000110 (déplacement du curseur vers la droite, pas de décalage du compteur d'adresse). Fin de l'initialisation, l'écran est prêt à recevoir les autres instructions permettant l'affichage.
Mémoire d’affichage DDRAM (Display Data RAM)
Il s’agit de la mémoire où sont stockés les caractères affichés.
L’adresse du caractère correspond à sa position à l’écran.
Pour un écran à 1 ligne (80 caractères max) : le premier caractère de gauche est à l'adresse 0x00, le caractère à sa droite est à l'adresse 0x01, le caractère suivant est à l'adresse 0x02, et ainsi de suite...
@ 0x00 @ 0x01 @ 0x02 @ 0x03 .......... @ 0x4C @ 0x4D @ 0x4E @ 0x4F
Pour un écran à 2 lignes (40 caractères max par ligne) : la logique d'accès aux caractères est la même que pour un écran 1 ligne, la logique d'accès aux caractères est la même que pour un écran 1 ligne sauf que l'adresse du premier caractère de gauche commence à 0x40.
@ 0x00 @ 0x01 @ 0x02 @ 0x03 .......... @ 0x24 @ 0x25 @ 0x26 @ 0x27 @ 0x40 @ 0x41 @ 0x42 @ 0x43 .......... @ 0x64 @ 0x65 @ 0x66 @ 0x67
Pour l’écran à 2 lignes de 40 caractères, si on écrit un caractère à l’adresse 27h, le curseur vient se placer automatiquement à l’adresse 40h.
Pour un écran plus petit (de 2 lignes de 16 caractères par exemple), bien qu’inutile, il est possible d’accéder aux adresses mémoires des caractères inexistants.
Mémoire du générateur de caractères CGRAM (Character Generator RAM)
Pour une matrice de caractères de 5x8, il y a 8 caractères personnalisables dans la CGROM, et seulement 4 lorsque la matrice est de 5x11. Pour une matrice de 5x8 : Le caractère est accessible aux adresses 00h et 08h (de la DDRAM), Le caractère est accessible aux adresses 01h et 09h, … Le caractère est accessible aux adresses 07h et 0Fh.
Pour configurer les caractères personnalisables : il faut appeler la fonction « Set CGRAM address » où les bits « ACG5 ACG4 ACG3 » correspondent à l’adresse du caractère (ex : « 010 » pour le caractère) et les bits « ACG2 ACG1 ACG0 » à la ligne dans la matrice du caractère (ex : « 011 » pour la ligne en partant du haut), il faut ensuite appeler la fonction « Write data to CGRAM » où les bits « D7 D6 D5 » sont mis à 0 et les bits « D4 D3 D2 D1 D0 » correspondent à l’état des pixels (0 = éteint, 1 = allumé).
Pour une matrice de 5x11, même principe sauf que : Le caractère est accessible aux adresses 00h et 08h (de la DDRAM) pour les 8 lignes du haut, et 01h et 09h pour les 3 autres lignes, Le caractère est accessible aux adresses 02h et 0Ah pour les 8 lignes du haut, ainsi que 03h et 0Bh pour les 3 autres lignes, … Le caractère est accessible aux adresses 06h et 0Eh pour les 8 lignes du haut, ainsi que 07h et 0Fh pour les 3 autres lignes.
Les jeux de caractères standards de la CGROM (Character Generator ROM)
Les 128 premiers caractères sont répartis comme suit : les 16 premiers caractères correspondent aux caractères personnalisés stockés en CGRAM, les 16 suivants sont des caractères de contrôle (flèches, guillemets, ...), les 96 suivants sont à peu près les caractères ASCII.
center|Jeu de caractères du HD44780
Pour les 128 derniers caractères, il existe plusieurs standards en fonction de la référence du contrôleur « HD44780Ux » où « x » correspond au ROM code : si ce « ROM code = A00 », alors le contrôleur utilise le jeu de caractère japonais ; si le « ROM code = A02 », alors le contrôleur utilise le jeu de caractère européen. Il peut exister encore d'autres jeux de caractères notamment pour les clones KS0070B et SPLC780A1.
Il faut se référer à la datasheet pour connaître la signification exacte de chaque emplacement de la CGROM, ou alors le vérifier expérimentalement.
Liens externes Datasheet Analyse des mémoires internes au module et création de caractères spéciaux. Note d'application de Microchip pour piloter un écran via un HD44780 avec un microcontrôleur PIC®
Catégorie:Technologie d'affichage Catégorie:Cristal liquide