Ennoncé Exercice 3 Serie-LCD-Clavier - TERMINAL3_JP --------------------------------------------------- Etablissement d'une communication bi-directionnelle entre l'AT-Mega16 et le PC. Sur le PC, nous utiliserons le programme hyperterminal comme dans l'exercice précédent, mais ici, l'option "local echo" sera désactivée et c'est l'AT-Mega16 qui se chargera de cette tâche. Le principe ici est d'utiliser l'hyperterminal avec le clavier du PC. Chaque touche appuyée sur le PC sera envoyée vers l'AT-Mega16. Celui-çi renvoie le caractère reçu sur le port série, puis affiche le caractère sur l'écran LCD. Si tout va bien, le caractère devrait s'afficher aussi dans la fenêtre hyperterminal du PC. 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 construirons les deux lignes dans des variables, puis nous les afficherons. Description des tâches : ------------------------ - Effacer l'écran - Afficher un message d'accueil - Attendre la réception d'un caractère sur le port série RS232 - Renvoyer le caractère sur le port RS232 et puis afficher ce caractère sur le LCD. - Lorsque la ligne 2 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 ' Octet reçu sur entrée RS232 et ' renvoyé sur sortie RS232 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) Initialisation du programm ========================== LET Ligne1$ = " MICRO - INFO " ' Définition de la première ligne LET Ligne2$ = " Terminal 3 " ' 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 = ' Octet avec le caractère frappé sur le PC ' Envoi vers le PC LET Ligne2$ = Ligne2$ + J ' Ajout de la valeur de la touche sur la ligne GOSUB Affilcd ' Affichage sur le LCD 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 ]===============================================================