Ennoncé Exercice 1 Serie-LCD-Clavier - TERMINAL1_JP --------------------------------------------------- Utilisation de l'écran et du clavier Hexadécimal. - Effacement de l'écran LCD. - Chaque touche appuyée sur le clavier est affîchée sur le LCD. - Lorsque la deuxième ligne est pleine, elle est recopiée sur la première ligne, puis effacée afin d'afficher les caractères suivants, etc, etc.. Principe de fonctionnement du programme : ----------------------------------------- En ce qui concerne l'affichage sur l'écran LCD, nous n'utiliserons pas les fonctions standard. En fait, nous contruirons les deux lignes dans des variables, puis nous les afficherons. Description des tâches : ------------------------ - Effacer l'écran - Afficher un message d'accueil - Construire la deuxième ligne avec les 16 caractères générés par la lecture clavier matriciel. - Lorsque la ligne est remplie, la recopier sur la ligne 1 et effacer la ligne 2 et ainsi de suite.... ******************************************************************* Programmation Structurée ========================= BEGIN Définition des variables ------------------------ DECLARE j AS BYTE ' Valeur décodée de la touche appuyée DECLARE Ligne1$ AS ALPHA ' Première ligne d'affichage du LCD (16 Chars) DECLARE Ligne2$ AS ALPHA ' Deuxième ligne d'affichage du LCD (16 Chars) DECLARE Touche$ AS ALPHA ' Valeur ASCII de la touche appuyée DECLARE Key$(16) AS ALPHA ' Matrice contenant les codes du clavier Initialisation des variables ---------------------------- LET Key$(0) = "1" ' Code à vérifier avec le hardware utilisé LET Key$(1) = "2" ' Idem LET Key$(2) = "3" ' Idem LET Key$(3) = "A" ' Idem LET Key$(4) = "4" ' Idem LET Key$(5) = "5" ' Idem LET Key$(6) = "6" ' Idem LET Key$(7) = "B" ' Idem LET Key$(8) = "7" ' Idem LET Key$(9) = "8" ' Idem LET Key$(10) = "9" ' Idem LET Key$(11) = "C" ' Idem LET Key$(12) = "*" ' Idem LET Key$(13) = "0" ' Idem LET Key$(14) = "#" ' Idem LET Key$(15) = "D" ' Idem Initialisation ============== LET Ligne1$ = " MICRO - INFO " ' Définition de la première ligne LET Ligne2$ = " Terminal 1 " ' Définition de la seconde ligne ' Effacement de l'écran GOSUB Affilcd ' Affichage des 2 lignes ' Petite pause LET Ligne1$ = " " ' Première ligne à 16 blancs LET Ligne2$ = " " ' Deuxième ligne à 16 blancs ' Effacement de l'écran GOSUB Affilcd ' Affichage des 2 lignes Début du programme principal ============================ DO WHILE i=i ' Début de la boucle infinie DO WHILE ' Test longueur de ligne LET J = ' Lecture du clavier LET Touche$ = Key$(J) ' Valeur ASCII de la touche IF J <> 16 THEN ' Détection d'une touche pressée LET Ligne2$ = Ligne2$ + Touche$ ' Ajout de la valeur de la touche sur la ligne GOSUB Affilcd ' Affichage sur le LCD ENDIF ' Fin du test ENDDO ' Fin de boucle longueur de ligne2 LET Ligne1$ = Ligne2$ ' Copie de la ligne2 dans la ligne1 LET Ligne2$ = " " ' Remplacement des valeurs par des espaces GOSUB Affilcd ' Affichage sur le LCD LET Ligne2$ = "" ' Mise à blanc de la ligne ENDDO ' Bouclage sur la boucle infinie END ' Fin du programme Sous routines ============= AffiLCD: Affichage de deux lignes de 16 caractères -------------------------------------------------- SUB Affilcd ' Sur ligne 1 du LCD ' Sur ligne 2 du LCD ENDSUB =========[ FIN ]===============================================================