Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
M1_Infotronique Informatique embarquée
TP2- Gestion d’un afficheur LCD
I. Objectifs :
Développer des applications avec le microcontrôleur STM32F407 sur la gestion d’un affichage
sur un écran LCD 16x2.
II. Travail demandé
Présentation Afficheur alphanumérique 2 x 16 caractères
Rais Ghofran 1
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
Caractéristiques et configurations :
Pour utiliser l’afficheur LCD, il faut commencer par configurer en créant une variable de
type :
typedef struct
{
uint8_t DataLength; /* LCD communication bus length. Only 4-bit
supported yet */
uint8_t LineNumber; /* Number of lines displayed on LCD.
*/
uint8_t CharacterFont; /* Displayed character font */
}LCD_InitTypeDef;
- Le « DataLengh » correspond à la taille des données sur 4bits du LCD et prend comme
valeur « LCD_DataLength_4Bit »
- Le « LineNumber » correspond aux nombres de lignes du LCD et prend comme valeur :
« LCD_LineNumber_1Line » ou « LCD_LineNumber_2Line »
- Le « CharacterFont » correspond aux nombre de pixel de chaque cellule et prend comme
valeur « LCD_CharacterFont_5x8Dots » ou « LCD_CharacterFont_5x10Dots » tout
dépend des caractéristiques du LCD.
Fonctions dédiées au LCD
Il existe des fonctions sous l’environnement Coocox CoIDE dédiées à la gestion du LCD
nous citons :
- « void LCD_Putc(char c) : permettant d’écrire un caractère sur LCD
- « void LCD_Puts(char *c) : permettant d’afficher une chaîne de caractère sur LCD
Application 1 :
Le but de cette application est de développer un programme qui affiche le message « HELLO
WORLD ! »
1) Créer un nouveau projet avec un model Chip et choisir STM32F407VG.
2) Ajouter le dossier « lcd » dans l’arborescence de votre projet.
3) Dans un programme principal «main.c » créer un code qui permet d’afficher le
message « Hello World ! ».
int main(void)
{
LCD_InitTypeDef LCD_InitStruct;
LCD_InitStruct.CharacterFont = LCD_CharacterFont_5x10Dots;
LCD_InitStruct.DataLength = LCD_DataLength_4Bit;
LCD_InitStruct.LineNumber = LCD_LineNumber_2Lines;
Rais Ghofran 2
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
LCD_Init(&LCD_InitStruct);
LCD_Puts("HELLO WORLD!");
while(1)
{}
}
On donne :
Bus PIN LCD PIN µC
Control RS PB2
RW GND
E PB7
Data D4 PC12
D5 PC13
D6 PB12
D7 PB13
4) Compiler votre programme puis tester le sous ISIS suivant le schéma ci-dessous.
Rais Ghofran 3
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
Application 2 :
Le but de cette application est d’afficher un message sur deux lignes en le clignotant d’une
temporisation de 500ms.
« PHARMACIE
EN SERVICE »
1) Dans un programme principal main.c, créer une fonction de temporisation «delay() ».
2) Compléter le code avec les fonctions prédéfinies en annexe pour décrire l’application
souhaitée.
3) Compiler votre programme puis tester le sous ISIS.
Annexe
void LCD_Clear (void)// effacer l’écran
void LCD_Goto(uint8_t cx, uint8_t cy)// écrire sur une ligne
Rais Ghofran 4