L'afficheur est doté de deux types de mémoire, la DDRAM et la CGRAM. La DDRAM sert à afficher les caractères et la CGRAM contient le jeu de caractères.
La DDRAM stocke les caractères que l'on veut afficher à l'écran. Chaque
position d'un caractère affiché à l'écran est caractérisée
par une adresse, qui est définie de la manière suivante :
Pour un afficheur LCD de deux lignes de 16 caractères (2x16), le premier caractère doit
être défini à l'adresse 00h, le second à l'adresse 01h et ainsi de suite
jusqu'à l'adresse 0Fh pour les seize caractères de la première ligne.
Les caractères de la seconde ligne sont définis de la même manière mais aux
adresses allant de 40h à 4Fh.
Pour les afficheurs d'une seule ligne de 16 caractères (1x16), il peut arriver que les adresses des caractères soient définies de manière un peu différente. Les huit premiers caractères ont une adresse comprise entre 00h et 07h, tandis que les huit derniers ont une adresse comprise entre 40h et 47h.
La CGRAM est la mémoire qui contient le jeu de caractères affichables par le LCD. Elle
permet d'afficher 200 caractères différents dont huit peuvent être définis
par l'utilisateur. Les caractères accentués, bien que n'étant pas
définis dans la table standard des caractères, peuvent, grâce à la CGRAM,
être affichés comme s'ils en faisaient partie.
Il est à noter que si huit caractères peuvent être ajoutés et effacés de
la table, ceux prédéfinis ne peuvent être effacés et sont stockés sur une
mémoire de type ROM (on parlera alors de CGROM).
NB : On peut remarquer que pour une série de caractères (allant de 20h à 7Dh), la table
de l'afficheur LCD correspond au code ASCII des caractères.
L'utilisateur a accès à trois registres :
Ce registre ne sert qu'à recevoir des commandes venant de l'utilisateur, il est donc
unidirectionnel et n'est utilisable qu'en écriture.
C'est grâce à ce registre que l'on va pouvoir déplacer le curseur ou effacer
l'afficheur par exemple.
Ce registre est également unidirectionnel, mais lui, est uniquement utilisé en lecture. Il
sert à indiquer si le contrôleur interne du LCD est prêt à recevoir une
instruction ou une donnée. La demande d'état se fait grâce à la broche R/W.
R/W = 0, lorsque l'on écrit et R/W = 1, lorsque l'on veut lire l'état.
Ce registre est bidirectionnel. Il peut recevoir les caractères que l'on désire afficher (qui seront stockés dans la DDRAM) ou envoyer les caractères stockés dans la DDRAM. Le registre de données a une taille de 80 octets.