Vous êtes sur la page 1sur 69

Les microcontrôleurs

A- MISE EN SITUATION
1/ Fonctionnement du système :
Porte automatique
L'ouverture et la fermeture
automatique de la porte d'un
garage d'automobile sont assurées
par un système technique
comportant les éléments suivants :
1.Télécommande à distance.
2.Moteur à courant continu +
réducteur.
3. Carte de commande +
Commutateur à clef.
4.Lampe de signalisation.
5. Antenne de réception.
6. Capteurs de fin de course.
Dans une première partie on va
s'intéresser à la télécommande
qui nous permet de commander
la porte à distance.
Le principe de la télécommande est
basé sur l'émission d'un code
binaire sur dix bits [C9..C0]
reconnaissable par la carte de
commande de la porte.
Ce code est composé de deux
parties :
Pour donner la possibilité à
l'utilisateur d'adapter une nouvelle
télécommande à la porte du
garage ou de la remplacer en cas
de panne, le constructeur a prévu
un microswitch sur la
télécommande qui nous permet
de définir le code d'identification.
Celui-ci est généralement inscrit
sur la carte de commande ou
donné dans le manuel
d'utilisation de la porte. Le code
correspondant à l'ordre
d'ouverture ou de fermeture de la
porte (C1,C0) est le suivant :
(01 : ordre d'ouverture;
11 : ordre de fermeture ).
Le schéma de la télécommande
est le suivant :
Le module hybride émetteur
haute fréquence (M1) est un
émetteur sans fil, qui à pour rôle
de transmettre le code [C9..C0]
généré par le microcontrôleur à
la carte de commande de la
porte. Ce module ne fera pas
l'objet de notre étude.
Qu’est-ce qu’un PIC ?
Un PIC n’est rien d’autre qu’un
microcontrôleur, c’est à dire une
unité de traitement de l’information
de type microprocesseur à
laquelle on a ajouté des
périphériques internes permettant
de réaliser des montages sans
nécessiter l’ajout de composants
externes.
Suivant les auteurs, PIC peut
prendre diverses significations :
*Programmable integred circuit.
*Programmable intelligent
circuit.
Le constructeur opte pour la
signification suivante :
*Peripheral Interface Controller.
Identification des
microcontrôleurs de Microchip.
Un PIC est généralement
identifié par une référence de la
forme suivante : xx(L)XXyy-zz
xx : famille du composant,
actuellement « 12, 14, 16, 17 et
18 ».
L : Celle-ci indique que le PIC
peut fonctionner avec une plage
de tension beaucoup plus
tolérante.
XX : type de mémoire
programme :
C: indique que la mémoire
programme est une EPROM ou
plus rarement une EEPROM

CR : pour indiquer une


mémoire de type ROM
F : indique une mémoire de type
FLASH.
yy : Identificateur.

zz: représente la fréquence


d’horloge maximale que le PIC
peut recevoir.
Exemples de systèmes à base
de microcontrôleurs.
Les systèmes et les objets
techniques à base de
microcontrôleur(s), prennent de
plus en plus de place dans
notre quotidien.
Le microcontrôleur présente
des avantages tels que :
*La simplicité de mise en œuvre.
*La grande capacité de traitement.
*Le coût relativement faible.
Place du microcontrôleur dans
un système.
Ordre
Ordre
Information A
Grandeu
Grandeu Grandeu
Grandeu
Information
traitée
traitée C
rr rr
physique électriqu T
physique électriqu
I
ee
Capter Traiter Transmettre
Transmettre
O
Capter Traiter
Acquérir
Acquérir Ordonner
Ordonner
Communiquer
Communiquer N
N
E
U
R
Micro-ordinateur
Micro-ordinateur Préactionneur,
Préactionneur,
Microprocesseur
Microprocesseur Exemple
Exemple: :
Capteur(s)
Capteur(s) Microcontrôleur
Microcontrôleur Contacteur
Contacteur
Automate
Automate Relais
Relais
etc.…
etc.… Distributeur
Distributeur
Exemple :
Ce microcontrôleur se présente sous la forme
d'un boîtier DIL à 18 broches
Cette architecture, fait
apparaître les modules
suivants :
Une unité centrale cœur du
système également appelée
CPU (Central Processing Unit).
Dans cette unité centrale nous
retrouverons plusieurs éléments
comme l’unité arithmétique et
logique (UAL).
Une mémoire morte contenant
le programme à exécuter par le
microcontrôleur, généralement
appelée ROM (Read Only
Memory). Cette mémoire a la
particularité de sauvegarder en
permanence les informations
qu’elle contient même en
l’absence de tension.
Une mémoire vive également
appelée RAM (Random Access
Memory) Cette mémoire permet
de sauvegarder temporairement
des informations. Le
microcontrôleur pourra utiliser
cette mémoire pour stocker des
variables temporaires ou faire
des calculs intermédiaires.
Un port d’entrées-sorties
permettant au microcontrôleur
de dialoguer avec l’extérieur
pour, par exemple, prendre
l’état d‘un capteur , d’une Led
ou encore piloter un relais (via
un transistor).
Des bus internes permettant la
communication entre les différents
éléments intégrés au
microcontrôleur.
NB : en plus de ce qui vient d’être
cité,un microcontrôleur peut
intégrer un ou plusieurs
convertisseurs analogique
numérique
CAN (utiles dans le cas
d’acquisition de température
par exemple ou de grandeur
physique quelconque).
Les « Data Sheet » des
fabricants et
constructeurs,renseignent
amplement sur ces différentes
spécifications.
Critères de choix d’un
microcontrôleur.
Le choix judicieux d’un
microcontrôleur, pour une
application donnée dépend :
*Du nombre d’entrées/sorties
de l’application cible.
*Du type de mémoire
programme : flash, Eprom,
OTP… et de sa taille.
De la présence ou l’absence
des convertisseurs
Analogiques/Numériques
CAN.
De l’existence ou non d’une
mémoire EEPROM.
De l’existence ou non d’un bus
I2C .
Viennent ensuite les critères
suivants :
*La disponibilité du composant
sur le marché local
*La facilité de mise en œuvre.
*Le prix.
*L’approvisionnement multisource.
Rappel«programmation
graphique ».
Définition :
un algorithme est une suite
ordonnée d’actions que doit
réaliser un processus de
commande pour aboutir à un
résultat fixé d’avance.
Cette suite d’opérations sera
décomposée en actions
élémentaires ou instructions. Un
algorithme peut être :
 *représenté, graphiquement par
un organigramme,
algorigramme ou Grafcet.
écrit sous forme littérale, avec
un langage algorithmique.
program led;

PortB en sortie begin

TRISB:=0;
Mettre à zéro toutes
les diodes PORTB:=0;
Boucle infinie
While true do

Begin

PORTB:=0;
Attendre un temps T
Delay_ms(500);
Basculer l’état des
diodes (mettre à 1 PORTB:=$ff;
toutes les diodes )
Delay_ms(500);
Attendre un temps T
Fin End;

end.
U1
16 17
OSC1/CLKIN RA0
15 18
OSC2/CLKOUT RA1
1
RA2
4 2
MCLR RA3
3
RA4/T0CKI
6
RB0/INT
7
RB1
8
RB2
9
RB3
10
RB4
11
RB5
12
RB6
13
RB7
PIC16F84A
D8 D7 D6 D5 D4 D3 D2 D1
LED-RED LED-RED LED-RED LED-RED LED-RED LED-RED LED-RED LED-RED

R8 R7 R6 R5 R4 R3 R2 R1
220 220 220 220 220 220 220 220
program
fonctionou;

begin
PortA en entrée
trisa:=$ff;
PortRB0 en sortie
trisb:= $fE;
Mettre à zéro le
port RB0 portb:=0;
Boucle infinie
while true do

begin
Si portRA0=1 ou
portRA1 =1 Alors if((porta.0=1)or(por
ta.1=1))then
portRB0=1
portb.0:=1
Si non portRB0=0
else portb.0:=0;
Fin
end;

end.
0
U1
16 17
OSC1/CLKIN RA0
15 18
OSC2/CLKOUT RA1
1
RA2
4 2
MCLR RA3
3
RA4/T0CKI 0
6
RB0/INT
7
RB1
8
RB2
9
RB3
10
RB4
11
RB5
12
RB6
13
RB7
D2
PIC16F84A LED-YELLOW

R2
220
Que ce soit par la méthode graphique ou en
langage évolué, l’écriture du programme ainsi
que sa mise au point doivent suivre le
diagramme suivant :
Un programme est un texte que le
compilateur va traduire en fichier
hexadécimal. Alors il doit avoir une
structure particulière.

Le texte d'un programme contient au


moins trois parties.
1.L'entête
Ne contient qu'une ligne.
Commence par le mot réservé
«Program».
Donne un nom au programme.
Se termine par un point virgule.
Exp: Program test;
2. Les déclarations
Elles permettent de définir les éléments
utilisés dans le programme.
En effet on devra déclarer les
variables utilisées pour permettre
au compilateur d'effectuer les
réservations de mémoire ainsi
que les sous programmes
(Procédures et fonctions).
Exp:
Var x : byte;
Const y : word = 145;
2. Le corps du programme
Commence par le mot réservé
"Begin " et se termine par le mot
réservé "End" suivi d'un point final.
Ce qui suit ce "End." n'est pas
pris en compte par le
compilateur.
Entre "Begin" et "End." se
trouvent les instructions à
effectuer par le programme.
Toutes instructions ou actions
se terminent par un point virgule
Une ligne de commentaires doit
commencer par "{" et se
terminer par "}" ou commence
par "//".
Un bloc d’instructions commence
par "Begin" et se termine par "End".
Résumé :
Les types de variables utilisées en
Mikropascal :
Les bases du compilateur
Mikropascal :
Le décimal A=10 ;
L’hexadécimal A=$0F ; ou
A=0x0F ;
Le binaire A=
%11010100 ;
les opérateurs arithmétiques et
logiques
Les structures usuelles :
L’affectation :

Les structures usuelles :


Les structures alternatives
Les structures usuelles :
Les structures alternatives
Les structures usuelles :
Les structures alternatives
Les structures
Les structuresusuelles
itératives
: ou
répétitives
Les structures usuelles :
Les structures itératives ou répétitives
Programmation d’un
Méthodes usuelles :
GRAFCET
Programmation
Méthodes d’un:
usuelles
GRAFCET
Méthodes usuelles :
Programmation d’un GRAFCET
Algorithme :
Algorithme grafcet1 ;
Variables X0, X1, X2, X3 : octet ; // Déclaration des étapes du GRAFCET.
_ DEBUT
| TrisA <== $F8 ; // RA0, RA1, RA2 sont des sorties ; les autres broches sont des entrées.
| TrisB <== $FF ; // Toutes les broches du port B sont des entrées.
| PortA <== 0 ; // état initial des sorties.
| X0 <==1 ; // Initialement l'étape " X0 " est active.
| X1 <== 0 ; // Initialement l'étape " X1 " est non active.
| X2 <== 0 ; // Initialement l'étape " X2 " est non active.
| X3 <== 0 ; // Initialement l'étape " X3 " est non active.
|
| TANQUE (1=1) FAIRE // Boucle infinie.
| _ DEBUT
| | SI ((X0 =1) ET (Portb.0=1)) ALORS // Condition de franchissement de la
| | // première transition qui est :
| | // étape " X0 " active et réceptivité « Dcy »
vraie
| | _ DEBUT
| | | X0<== 0 ; // Désactivation de l'étape " X0 ".
| | | X1<== 1 ; // Activation de l'étape " X1 ".
| | |_ FINSI ;
| | SI ((X1 =1) ET (Portb.1=1)) ALORS // Condition de franchissement de la
| | // deuxième transition qui est :
| | // étape " X1 " active et réceptivité " a " vraie
| | _ DEBUT
| | | X1<== 0 ; // Désactivation de l'étape " X1 ".
| | | X2<== 1 ; // Activation de l'étape " X0 ".
| | |_ FINSI ;
| |
| | SI ((X3 =1) ET (Portb.3=1)) ALORS // Condition de franchissement de la
| | // quatrième transition qui est :
| | // étape " X3 " active et réceptivité " c " vraie.
| | _DEBUT
| | | X3<== 0 ; // Désactivation de l'étape " X3 ".
| | | X0<== 1 ; // Activation de l'étape " X0 ".
| | |_FINSI ;
| | SI (X1=1) ALORS Porta.0 <==1 SINON Porta.0 <==0 ; FINSI; // 14M1 =
X1.
| | SI (X2=1) ALORS Porta.1 <==1 SINON Porta.1 <==0 ; FINSI; // KM2 = X2.
| | SI (X3=1) ALORS Porta.2 <==1 SINON Porta.2 <==0 ; FINSI; // 12M1 =
X3.
| |_ FINFAIRE ;
|_ FIN.
Méthodes usuelles :
Traduction d’équations combinatoires
en programme en Mikropascal
Méthodes usuelles :
Traduction d’équations combinatoires
en programme en Mikropascal
Traduction d’équations combinatoires
en programme en Mikropascal
Algorithme EQUATIONS1;
_DEBUT
| trisA <== $FF; // Tout le port A est configuré en entrée .
| trisB <== $E0; // de RB0 à RB4 sorties les autres broches : entrées .
| portb <== 0; // initialisation des sorties
| TANQUE (1=1) FAIRE // boucle infinie
| _DEBUT
| |// équation de S0 :
| | SI ((portA.0=1) ET (portA.1=1) ET ( portA.2=0)) ALORS
| | portb.0<==1 SINON portb.0 <== 0; FINSI ;
| |//équation de S1 :
| | SI ((portA.1=1)  (portA.2=1)) ALORS
| | portb.1<==1 SINON portb.1 <== 0; FINSI ;
| |//équation de S2 :
| | SI ((portA.0=1) OU ((portA.1=1) ET (portA.2=0))) ALORS
| | portb.2<==1 SINON portb.2 <== 0; FINSI ;
| |// équation de S3
| | SI ((portA.1=0) ET (portA.2=0)) ALORS
| | portb.3<==1 SINON portb.3<==0; FINSI ;
| |// équation de S4
| | SI ((portA.1=0) OU (portA.2=0)) ALORS
| | portb.4<==1 SINON portb.4<==0; FINSI ;
| | _FINFAIRE;
|_FIN.
Méthodesdeusuelles
Utilisation :
l’interruption externe
RB0
Système de comptage de pièces sur un tapis roulant
dans un processus industriel.
Méthodesdeusuelles
Utilisation :
l’interruption externe
RB0
Algorithme COMPTEUR;
Variables
compteur : entier; // déclaration de la variable de comptage : entier.
nombre : chaine de caractère [12]; // déclaration d'une chaine de 12 caractères
// pour l'affichage.
procédure interruption; // sous programme d'interruption.
_DEBUT
| intcon<==$90; // validation de l'interruption RB0 et mise à zéro de son
| //drapeau le bit INTF
| compteur<==compteur+1; // incrémentation du compteur.
|_FIN;
DEBUT
| lcd_config(portb,1,3,2,7,6,5,4); //configuration de l'LCD
| // lcd_config(le port, RS, E, RW, D7, D6, D5, D4)
| lcd_cmd(lcd_cursor_off); // éteindre le curseur de l'afficheur LCD
| TrisA<==$FF; //portA entrée
| TrisB<==$01; // RB0 : entrée ; les autres broches : sorties pour l'LCD
| intcon<==$90; // activation de l'interruption externe RB0/INT
| compteur<==0; // initialisation du compteur.
| lcd_out(1,1,'N.P ='); //afficher sur la ligne 1 et la colonne1 de l'LCD " N.P= ".
| TANQUE (1=1) FAIRE // boucle infinie.
| _DEBUT
| | inttostr (compteur,nombre); // changement de la variable " compteur "
| | //en une chaine de caractère qui est " nombre ".
| | lcd_out(1,6,nombre); //afficher sur la 1ere ligne
| | //et la 6emme colonne de l'LCD :" nombre ".
| | SI (porta.0=1) ALORS compteur<==0;FINSI; // l'appui sur le bouton RZ
| | // initialise le compteur.
| |_FINFAIRE;
|_FIN.
simulation
Méthodes usuelles :
Extension des ports du microcontrôleur
Etude préliminaire : Compteur modulo 10
Méthodes usuelles :
Extension des ports du microcontrôleur
Etude préliminaire : Compteur modulo 10

Vous aimerez peut-être aussi