10. Gestion d'un afficheur à cristaux liquides (LCD)
L'utilisation d'un afficheur à cristaux liquides ou LCD est assez courante sur les systèmes embarqués. C'est un écran de faible dimension employé pour informer l'utilisateur sur l'état du système ou pour afficher les mesures effectuées par différents capteurs.
Il existe un standard très populaire qui permet de gérer les communications avec la grande majorité des modèles d'afficheurs LCD quelque soit le fabricant. Ce standard est connu sous le le nom HD44780U. Ce nom correspond au contrôleur qui reçoit les données du microcontrôleur et qui les communique directement avec l'afficheur à cristaux liquides.
10.1. Caractéristiques d'un afficheur du type HD44780U
La standard HD44780U utilise 3 signaux de contrôle ainsi que 4 ou 8 lignes d'entrée-sortie pour le bus de données. L'utilisateur peut choisir si l'afficheur à cristaux liquides doit fonctionner avec un bus de données de 4 bits ou un bus de données de 8 bits. Si un bus de données de 4 bits est utilisé l'afficheur LCD utilise un total de 7 lignes (3 signaux de contrôle plus les 4 lignes pour le bus de données). Si un bus de données de 8 bits est utilisé l'afficheur LCD utilise un total de 11 lignes (3 signaux de contrôle plus les 8 lignes pour le bus de données).
Les trois signaux de contrôle sont appelés : EN, RS et RW.
EN, enable
Le signal enable est utilisé pour indiquer à l'afficheur à cristaux liquides qu'on va lui envoyer des données. Pour envoyer des données à l'afficheur, le programme doit s'assurer que le signal est au niveau bas (0) avant de faire évoluer les deux autres signaux de contrôle et de placer des données sur le bus de données. Quand l'ensemble des autres lignes sont correctement positionnées, le signal EN doit être placé au niveau haut (1) et il faut attendre un temps minimum requis par le composant (ce temps varie d'un afficheur à l'autre) avant de le placer au niveau bas (0) à nouveau.
RS, register select
Le signal register select est utilisé pour distinguer les instructions de commande des données à afficher. Si on place RS au niveau bas (0), les données sont traitées comme une commande ou instruction spéciale (effacer l'écran, positionner le curseur de position, etc.). Si on place RS au niveau haut (1), les données envoyées sont des caractères que l'écran doit afficher.
RW, read/write
Le signal read/write est utilisé pour distinguer si les informations sur le bus de données sont lues ou écrites. Si on place le signal RW au niveau haut (1), le programme interroge l'afficheur à cristaux liquides sur son état (Get LCD status). Dans tous les autres cas des commandes sont écrites. Ainsi, le signal RW sera presque toujours au niveau bas.
L'utilisation d'un afficheur à cristaux liquides ou LCD est assez courante sur les systèmes embarqués. C'est un écran de faible dimension employé pour informer l'utilisateur sur l'état du système ou pour afficher les mesures effectuées par différents capteurs.
Il existe un standard très populaire qui permet de gérer les communications avec la grande majorité des modèles d'afficheurs LCD quelque soit le fabricant. Ce standard est connu sous le le nom HD44780U. Ce nom correspond au contrôleur qui reçoit les données du microcontrôleur et qui les communique directement avec l'afficheur à cristaux liquides.
10.1. Caractéristiques d'un afficheur du type HD44780U
La standard HD44780U utilise 3 signaux de contrôle ainsi que 4 ou 8 lignes d'entrée-sortie pour le bus de données. L'utilisateur peut choisir si l'afficheur à cristaux liquides doit fonctionner avec un bus de données de 4 bits ou un bus de données de 8 bits. Si un bus de données de 4 bits est utilisé l'afficheur LCD utilise un total de 7 lignes (3 signaux de contrôle plus les 4 lignes pour le bus de données). Si un bus de données de 8 bits est utilisé l'afficheur LCD utilise un total de 11 lignes (3 signaux de contrôle plus les 8 lignes pour le bus de données).
Les trois signaux de contrôle sont appelés : EN, RS et RW.
EN, enable
Le signal enable est utilisé pour indiquer à l'afficheur à cristaux liquides qu'on va lui envoyer des données. Pour envoyer des données à l'afficheur, le programme doit s'assurer que le signal est au niveau bas (0) avant de faire évoluer les deux autres signaux de contrôle et de placer des données sur le bus de données. Quand l'ensemble des autres lignes sont correctement positionnées, le signal EN doit être placé au niveau haut (1) et il faut attendre un temps minimum requis par le composant (ce temps varie d'un afficheur à l'autre) avant de le placer au niveau bas (0) à nouveau.
RS, register select
Le signal register select est utilisé pour distinguer les instructions de commande des données à afficher. Si on place RS au niveau bas (0), les données sont traitées comme une commande ou instruction spéciale (effacer l'écran, positionner le curseur de position, etc.). Si on place RS au niveau haut (1), les données envoyées sont des caractères que l'écran doit afficher.
RW, read/write
Le signal read/write est utilisé pour distinguer si les informations sur le bus de données sont lues ou écrites. Si on place le signal RW au niveau haut (1), le programme interroge l'afficheur à cristaux liquides sur son état (Get LCD status). Dans tous les autres cas des commandes sont écrites. Ainsi, le signal RW sera presque toujours au niveau bas.