Bibliothèques pour l'écran tactile de la carte MCBSTM32C 1 Bibliothèque pour utiliser l'écran LCD Pour utiliser l'écran LCD il faut: inclure le fichier GLCD.h dans le programme main inclure la bibliothèque GLCD_SPI_STM32.lib dans le projet 1.1 Dimensions de l'écran LCD L'écran a une définition de 320 x 240 (largeur x hauteur). Deux constantes sont définies contenant ces valeurs : GLCD_WIDTH et GLCD_HEIGHT 1.2 Initialisation de l'écran LCD Elle se fait par la fonction : void GLCD_Init () 1.3 Couleurs Le codage des couleurs est fait sur 16 bits de la façon suivante : 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 rouge vert bleu La composante rouge est codée sur 5 bits, la verte sur 6 bits et la bleue sur 5 bits. Toutefois la bibliothèque offre une fonction permettant à partir de 3 composantes entre 0 et 255 d'obtenir le code correspondant à la couleur la plus proche sur l'écran LCD. Il s'agit de la fonction : unsigned short GLCD_Color (unsigned short r, unsigned short v, unsigned short b) Le premier paramètre est la composante rouge (0 à 255) Le deuxième paramètre est la composante verte (0 à 255) Le dernier paramètre est la composante bleue (0 à 255) La valeur de retour est le code de couleur correspondant pour l'écran LCD (16 bits) Quelques couleurs sont prédéfinies : Nom rouge vert bleu Black 0 0 0 Navy 0 0 128 DarkGreen 0 128 0 DarkCyan 0 128 128 Maroon 128 0 0 Purple 128 0 128 Olive 128 128 0 LightGrey 192 192 192 DarkGrey 128 128 128 Blue 0 0 255 Green 0 255 0 M. Dalmau IUT de Bayonne Pays-Basque 1
Cyan 0 255 255 Red 255 0 0 Magenta 255 0 255 Yellow 255 255 0 White 255 255 255 Le choix de la couleur utilisée pour les tracés (dessins et caractères) est fait par la fonction : void GLCD_SetForegroundColor (unsigned short color) Le paramètre est la couleur de tracé utilisée pour les futurs dessins ou caractères. Le choix de la couleur utilisée comme fond pour les caractères est fait par la fonction : void GLCD_SetBackgroundColor (unsigned short color) Le paramètre est la couleur utilisée comme fond pour les futurs caractères. 1.4 Effacement de l'écran avec une couleur L'écran LCD est totalement effacé (rempli par une couleur uniforme) grâce à la fonction : void GLCD_Clear (unsigned short color) Le paramètre est la couleur de fond utilisée pour effacer l'écran. 1.5 Graphisme Le dessin d'un seul pixel se fait par la fonction : void GLCD_PutPixel (unsigned int x, unsigned int y) Le premier paramètre est la coordonnée en X du pixel (0 à Le deuxième paramètre est la coordonnée en Y du pixel (0 à Le pixel est allumé dans la couleur définie par le dernier appel de GLCD_SetForegroundColor Le tracé d'une ligne droite se fait par la fonction : void GLCD_DrawLine (unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2) Le premier paramètre est la coordonnée en X du point de départ (0 à Le deuxième paramètre est la coordonnée en Y du point de départ (0 à Le troisième paramètre est la coordonnée en X du point d'arrivée (0 à Le dernier paramètre est la coordonnée en Y du point d'arrivée (0 à La droite est tracée dans la couleur définie par le dernier appel de GLCD_SetForegroundColor Le tracé d'un rectangle se fait par la fonction : void GLCD_DrawRect (unsigned int x, unsigned int y, unsigned int l, unsigned int h) M. Dalmau IUT de Bayonne Pays-Basque 2
Le rectangle est tracé dans la couleur définie par le dernier appel de GLCD_SetForegroundColor Le tracé d'un rectangle plein se fait par la fonction : void GLCD_FillRect (unsigned int x, unsigned int y, unsigned int l, unsigned int h) Le rectangle est rempli par la couleur définie par le dernier appel de GLCD_SetForegroundColor Le tracé d'un ovale est obtenu en définissant le rectangle circonscrit. Il se fait par la fonction : void GLCD_DrawOval (unsigned int x, unsigned int y, unsigned int l, unsigned int h) L'ovale est tracé dans la couleur définie par le dernier appel de GLCD_SetForegroundColor Le tracé d'un ovale plein est obtenu en définissant le rectangle circonscrit. Il se fait par la fonction : void GLCD_FillOval (unsigned int x, unsigned int y, unsigned int l, unsigned int h) L'ovale est rempli par la couleur définie par le dernier appel de GLCD_SetForegroundColor 1.6 Images Les images sont définies par un tableau de mots de 16 bits. Le premier élément du tableau contient la largeur de l'image, le deuxième contient sa hauteur, les éléments suivants sont les codes de couleur des pixels. On peut obtenir un fichier.h contenant la déclaration d'un tel tableau à partir d'un fichier au format BMP (couleurs sur 24 bits) en utilisant la commande "genere" fournie. Cette commande demande le nom du fichier BMP sans suffixe et crée un fichier du même nom avec le suffixe.h qu'il suffit d'inclure dans le programme qui doit afficher l'image. Le tableau défini dans ce fichier.h porte le même nom que le fichier lui-même (sans suffixe évidemment). M. Dalmau IUT de Bayonne Pays-Basque 3
L'affichage de l'image se fait alors par la fonction : void GLCD_DrawImage (unsigned int x, unsigned int y, const unsigned short bitmap[ ]) Le premier paramètre est la coordonnée en X du coin supérieur gauche de l'image (0 à Le deuxième paramètre est la coordonnée en Y du coin supérieur gauche de l'image (0 à Le dernier paramètre est le tableau contenu dans le fichier.h généré 1.7 Affichages Les affichages en mode textuel se font sur 10 lignes (0 à 9) de 20 colonnes (0 à 19). Le fichier Font-24x16.h définit des caractères sous forme de tableaux de pixels de 16x24 Il contient les caractères de code ASCII 0x20 (espace) à 0x7E (tilde) tandis que les codes 0x80 à 0x8F définissent des caractères semi-graphiques : 0x80 / 0x81 : cercle (vide/plein) 0x82 / 0x83 : carré (vide/plein) 0x84 / 0x85 : flèche vers le haut (vide/pleine) 0x86 / 0x87 : flèche vers le bas (vide/pleine) 0x88 / 0x89 : flèche vers la gauche (vide/pleine) 0x8A / 0x8B : flèche vers la droite (vide/pleine) 0x8C / 0x8D : homme arrêté (vide/plein) 0x8E / 0x8F : homme qui marche (vide/plein) L'affichage d'un caractère est obtenu par la fonction : void GLCD_DrawChar (unsigned int ln, unsigned int col, char c) Le dernier paramètre est le caractère à afficher L'affichage d'une chaîne de caractères est obtenu par la fonction : void GLCD_DrawString (unsigned int ln, unsigned int col, char *s) Le dernier paramètre est un pointeur sur la chaîne de caractères à afficher L'affichage d'un entier décimal est obtenu par la fonction : void GLCD_DrawInt (unsigned int ln, unsigned int col, int v) Le dernier paramètre est l'entier à afficher L'affichage d'un nombre réel est obtenu par la fonction : void GLCD_DrawFloat (unsigned int ln, unsigned int col, float v) M. Dalmau IUT de Bayonne Pays-Basque 4
Le dernier paramètre est le réel à afficher L'affichage en hexadécimal d'un entier est obtenu par la fonction : void GLCD_DrawHex (unsigned int ln, unsigned int col, int v) Le dernier paramètre est l'entier à afficher en hexadécimal 1.8 Boutons utilisables avec l'écran tactile Les fonctions suivantes permettent de définir des boutons utilisables ensuite avec l'écran tactile (voir 2). Un bouton est constitué d'un texte placé dans un rectangle. La couleur du texte et du rectangle sont définies par GLCD_SetForegroundColor celle du fond du bouton par GLCD_SetBackgroundColor. Un bouton est représenté par une structure de données de type GLCD_Button. La création d'un bouton se fait par la fonction : void GLCD_CreateButton (GLCD_Button *bouton, unsigned int x, unsigned int y, char *texte) Le premier paramètre est un pointeur sur une structure de type GLCD_Button Le deuxième paramètre est la coordonnée en X du coin supérieur gauche du bouton Le troisième paramètre est la coordonnée en Y du coin supérieur gauche du bouton Le dernier paramètre est un pointeur sur la chaîne de caractères contenant le texte du bouton Cette fonction initialise la structure de données passée en premier paramètre pour définir le bouton. Cette structure de données pourra alors être utilisée par les fonctions qui suivent. L'affichage d'un bouton à l'écran se fait par la fonction : void GLCD_DrawButton (GLCD_Button *bouton, unsigned char appuye) Le premier paramètre est un pointeur sur une structure de type GLCD_Button initialisée par la fonction GLCD_CreateButton Le dernier paramètre indique si le bouton doit être dessiné en position appuyée ou lâchée. Les valeurs possibles de ce paramètre sont : GLCD_Button_ON ou GLCD_Button_OFF Lorsque l'on utilise l'écran tactile (voir 2) on récupère les coordonnées d'écran du point touché. La fonction suivante permet de savoir si un point défini par ses deux coordonnées se trouve ou non à l'intérieur d'un bouton : int GLCD_InsideButton (GLCD_Button *bouton, unsigned int x, unsigned int y) Le premier paramètre est un pointeur sur une structure de type GLCD_Button initialisée par la fonction GLCD_CreateButton. Le deuxième paramètre est la coordonnée en X du point à tester Le dernier paramètre est la coordonnée en Y du point à tester La valeur en retour est 1 si le point est dans le bouton et 0 sinon M. Dalmau IUT de Bayonne Pays-Basque 5
2 Bibliothèque pour utiliser l'écran tactile Pour utiliser l'écran tactile il faut: inclure le fichier TS.h dans le programme main inclure les bibliothèques TS_MBCSTM32C.lib et I2C_MBCSTM32C.lib dans le projet 2.1 Initialisation de l'écran tactile Elle se fait par la fonction : void TS_Init() 2.2 Utilisation de l'écran tactile Une structure de donnée de type TS_Coordonnees est utilisée pour contenir les informations sur le point de contact. Ses champs sont les suivants : unsigned int x; // coordonnée d'écran en x unsigned int y; // coordonnée d'écran en y unsigned int z; // pression du contact Pour savoir si des coordonnées de touché sont disponibles sur le contrôleur d'écran tactile on utilise la fonction : unsigned int TS_TesterCoordoneesPresentes(TS_Coordonnees *coords) Le paramètre est un pointeur sur une structure de type TS_Coordonnees dans laquelle seront placées les informations sur le point de contact s'il y a eu contact (valeur de retour de la fonction = 1) La valeur se retour est 1 s'il y a eu contact (le paramètre contient les informations sur le point de contact) et 0 sinon (le paramètre n'a pas été modifié) Tant qu'il y a contact avec l'écran le contrôleur continue à transmettre les informations sur le point de contact. Lorsque l'on souhaite les ignorer en attendant qu'il n'y ait plus de contact la fonction suivante peut être utilisée : void TS_AttendreFinTouche () M. Dalmau IUT de Bayonne Pays-Basque 6