Note d`application pour LCDs graphiques «Cristalfontz GFAG24054A»
Transcription
Note d`application pour LCDs graphiques «Cristalfontz GFAG24054A»
Note d’application pour LCDs graphiques «Cristalfontz GFAG24054A» Projet Adrien BOULAMOY GE3-2008/2009 Sommaire Introduction............................................................................................................................................. 3 I. Caractéristiques électriques ............................................................................................................ 3 1. Valeurs maximums absolues ....................................................................................................... 3 2. Caractéristiques électriques ........................................................................................................ 4 II. Description de l’interface ................................................................................................................ 4 III. Caractéristiques temporelles ...................................................................................................... 7 IV. Instruction de contrôle de l’affichage ......................................................................................... 8 1. Mémoire ...................................................................................................................................... 8 2. Programmation ........................................................................................................................... 8 a. Initialisation ............................................................................................................................. 8 b. Affichage de caractères ......................................................................................................... 13 c. Fonctions supplémentaires ................................................................................................... 15 d. Exemple de fonction principale ............................................................................................. 15 Note d’application LCD graphique Cristalfontz GFAG24054A Introduction Le GFAG24064A de la marque Cristalfontz est un afficheur à cristaux liquides de 64X240 pixels. Ce type d’afficheur inclus un contrôleur graphique Toshiba T6963C et est le plus couramment utilisé pour faire un mixte entre le texte et le graphique. Ce contrôleur est pour la plupart du temps interfacé avec un microprocesseur 8 bits. L’afficheur possède une mémoire ROM de 128 mots générateur de caractères et une capacité d’extension de mémoire RAM de 64K octets. Cet afficheur présente également de principales fonctions et caractéristiques tels que le choix matériel du format d’affichage, l’allocation logiciel de RAM pour texte, graphique ou générateur de caractères... Cette note d'application n’est pas écrit avec un affichage spécifique à l'esprit, mais est destiné à donner une compréhension approfondie de la façon d'utiliser le T6963C et de mettre en œuvre l’interface logiciel / matériel. Il est nécessaire de préciser que l’afficheur sera ici piloter par un microcontrôleur de la marque Microchip et de type Pic18f458. Remarque : Tout type de microcontrôleur possédant le nombre nécessaire d’Entrées/Sorties pourra être utilisé. I. Caractéristiques électriques 1. Valeurs maximums absolues Figure 1 : tableau des valeurs maximum de caractéristiques Avant tout branchement de l’afficheur, il faut prendre connaissance des tensions et des températures à ne pas excéder pour le bon fonctionnement de l’afficheur. L’alimentation la plus couramment utilisée sera une alimentation de 5V DC. Adrien BOULAMOY Page 3 Note d’application LCD graphique Cristalfontz GFAG24054A 2. Caractéristiques électriques Figure 2 : caractéristiques électrique de l'afficheur Ce second tableau apporte plus d’information sur le type d’alimentation à choisir. La tension d’alimentation ܸ doit être typiquement de 5V à ±5% sous un courant 16mA à ±25%. Les données d’entrée de l’afficheur sont pour leur part régis par le microcontrôleur renvoyant en sortie une tension ܸ pour le niveau haut et une tension GND pour le niveau bas. II. Description de l’interface Le tableau de la page suivante permettra de réaliser la connectique correcte afin d’alimenter et commander l’afficheur. Nous pouvons y retrouver le numéro, le symbole, le niveau et la description de la pin. Chacune de ces pins devront être reliées correctement afin de garantir le bon fonctionnement de l’afficheur. Une fois ce branchement réalisé, l’utilisateur pourra s’intéresser à la partie programmation. Adrien BOULAMOY Page 4 Note d’application LCD graphique Cristalfontz GFAG24054A Figure 3 : Tableau d'interfaçage Les trois premières pins constituent les broches d’alimentation. Il est conseiller de relier FG (pin1) et ܸௌௌ (pin2) à la masse du microcontrôleur (GND) et ܸ (pin3) à une alimentation de +5V (dans notre cas identique à l’alimentation du microcontrôleur). L’intensité de l’éclairage peut être réglée grâce à un potentiomètre 10KΩ~20KΩ branché entre ࢂࢋࢋ (pin 9), tension renvoyé par l’afficheur et ࢂࡰࡰ , tension d’alimentation de l’afficheur. La tension renvoyée ࢂ est ensuite envoyée sur la broche correspondante de l’afficheur (pin 4). Le tableau (Figure 2 : caractéristiques électrique de l'afficheur) nous montre donc que la tension ࢂ doit être typiquement de -7,5V. Voici la représentation du montage : Adrien BOULAMOY Page 5 Note d’application LCD graphique Cristalfontz GFAG24054A Figure 4 : Schéma de réglage d'intensité Les pins 5, 6, 7, 8 et 10 correspondent aux broches de contrôle permettant de piloter l’afficheur et seront reliées au microcontrôleur. Remarque : Après alimentation, il est nécessaire de garder RES (pin10) au niveau bas pendant plus de quelques µs. Les pins de 11 à 18 représentent les 8 bits du port de communication parallèle où les données seront acheminées. Et enfin FS (pin 19) peut être soit contrôlée par le microcontrôleur soit figée au niveau haut ou bas en hard. Cette broche permet la sélection de la police. C'est-à-dire, au niveau haut une case aura une taille de 6*8 et de 8*8 pour un niveau bas (voir figures 4 et 5). Figure 5 : Case 8*8 FS=H Figure 6 : Case 6*8 FS=L Remarque : L’afficheur possède un connecteur annexe relié aux bornes A et K et destiné à brancher un petit onduleur. Celui-ci permet donc le rétro-éclairage bleu de l’afficheur. Figure 7 : Branchement de l'onduleur Adrien BOULAMOY Page 6 Note d’application III. LCD graphique Cristalfontz GFAG24054A Caractéristiques temporelles Figure 8 : Interface temporelle avec microcontrôleur Nous pouvons retrouver dans la table ci-dessus les différentes caractéristiques temporelles que l’on doit respecter pour que toutes les lignes de commande soit prise en compte. Ce tableau n’est pas très parlant sans le chronogramme suivant : Figure 9 : Chronogramme d'écriture ou de lecture de données Ce chronogramme montre l’évolution du système accompagnée des temps à respect pour que toutes commandes dans sa progression soit prise en compte. Afin de simplifier le programme, une temporisation de quelques µs peut être placée à certains endroits ce qui nous assurera la considération de toutes les opérations. Adrien BOULAMOY Page 7 Note d’application IV. LCD graphique Cristalfontz GFAG24054A Instruction de contrôle de l’affichage 1. Mémoire Le LCD est fondé autour d’un contrôleur T6963C. Il a donc un bus 8 bits de données parallèle et des lignes pour lire ou écrire via un microcontrôleur. Il possède également une mémoire ROM de 128 mots générateurs de caractères ainsi répertoriés dans la table suivante : Si nous souhaitons réaliser l’affichage de caractères non présents dans la table précédente ou de graphique, le T6963C peut contrôler une RAM externe d’une capacité de 8Koctets. L’allocation texte ou graphique de cette mémoire peut être faite de manière simple avec une interface graphique. Figure 10 : Interface RAM Dans cette application note, nous ne verrons pas comment utiliser la mémoire RAM. 2. Programmation La programmation expliquée ci-après est conçue afin de réaliser l’affichage classique de texte via un Pic18f458. Le logiciel de programmation utilisé est MPLAB IDE de Microchip avec le compilateur CCS. Ce dernier permet d’écrire les routines en langage C mais nécessite l’emploi d’une syntaxe propre à celui-ci. Le programme se décomposera en différentes fonctions dont nous verrons les utilités au fil de cette explication a. Initialisation Dans un premier temps, il faut procéder à une phase d’initialisation de l’afficheur. Cette phase nécessitera l’envoi de plusieurs commandes successives tout en ayant au préalable réalisé un RESET de l’afficheur et un effacement complet de l’afficheur. Ensuite il faut envoyer une série d’octets de commande et paramètres pour initialiser le contrôleur de LCD. La fonction d’initialisation sera donc fondée autour de l’algorithme suivant : Adrien BOULAMOY Page 8 Note d’application LCD graphique Cristalfontz GFAG24054A Figure 11 : Algorithme d'initialisation de l'afficheur Pour comprendre les deux dernières étapes de l’algorithme, à savoir l’écriture de la fonction LCD_clear () et l’envoi de commandes, il faut d’abord introduire plusieurs notions : Contrôle de statut La première notion est le « Contrôle de statut ». Avant l’envoi de commande à l’afficheur, il faut s’assurer que le bus de données soit libre. Pour scruter le registre de contrôle, il suffit de se placer dans la configuration suivante : ܴܦ ܹܴ ܧܥ ܥ/ܦ L H L H Nous pourrons alors lire le registre de contrôle qui se présente de la manière suivante : Figure 12 : Registre de contrôle Adrien BOULAMOY Page 9 Note d’application LCD graphique Cristalfontz GFAG24054A Remarque : Il est nécessaire de vérifier STA0 et STA1 en même temps pour la lecture/écriture classique. STA2 et STA3 sont eux valides en auto mode tandis que STA0 et STA1sont invalides. Deux fonctions de contrôle de status seront fondées selon les algorithme suivant : Figure 13 : Algorithmes de contrôle de statut Les fonctions qui en découlent sont les suivantes : Figure 14 : Fonction de contrôle de statut en mode simple écriture Figure 15 : Fonction de contrôle de statut en mode auto-écriture Adrien BOULAMOY Page 10 Note d’application LCD graphique Cristalfontz GFAG24054A Nous pourrons remarquer dans ces fonctions l’utilisation des commandes ( ݀_ݏ݅ݎݐ_ݐ݁ݏ0)݂݂ݔ et ( ݀_ݏ݅ݎݐ_ݐ݁ݏ0ݔ00) qui permettront respectivement de placer au début le port D (port parallèle) en entrée afin de lire la donnée et de placer à la fin le port D en sortie (paramétrage d’écriture par défaut). _ݐݑݐݑℎ݅݃ℎ( ) permet de mettre la sortie entre parenthèses au niveau haut et ) (ݓ݈_ݐݑݐݑpermet de la mettre au niveau bas. Envoi de commande La seconde notion importante à la compréhension totale de la fonction d’initialisation est l’ « envoi de commande ». Afin de configurer l’afficheur selon les besoins que l’on a, il existe une table où sont répertoriées les différentes commandes. Nous y retrouverons le code à envoyer et également, si besoin, le type de donnée que l’on doit lui associer : Figure 16 : Tableau des commandes Afin d’alléger les fonctions d’envoie de commandes ou de données, une fonction général d’envoi d’octet qui prendra en entrée le type d’octet (commande=1 ou donnée=0) et la valeur de cet octet est montrée sur l’exemple suivant : Adrien BOULAMOY Page 11 Note d’application LCD graphique Cristalfontz GFAG24054A Remarque : Certaines commandes du tableau (Figure 17 : Tableau des commandes) requièrent l’envoi d’une donnée sur 8 ou 16 bits spécifique à la commande. Dans ces cas là, l’envoi de commandes nécessite le suivi rigoureux d’algorithmes : Figure 18 : Algorithme d'envoi de commande De là, seront fonder les différentes fonctions d’envoi de commande selon le type de commandes utilisées. Commande simple sans donnée associée : Commande avec donnée de 8bits associée : Commande avec donnée de 16bits associée : Adrien BOULAMOY Page 12 Note d’application LCD graphique Cristalfontz GFAG24054A Maintenant que toutes les notions essentielles sont introduites, nous allons pouvoir prendre connaissance de la fonction d’initialisation appelée « » )( ܶܫܰܫ_ܦܥܮ. Celle-ci permettra juste l’initialisation du microcontrôleur, l’effacement de l’écran et de se placer un mode texte par l’envoi des différentes commandes telles que se placer à l’adresse de la zone texte, signaler le nombre de colonne et également envoyer le signal de mise en marche. Il nous reste un dernier détail auquel nous n’avons pas fait illusion. La fonction d’effacement de l’écran appelée « » )( ݎ݈ܽ݁ܿ_ܦܥܮsera réalisée par une fonction dans laquelle il faut se placer en mode auto-écriture. Une boucle « for » permettra d’écrire la même valeur sur un nombre d’itérations souhaité. Nous écrirons alors « un blanc », dont le code est de 0x00, 240 fois. En effet, notre afficheur est configuré sur 8 lignes et 30 colonnes ce qui nous donne 240 cases. Nous obtenons alors la fonction suivante : b. Affichage de caractères Lorsque la configuration de l’afficheur est faite, nous en viendrons à la partie qui est la plus à même de nous intéresser puisque c’est l’affichage proprement dit de caractères. Pour cela, la fonction « » ) (݁ݐݕܾ_ݎݓprécédemment introduite sera utilisée. Nous devrons alors lui rentrer en paramètres le caractère appelé « data » et 0 pour le paramètre « com » qui indiquera que l’on travail en mode « donnée ». Cette fonction permettra alors l’affichage simple d’un caractère mais un problème se posera lorsque nous souhaiterons faire l’affichage d’une chaine de caractères. En effet, si aucune opération n’est faite entre l’affichage de deux caractères, le second sera écris sur le premier. Afin de résoudre, Adrien BOULAMOY Page 13 Note d’application LCD graphique Cristalfontz GFAG24054A cet inconvénient majeur, nous avons créé une fonction « » ) (ܽݐܽ݀ݎݓqui réaliser l’affichage du caractère mais également une commande (0xC0) permettant l’auto-incrément du pointeur : Cette fonction nous facilitera l’écriture de chaine de caractères pour laquelle une fonction est aussi existante. Remarque : Les codes correspondants aux caractères standards sont les codes ascii auxquels nous devons enlever 0x20. Nous retrouvons d’ailleurs dans le tableau suivant les différents codes des caractères standards : Figure 19 : Tableau de codes des caractères Adrien BOULAMOY Page 14 Note d’application LCD graphique Cristalfontz GFAG24054A c. Fonctions supplémentaires Deux fonctions supplémentaires pouvant être d’une grande utilité sont également présentées dans cette application note. La première fonction consistera à permettre de se placer sur la case désirée de l’afficheur. La fonction prendra en paramètres le numéro de ligne et le numéro de colonne sachant que l’afficheur comprendra 8 lignes et 30 colonnes. Un calcul permettra d’obtenir l’adresse sur laquelle le pointeur de case devra se situer. Un envoi de commande sera par la suite envoyer au LCD pour qu’il repositionne le pointeur à la bonne localisation. Nous obtiendrons alors la fonction suivante : La seconde permettra l’effacement d’une ligne entière de l’afficheur. Elle prendra en paramètre le numéro de ligne à considérer. Nous nous placerons donc sur la première case de la ligne grâce à la fonction précédente. Puis, pendant 30 itérations (nombre de colonnes par ligne), nous écrirons une case vide. La fonction qui en découle est la suivante : d. Exemple de fonction principale Pour finir, vous trouverez ci-dessous un exemple de fonction principale qui vous permettra de voir de plus prêt comment sont utiliser les fonctions précédemment développée. Ce court programme permettra d’afficheur la lettre ‘B’ sur la première case de l’écran (en haut, à gauche) et de faire clignoter le mot toute les 2 secondes sur la seconde ligne. Adrien BOULAMOY Page 15