Formations à l'informatique et à l'électronique

Auteur : SD
Créé le : 21-03-2018

Bibliothèque LCD pour la carte EXPLORER 8 de Microchip

Microchip Logo

La carte EXPLORER 8 est équipée d'un afficheur LCD 2x16 caractères. Cet afficheur se commande par l'intermédiaire du BUS SPI (Serial Peripheral Interface) par l'intermédiaire d'un expandeur MCP23S17.

Une bibliothèque fournie par Microchip rend l'utilisation du bus SPI et de l'expandeur complètement transparente. D’une manière simplifiée, on peut considérer que l’afficheur est connecté de cette manière au microcontrôleur :

Microchip Explorer 8 Afficheur Bus SPI

Cet article propose une amélioration de la bibliothèque initiale.

Fonctions ajoutées

Trois nouvelles fonctions ont été ajoutées :

Code source ajouté dans lcd.h

/**
* fonctions supplémentaires ci-dessous ajoutées par SD
*
*/
#define LCD_SETCGRAMADDR 0x40
#define LCD_CURSORSHIFT 0x10
#define LCD_DISPLAYMOVE 0x08
#define LCD_MOVERIGHT 0x04
#define LCD_MOVELEFT 0x00
/**
* @Description
* <B>Permet de créer jusqu'à 8 caractères personnalisés dans la CGRAM</B>
*
* <B>Prototype : </B><CODE>void LcdCreateChar(uint8_t location, uint8_t charmap[]);</CODE>
*
* @param location : Entre 0 et 7, emplacement dans la CGRAM
* @param charmap[] : Tableau de 8 octets dans lequel est dessiné la matrice 5x8 du caractère
*
*
* @Example
* <code>
* //Tableau 5x8 contenant le caractère personnalisé<BR>
* uint8_t coeur[] = {
* 0b00000,
* 0b01010,
* 0b11111,
* 0b11111,
* 0b11111,
* 0b01110,
* 0b00100,
* 0b00000
* };<BR><BR>
* // Création du caractère personalisé dans la CGRAM de l'afficheur<BR>
* LcdCreateChar(0, coeur);<BR><BR>
* // Affichage du caractère personalisé<BR>
* WriteLcdByte(0);
* </code>
*/
void LcdCreateChar(uint8_t location, uint8_t charmap[]);

/**
* @Description
* <B>Décale l'ensemble de l'affiichage d'un caractère vers la droite</B>
*
*/
void LcdScrollDisplayRight(void);

/**
* @Description
* <B>Décale l'ensemble de l'affiichage d'un caractère vers la gauche</B>
*
*/
void LcdScrollDisplayLeft(void);

Code source ajouté dans lcd.c

void LcdCreateChar(uint8_t location, uint8_t charmap[]) {
location &= 0x7; // Pour être sûr de limiter aux 8 premières
WriteLcdCommand(LCD_SETCGRAMADDR | (location << 3));
for (int i=0; i<8; i++) {
WriteLcdByte(charmap[i]);
}
}

void LcdScrollDisplayRight(void) {
WriteLcdCommand(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
}

void LcdScrollDisplayLeft(void) {
WriteLcdCommand(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);
}

Téléchargement

Vous pouvez télécharger ici les fichiers "lcd.h" et "lcd.c" modifiés :


Vous avez apprécié cet article ? Partagez le !