Académique Documents
Professionnel Documents
Culture Documents
électrique
Vivion Nicolas 1ère année
Compte rendu de TP
microcontrôleur
Session 2005
Sommaire :
1 : Introduction…………………………………………………………………
2 : Schéma fonctionnel…………………………………………………………
3 : Architecture du système…………………………………………………….
4 : Organigramme du programme………………………………………………
1 : Programme principal…………………………………………………
2 : Affichage LCD………………………………………………………
3 : Saisie valeur…………………………………………………………
4 : Attendre touche……………………………………………………..
5 : Com_LCD / Affich_LCD…………………………………………..
6: Phrase LCD………………………………………………………….
7: Lecture touché……………………………………………………….
5 : Code commenté……………………………………………………………..
8 : Conclusion…………………………………………………………………..
1 : Introduction
Dans le détail, les MLI seront configurés grâce aux paramètres suivants :
2 : Schéma fonctionnel
3 : Architecture du système
Pour ce système, on utilise plusieurs périphériques du microcontrôleur .
Tout d’abord, on a besoin d’un port pour connecter le clavier. A cette fin, on
utilisera le port 10 qui permet de configurer des interruptions sur réception de touche s’il
arrivait qu’on en ait besoin.
Il nous faut aussi 2 ports pour l’afficheur LCD. Un pour les données et un pour les
signaux d commande si on effectue des transferts de données de 8 bits. On utilisera donc
le port 2 pour transmettre les données à l’afficheur et les bits 0,1 et 2 du port 1 pour les
signaux de commande ( RS, R/W et E).
Pour générer la MLI, il nous faut une broche de sortie. On a choisi de prendre la
broche 0 du port 3.
Enfin pour générer une MLI, on utilise 2 timers, l’un configuré en astable et
l’autre en monostable. Ce dernier ce déclenchera sur débordement du premier. On
prendra dans notre système les timers A0 et A1.
4 : Organigramme du programme
1 : Programme principal
2 : Affichage LCD
3 : Saisie valeur
4 : Attendre touche
5 : Com_LCD / affich_LCD
6: Phrase_LCD
7 : Lecture touche
5 : Code commenté
/********************************************************/
/* TEST PROGRAM FOR M16C6N0 board */
/* FILENAME: ports.c */
/* WRITTEN BY: PINEL/VIVION */
/* DESCRIPTION: */
/* Génération de MLI */
/* avec gestion par clavier et écran LCD */
/* simulateur et cible ( non compatible debbugger ) */
/********************************************************/
#include "sfr62.h"
#include <math.h>
void main(void)
{
int x;
}
p10=0x0D; //Sélection de la 2ème ligne
switch (p10) //Selon le code lu sur le port on
détermine la // touche enfoncée
{
case 0xBD:
retour ='4';
break;
case 0xDD:
retour ='5';
break;
case 0x7D:
retour ='6';
break;
}
break;
case 0xDB:
retour ='8';
break;
case 0x7B:
retour ='9';
break;
}
p10=0x07; //Sélection de la 4ème ligne
switch (p10) //Selon le code lu sur le port on
détermine la // touche enfoncée
{
case 0xB7:
retour ='*';
break;
case 0xD7:
retour ='0';
break;
case 0x77:
retour ='#';
break;
}
return retour; //On renvoie la valeur de la touche ou 0
si // aucune n'est enfoncée
}
valeur=0;
i=0;
com_lcd(0x01);
phrase_lcd(ph1);
com_lcd(0xC0);
phrase_lcd(ph3);
com_lcd(0x90);
phrase_lcd(ph4);
com_lcd(0xD0);
phrase_lcd(ph11);
com_lcd(0x84);
f=saisievaleur(5,1000,50000);
com_lcd(0xC9);
moyRC=saisievaleur(2,10,90);
com_lcd(0x97);
frc=saisievaleur(2,5,50);
temp =(8000000/f);
ta0=temp;
temp=(moyRC*temp)/100;
ta1=temp;
//Calculs...
}
com_lcd(0x01);
phrase_lcd(ph5);
com_lcd(0xC0);
phrase_lcd(ph6);
com_lcd(0x90);
phrase_lcd(ph3);
com_lcd(0xD0);
phrase_lcd(ph11);
com_lcd(0x88);
fmoy=saisievaleur(5,1000,50000);
com_lcd(0xCA);
derivF=saisievaleur(2,5,25);
com_lcd(0x99);
RCmoy=saisievaleur(2,10,90);
com_lcd(0xDB);
derivRC=saisievaleur(2,5,25);
//Calculs...
}
8: Conclusion