Vous êtes sur la page 1sur 31

hapitre A4

LLeLeLes Microcontrô

Microcontrôleurs
## Activité N°1: Découverte du microcontrôleur122

## Activité N°2: Schéma électronique à base d’un microcontrôleur123

## Activité N°3: Exploration de la valise d’expérimentation ZITOPIC124


AUTOMATIQUE

## Activité N°4: Programmation en langage machine125

## Activité N°5: Câblage de base. 127

## Activité N°6: Gestion d’un aquarium128

## Activité N°7: Prise en main du logiciel FlowCode V4.3 (v. Demo) 130

## Activité N°8: Système de vote136

## Activité N°9: Distributeur de boissons138

## Activité N°10: Fonction mémoire140

## Activité N°11: Gestion d’un afficheur LCD142

## Activité N°12: Gestion d’un clavier matriciel 144

## Activité N°13: Timer0 en mode compteur146

## Activité N°14: Timer0 en mode temporisateur147

## Activité N°15: Interruption INT/RB0149

## activité n°:16 : compteur binaire à base de PIC 16F877A150


hapitre A4

Activité N°1: Découverte du microcontrôleur


On dispose d’une maquette dont le schéma structurel est présenté ci-dessous et de
deux circuits intégrés CI1 et CI2 de même référence (PIC 16F 84a), avec deux
programmes différents, utilisant des entrées/sorties conformément au schéma ci-
dessous).

+5V
AUTOMATIQUE

+5V
Support 18 broches

S1
S2 R5
330

H1

R1 R2 R3 R4
330 330 1K 1K

S1 S2 H1
1)- Monter le cicuit CI1. Manipuler les interrupteurs S1 et S2 et
0 0 0
observer l’état de H1 puis remplir le tableau ci-contre:
0 1 0
1 0 0
1 1 1
S1 S2 H1
2)- Reprendre le même travail pour l’autre circuit intégré CI2,
puis remplir le tableau ci-contre: 0 0 0
0 1 1
1 0 1
1 1 1

3)- Donner la fonction réalisée par le premier circuit, puis celle réalisée par le deu-
xième circuit.
## Fonction dans le premier cas : C’est une fonction ET logique..
## Fonction dans le deuxième cas : C’est une fonction OU logique.
Conclure : .Il s’agit des circuits intégrés programmable, appelés microcontrôleurs

122
Manuel d’activités

Activité N°2: Schéma électronique à base d’un microcontrôleur


1)- Démarrer ISIS Proteus.
2)- Dans le menu principal, cliquer sur Help ou Aide puis Sample Designs ou
Exemples.
Ouvrir le fichier PICCALC.DSN dont le chemin est le suivant :
SAMPLE
VSM for PICMICRO
VSM for PIC16
PIC Calculator

C2
LCD1
10p LM020L
X1 C1
R5
10k
10p
1MHz

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
U2

1
2
3

4
5
6

7
8
9
10
11
12
13
14
9 21
OSC1/CLKIN RB0/INT
10 22
OSC2/CLKOUT RB1
1 23
MCLR/Vpp/THV RB2
24
RB3/PGM
2 25
RA0/AN0 RB4
3 26
RA1/AN1 RB5
C3 4
RA2/AN2/VREF- RB6/PGC
27
1uF 5 28
RA3/AN3/VREF+ RB7/PGD
6
RA4/T0CKI
7 11
RA5/AN4/SS RC0/T1OSO/T1CKI
12
RC1/T1OSI/CCP2
13
RC2/CCP1
14
RC3/SCK/SCL
15
RC4/SDI/SDA
16
RC5/SDO
17
RC6/TX/CK
18
RC7/RX/DT
PIC16F876
KeyPad
D1
A 7 8 9
D2
B 4 5 6
D3
C 1 2 3
D4
R1
10k
R2
10k
R3
10k
R4
10k
D 0 = +
1

Fig. 1

3)- Lancer la simulation. Manipuler les touches du clavier et déduire la fonction


assurée par ce montage : C’est une calculatrice....................................
..................................................................................................................................................
123
hapitre A4

4)- Compléter la liste des composants utilisés dans ce montage


Symbole Désignation Valeur ou référence
R1,R2,R3,R4,R5 Résistor ( Résistance) 10K
C1,C2 Condensateur non polarisé 10 pF
C3 Condensateur polarisé 1µF
X1 Quartz 1 MHz
D1,D2,D3,D4 Diode à jonction
LCD1 Afficheur LCD LM020L
AUTOMATIQUE

U2 Circuit intégré PIC 16F876


KeyPad Clavier 4x4

5)- Le circuit intégré U2 est un microcontrôleur qui possède trois ports d’entrées/
sorties. Pour chaque port, indiquer le nombre des entrées/sorties.
N. B. : une entrée/sortie logique commence par la lettre ” R” ; une entrée
analogique par les lettres ”AN”.

Ports Nombre des entrées/sorties logiques Nombre des entrées analogiques


Port A 6 5
Port B 8 0
Port C 8 0
Activité N°3: Exploration de la valise d’expérimentation ZITOPIC

B2
B1

B3 B4
B5
B6’
B6
B7
B8

B9
B10 B11

124
Manuel d’activités

1)- Identifier les différents blocs qui constituent cette valise :


B1 Afficheur LCD 2x16 B6’ Série de 4 Interrupteurs
B2 Plaque d’essai B7 PiC 876A
B3 4 Afficheurs 7 segments B8 Clavier 4x4
B4 PIC 16F 877A B9 8 LEDs de visualisation
B5 PIC 16F628A B10 4 Relais
B6 Programmateur B11 4 boutons poussoirs

2)- A partir du document constructeur, relever les caractéristiques des micro-


contrôleurs équipant cette valise :

µC Famille Nbre de broches Nbre entrées/sorties Type de Boîtier


16F877A Mid-range 40 33 DIP
16F628A Mid-range 18 13 DIP
16F876A Mid-range 28 22 DIP

Activité N°4: Programmation en langage machine


1)- Éditer un programme:
a- Lancer bloc-notes ( éditeur des textes sous Windows) et taper les cinq lignes
suivantes sans espaces :
NB: Chaque ligne doit commencer par ”:”
:020000000328D3
:10000600831603138501FF308600831285010618C7
:100016001028861810280510112805140A281228F9
:02400E004A2F37
:00000001FF
b- Enregistrer le fichier obtenu sur le bureau avec l’extension .hex (exemple : “test.
hex”).
2)- Transférer le programme vers le microcontrôleur en appliquant les instructions
suivantes:
a- Vérifier que la valise est hors tension et que le câble d’alimentation est débran-
ché;
b- Connecter le programmateur ( B6) au micro-ordinateur avec le câble USB;
c- Raccorder le programmateur avec le connecteur J1 au bloc B4;
d- Mettre le commutateur J4 du bloc B4 sur la position ”PROGRAM”;
e- Fermer l’interrupteur S5 du bloc B4: la Led D15 s’allume.

125
hapitre A4

f- Transférer le programme vers le microcontrôleur :


a- Démarrer le logiciel WinPic 8.0 V3.55.

b- Choisir la famille du Pic

c- Choisir votre Pic


AUTOMATIQUE

e- Lancer la programmation par un clic


d- Charger le fichier «Hex» sur l’icône ; Le logiciel demande
en utilisant la commande: si on veut vraiment effectuer l’action ,
fichier/ouvrir/....etc répondre par oui.
Fig. 3

3)- Tester le programme en appliquant les instructions suivantes :


a- Connecter:
## RB0 du bloc B4 à S1 du Bloc B11;
## RB1 du bloc B4 à S2 du bloc B11;
## VCC1 du bloc B4 à Vcc du bloc B11;
## RA0 du bloc B4 à la diode D1 du bloc B9.
b- Remettre le commutateur J4 du bloc B4 sur la position ”RUN”.
c- Actionner les boutons poussoirs du bloc B11 et compléter la table de vérité de la
led D1 en fonction de S1 et S2.

S1 S2 D1
0 0 1
0 1 1
1 0 1
1 1 0

D1=...S1 / S2.

126
Manuel d’activités

4)- Modifier un programme :


a- Démarrer bloc-notes , ré-ouvrir le fichier édité précédemment et remplacer les
caractères en bleu du fichier précédent par les caractères en rouge ci-dessous.
:020000000328D3
:10000600831603138501FF30860083128501061CC3
:100016001028861C10280514112805100A281228F5
:02400E004A2F37
:00000001FF

b- Enregistrer le fichier et le transférer vers le microcontrôleur en suivant les mêmes


instructions de la question 3 sans toucher au câblage.
c- Actionner de nouveau les boutons poussoirs du bloc B11 et compléter la table
de vérité de la led D1 en fonction de S1 et S2.
S1 S2 D1
0 0 1
0 1 0
1 0 0
1 1 0
D1= S1 ↓ S2.
5)- Interpréter:
a- Quelles sont les fonctions logiques obtenues dans les deux cas ?
La fonction NAND puis la fonction NI.
b- Avez-vous changé le microcontrôleur ou modifié le câblage ?
Ni microcontrôleur ni câblage sont modifiés .............................................................
c- Avez-vous modifié le programme?
Oui.
d- Conclure :
La différence entre les deux fonctions obtenues résulte du changement du
programme et non pas du câblage
Activité N°5: Câblage de base.
Compléter le câblage des éléments suivants :
## l’alimentation;
## l’oscillateur;
## la reset (initialisation). 0V

1 18
2 17
16 F 628

3 16
R 4 15 C1
5 14
XT

6 13
7 12 C2
8 11
S 9 10

Vcc

127
hapitre A4

Activité N°6: Gestion d’un aquarium


L’aquarium figuré ci-dessous est remplit d’eau et équipé de composants permettant
une reproduction du milieu naturel où vivent des poissons.
AUTOMATIQUE

Ces composants, commandés par une carte électronique à base de microcontrôleur,


assurent les fonctions données dans le tableau ci-dessous:

Fonction Action Actionneurs Capteurs


Changer Remplir bac Electrovanne BD Capteur 1
et de déchloration
dechlorer l’eau Vider l’aquarium Electrovanne A Capteur B
Remplir Pompe A Capteur H
l’aquarium
Réguler Chauffer l’eau Résistor chauffant Thermostat
la
témpérature Refroidir l’eau Ventillateur Ther-
mocouple
Contrôler le Détecter niveau ----------- Capteur C
niveau critique critique de l’eau
de l’eau Signaler atteinte Buzzer ----------
niveau critique
Eclairer --------- Tubes Néon Capteur LDR
l’aquarium

1)- Identifier les entrées logiques, les entrées analogiques et les sorties en co-
chant la case correspondante à chaque composant donné dans le tableau suivant:

128
Manuel d’activités

Composant Entrée logique Entrée analogique Sortie


Électrovanne BD X
Capteur 1 X
Pompe A X
Électrovanne A X
Capteur B X
Capteur H X
Résistor chauffant X
Thermostat X
Ventilateur X
Thermocouple X
Buzzer X
Capteur C X
Tube Néon X
Capteur LDR X
Total 6 1 7
Capteur LDR: capteur sensible à la variation de la lumière reçue. (LDR : Light
dépendent du résistor)

2)- Le tableau suivant présente les principales caractéristiques de trois micro-


contrôleurs. Choisir celui qui convient à cette application.

Microcontrôleur Nbre E/S logiques Nbre E. Ana Nbre Broches Prix DT


16F84A 13 0 18 7.580
16F876A 16 5 28 11.000
16F877A 33 8 40 12.080

3)- Justifier votre choix :


On a besoin d’une entrée analogique et de 13 entrées/sorties logiques , le
16F84a n’a aucune entrée analogique donc on ne peut pas l’utiliser.
Le 16F876A et le 16F877A peuvent faire la commande du système. Mais, le
16F876A est moins cher et occupe moins d’espace ( 28 broches) donc on
l’utilise au lieu du 16F877A.

129
hapitre A4

Activité N°7: Prise en main du logiciel FlowCode V4.3 (version Demo)

1)- Lancer Flowcode. La fenêtre ci-contre


apparait:

2)- Sélectionner : Créer Nouveau Algorigramme


FlowCode ...
3)- Cliquer sur le bouton OK
AUTOMATIQUE

Une deuxième fenêtre apparaît:

4)- Sélectionner le microcontrôleur (16F84A)


5)- Valider par OK.

B C
E

D
A

Les six zones désignées par les lettres (A, B ..., F) sont :
A- Fenêtre Algorigramme:
Les icônes qui constituent l’algorigramme sont affichées dans cette fenêtre.
B- Barre des icones de commandes:
La barre d’outils propose les icônes de commandes usuelles . Cette barre contient
130
Manuel d’activités

aussi des icônes pour démarrer, arrêter et suspendre la simulation.


C- Barre de composants:
Pour choisir les composants à utiliser.
D- Barre des icônes de programmation:
Sélectionner, glisser et déposer l’icône appropriée sur la page de l’algorigramme
pour créer une application.
E- Fenêtre aperçu microcontrôleur:
Cette fenêtre présente le brochage du microcontrôleur. Lors de la simulation, les
broches actives sont mises en surbrillance en fonction de l’évolution du programme
mis en jeu .
F- Panneau de simulation:
Ce panneau permet de visualiser le comportement des différents composants.
1)- Saisir l’algorigramme suivant:
a-

b- Double cliquer sur le


Aj
ou

BEGIN bloc sortie


te
ru

BEGIN
n
Bl
oc
so
rti

0 -> PORT B
e

END

END

c- Sélectionner PORT B
d- Sélectionner Port entier
e - Taper 170
f- Cliquer sur OK

g- Ajouter une série de Leds ( LEDarray)

131
hapitre A4

h- Connecter cette série de LEDs au Port B.

♦ Cliquer avec le bouton


droit sur la série de
LEDs.
♦ Choisir la commande
connexions
AUTOMATIQUE

♦ Choisir PORT B.
♦ Terminé
i- Lancer la simulation en cliquant sur le bouton .
j- Quelles sont les LEDs allumées ?
B1,B3,B5 et B7
k- Modifier la valeur associée au port B par 136 au lieu de 170. Quelles sont les
LEDs allumées .de nouveau?
B7 et B3
l- Quelle valeur doit-on associer au port B pour allumer uniquement les LEDs
B1,B3 et B6 ?
Portb= ( 01001010)2= 7410
2)- Modifier le programme
BEGIN

170
-> PORT B

85
-> PORT B

END
Fig.9

a- Ajouter un bloc de sortie dont la valeur est 85.


b- Relancer la simulation.
c- Quelles sont les Leds allumées ?
B6,B4,B2et B0
d- Justifier le résultat obtenu.
Le programme exécute la dernière instruction et se termine
132
Manuel d’activités

3)- Ajouter des temporisations et relancer la simulation. BEGIN

170
-> PORT B
a- Qu’observe-t-on ?
Les LEDS B7,B5,B3 et B1 s’allument durant une seconde puis
elles s’éteignent 1s
Puis les LEDS B6,B4,B2 et B0 s’allument et restent allumées
b- A quoi servent les temporisations?
Pour générer des pauses et d’arrêter l’exécution du programme 85
pendant une durée du temps exprimée en secondes, millisecondes -> PORT B
ou microsecondes.
c- Combien de fois le programme se répète-t-il ?
Il se répète une seule fois ....................................................... END
....................................................................................................
4)- Ajoutez une boucle et relancer la simulation: Fig.10
a- Qu’observe-t-on ?
L’exécution du programme se répéte infiniment
....................................................................................................
b- A quoi sert la boucle ?
Pour répéter l’exécution des instructions...... BEGIN
....................................................................................................
c- Le programme se termine-t-il ?
Non. While 1
5)- Modifier les propriétés de la boucle et relancer la simula-
tion.. 170
-> PORT B

5
1s

85
-> PORT B

a- Qu’observe-t-on ? 1s
Le programme s’exécute 5 fois et s’arrête
..
b- Quelle est la différence avec la boucle précédente?
Dans la boucle précédente le programme s’exécute infiniment et
ne s’arrête qu’après une action sur le bouton ‘‘arrêter la simulation’’
alors que pour la deuxième boucle on a fixer le nombre de fois END
d’exécution. Fig.11

133
hapitre A4

6)- Utiliser les variables :


a- Dans la barre de menu Édit, cliquer sur la commande Variables.

Une première fenêtre apparaît:

b- Cliquer sur le bouton «Ajouter Variable…».


AUTOMATIQUE

Une deuxième fenêtre apparaît:

c- Taper le nom de la variable (exemple: X1).


Choisir le type de la variable.
BEGIN d- Cocher Octet.Cliquer
sur OK.
X1=170 e- Créer une deuxième variable X2 de type Octet.
X2=85 f- Ajouter dans l’algorigramme précédent un bloc calculs
g- Modifier les valeurs affectées au Port B, puis simuler le pro-
While 1 gramme.
h- Établir maintenant
X1 un programme permet-
-> PORT B tant d’allumer uniquement
les LEDs B0, B1, B2 et B3
pendant 500 ms, puis uni-
1s quement les LEDs B4, B5,
B6 et B7 pendant 500 ms.
X2 Cette séquence devra se
-> PORT B répéter 7 fois.
i- Enregistrer le pro-
gramme, le compiler puis le transférer vers le microcontrôleur Vé-
1s
rifier le fonctionnement.

END

Fig.12
134
Manuel d’activités

7)- Utiliser des Blocs Calculs : BEGIN


a- Créer un nouveau fichier avec le microcontrôleur 16F628A
et saisir l’algorigramme ci-contre.
X=0
b- Ajouter une série de LEDs ( LEDarray).
c- Connecter cette série au PORT B.
d- Lancer la simulation en cliquant sur le bouton While 1

e- Quelle est la fonction assurée par le programme correspon- X=X+1


dant à l’algorigramme ci-contre ?
C’est un compteur binaire sur 8 bits,
........................................................................................ X
....................................................................................... -> PORT B
.........................................................................................
....................................................................................... 1s

8)- Ajouter des Tests.

BEGIN END
Fig.13
X=0

While 1

If Yes
X=9 a- Saisir l’algorigramme ci-contre,.
? b- Quel est le modulo de ce compteur?
No
C’est un compteur binaire modulo 10,
c- Remplacer dans la condition Test 9 par 15.
X=X+1 X=0 Que devient le modulo de ce compteur?
C’est un compteur binaire modulo 16.................
d- Déduire le rôle du Test dans cet algorigramme
X
Dans algorigramme on fait un test sur la valeur
-> PORT B de X
si X=9 ----->on remet X à 0
1s si X ≠ 9 ---->X s’incrémente de 1

Fig.14
END
135
hapitre A4

Activité N°8: Système de vote

Trois délégués d’entreprise représentent respectivement le nombre de voix suivantes:


a = 350 voix, b = 250 voix et c = 100 voix.
Pour être acceptée lors des réunions, une proposition doit recueillir au moins 2/3
(plus de 400 voix) des voix représentées.

1)- Compléter la table de vérité suivante :

a b c S
AUTOMATIQUE

c\a.b 00 01 11 10
0 0 0 0 0 0 0 1 0
0 0 1 0 1 0 1 1 1
0 1 0 0
0 1 1 1 2)- Déduire l’équation logique
1 0 0 0
1 0 1 1 S = a.b + a.c + b.c...............
1 1 0 1
1 1 1 1

3)- Conception d’une solution programmée à base de PIC:

a- Indiquer une référence de PIC qui convient le mieux à cette application

On a besoin de quatre entrées/ sorties ,donc on peut utiliser le 16F84a ou 16F88


b- Compléter la table d’affection des entrées/sorties pour le microcontrôleur choisi

a b c S
RA0 RA1 RA2 RB1
c- Configurer les registres de direction des ports A et B

RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0


0 0 0 0 0 1 1 1
TRISA= $07= %00000111=7
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
0 0 0 0 0 0 0 0
TRISB=$00=%00000000=0

136
Manuel d’activités

4)- 1ére méthode


Compléter l’algorigramme correspon- BEGIN

dant à ce système de vote. While 1


5)- Éditer cet l’algorigramme avec Input
A0 ->a
FlowCode Demo. Input

6)- Simuler la solution proposée A1 ->b


7)- Enregistrer puis compiler l’algo- Input

A2 ->c
rigramme.
8)- Transférer le fichier .hex obtenu si
a=1 ?
Yes

vers le microcontrôleur et vérifier son No si Yes


b =1 ? Output
fonctionnement sur une maquette ou si
b =1 ?
No

Output
No 1 ->B1
sur la valise d’expérimentation. Yes
0 ->B1
si No si Yes
c =1 ? c =1 ?
Yes No
Output Output Output
Output
1 ->B1 0 ->B1 0 ->B1 1 ->B1

END
2ème méthode (fig 22) Fig. 21

Utiliser un seul bloc test pour tester


l’équation entière
BEGIN

While 1
BEGIN
Input
A0 ->a
While 1
Input
Input
A1 ->b
A0 ->a
Input
(a AND b) OR (a AND c) OR (b AND c)=1 Input
A2 ->c
A1 ->b
Input
Yes
A2 ->c
No

Output Output
0 ->B1 1 ->B1
S=(a AND b) OR (a AND c) OR (b AND c) Output
S ->B1

END Fig. 22

END
3ème méthode
Utiliser un bloc Calcul pour écrire l’équation entière. Fig. 23

137
hapitre A4

Activité N°9: Contrôle de qualité de fabrication de


briques
On dispose de trois critères pour déterminer si une brique est
bonne ou non : la longueur L , la hauteur H et l’épaisseur E.

En fonction de ces critères, les briques sont Voie A


rangées suivant trois catégories :
AUTOMATIQUE

A: les trois dimensions sont correctes. Brique Voie B


B: deux dimensions parmi le trois sont
correctes.
Voie C
C: une dimension est correcte au maximum.
Établir la table de vérité et déterminer les
équations logiques simplifiées des variables de sorties A, B et C.
L H E A B C
0 0 0 0 0 1 E\L.H 00 01 11 10
0 0 1 0 0 1 0 0 0 0 0
0 1 0 0 0 1 1 0 0 1 0
0 1 1 0 1 0
1 0 0 0 0 1 A = (H.L.E)
1 0 1 0 1 0
1 1 0 0 1 0
1 1 1 1 0 0

E\L.H 00 01 11 10

0 0 0 1 0
1 0 1 0 1

B = E.LH +E.L.H + E.L.H

E\L.H 00 01 11 10
0 1 1 0 1
1 1 0 0 0
C = L.H + L.E + H.E

138
Manuel d’activités

9)- Proposer une solution à base de PIC :


a- Choisir le microcontrôleur qui convient à cette application

16 F84A, 16 F 88, 16F 628A


b- Compléter la table d’affection des entrées/sorties du microcontrôleur choisi.

L H E A B C
RA2 RA1 RA0 RB2 RB1 RB0
c- Compléter l’algorigramme correspondant en utilisant:
## L’icône multiple-décision

BEGIN

WHILE
1
Input
PORT A
X

Switch =1 =2 =3 =4 =5 =6 =7
SWITCH
X

Output Output Output Output Output Output Output Output


1 1 1 2 1 2 2 4
-> PORTB -> PORTB -> PORTB -> PORTB -> PORTB -> PORTB -> PORTB -> PORTB

END

## L’icône Calcul

BEGIN
Output
WHILE C
1 -> B0
Input Output
A0 B
->E -> B1
Intput
Output
A1
->H A
-> B2
Intput
A2
->L
Calcul

A= E AND E...
B=(E AND (.... END

d- Vérifier le fonctionnement par simulation.


e- Compiler et transférer le fichier .hex vers le microcontrôleur.
f- Vérifier le fonctionnement sur maquette ou valise d’expérimentation.
139
hapitre A4

Activité N°10: Fonction mémoire


Un moteur électrique est commandé à a m
l’aide de deux boutons poussoirs m et
a:
## Une impulsion sur m entraîne la X
mise en marche du moteur;
## Une impulsion sur a entraîne l’arrêt X
du moteur;
## L’action simultanée sur a et m entraîne l’arrêt du moteur.
1)- Compléter le schéma du câblage du circuit de commande:
AUTOMATIQUE

2)- Déterminer l’équation logique de X.


X= a.(m +X)
BEGIN
3)- Compléter l’al-
gorigramme avec While 1
FlowCode Demo.
Input
4)- Enregistrer puis
compiler l‘algo- A0 ->a
rigramme. Input
5)- Transférer le A1->m
fichier .hex obtenu
vers le microcontrôleur If Yes
et vérifier son a=1
fonctionnement. ?
No

If
No
m=1
x=0
?
If No
Yes
x=1
?
x=1 Yes

x=1 x=0

Output
x->B0

END
140
Manuel d’activités

6)- Quelles sont les modifications à apporter à l’algorigramme précédent pour que
la priorité devienne à la marche. Indiquer ces modifications sur l’algorigramme
ci-dessous:

BEGIN

While 1
Input

A0 ->a
Input
A1->m

If Yes
m=1
?
No

If
No
a=1
x=1
?
If No
Yes
x=1
?
x=0 Yes

x=1 x=0

Output
x->B0

END

141
hapitre A4

Activité N°11: Gestion d’un afficheur LCD


1ère partie Effectuer dans l’ordre les opérations suivantes:

3)- Paramétrer les BEGIN


routines composants
comme indiqué sur . 4)- Pour afficher des caractères
LCDdisplay sur l'LCD, utiliser la Macro :
l'algorigramme
Init Ecriture_caractère.
Dans la zone. de saisie relative
aux paramètres, saisir le texte
LCDdisplay à afficher entre guillemets.
AUTOMATIQUE

Écrit _ chaîne(....

END
2)- Glisser vers la zone de travail
deux instances de l'icône
"Routine composant"

1)- Ajouter au panneau


de simulation un
Fig 9 composant : LCD.

La routine « Init » permet d’initialiser l’afficheur.


La routine « Écrit _chaîne » permet d’afficher les caractères désirés.
5)- Dans la zone correspondante , saisir le mot à afficher sur l’ LCD entre guillemets.
6)- Simuler le fonctionnement.
7)- Ajouter la routine « Curseur » avec les paramètres : 0,0.
8)- Changer le paramètre de la routine « Curseur » avec 1,0 puis 2,0 puis 2,1.
9)- Simuler le fonctionnement à chaque changement de paramètre .
10)- A quoi sert le premier chiffre ?
Positionner le 1er caractère de la chaine dans la colonne x
11)- A quoi sert le deuxième chiffre ?
Positionner la chaine dans la première ou la deuxième ligne
12)- Compiler puis transférer le programme vers le microcontrôleur.
13)- Vérifier le fonctionnement sur une maquette ou sur la valise d’expérimentation

142
Manuel d’activités

2ème partie: BEGIN


On désire concevoir un chronomètre
1)- Créer la routine « Init » pour l’afficheur. LCDdisplay
2)- Créer une case « Calcul » pour mettre T = 0 et définir la Start
variable T en tant qu’octet.
3)- Créer une boucle tant que T < 1000.
T=0
a- Dans cette boucle, afficher T puis une case « Calcul » pour
incrémenter T de 1.
b- Ajouter une pause de 1 seconde. While
4)- Compiler puis transférer le programme vers le T<1000
microcontrôleur et vérifier le fonctionnement.
5)- Observer l’affichage des nombres sur l’LCD et conclure LCDdisplay
PrintNumber(...
Les nombres s’affichent l’un à la suite de l’autre.
..................................................................................................................................
.................................................................................................................................. T=T+1

6)- Ajouter une Routine « Curseur » pour que le nombre se 1s


remette toujours au début.
7)- Changer la pause de 1 seconde en 100 millisecondes.
Le chronomètre fonctionne-t-il correctement ?

Non, les nombres s’affichent l’un sur l’autre..... END

8)- Remplacer la routine « Curseur » par une routine « Efface » pour effacer
l’écran.
a- Simuler le fonctionnement
b- Quelle est la valeur maximale atteinte par le chronomètre ?
La valeur maximale atteinte est 255

9)- Double cliquer sur l’icône calcul. Cliquer sur « variable ». Renommer la variable
T et choisir l’option Entier.
a- Simuler le fonctionnement .
b- Quelle est la valeur finale affichée lorsque le programme atteint sa fin ?
La valeur finale affichée est 999.............................................

10)- Indiquer la nature de la variable T pour pouvoir afficher le nombre 1000 .
Pour pouvoir afficher le nombre 1000, T doit être choisi comme entier ( entre -32768
et 32767) et remplacer la condition ( tant que) du boucle par 1001 .
.........................................................................................................................................................................

143
hapitre A4

Activité N°12: Gestion d’un clavier matriciel

1)- Démarrer Flowcode et créer un nouveau fichier avec le PIC16F877A.


2)- Ajouter le composant Outputs -> LCDDisplay. Éditer les propriétés de
connexion afin qu’elles correspondent à la configuration matérielle telle que toutes
les broches soient connectées au PORTB.
3)- Ajouter le composant Inputs -> KeyPad et éditer ses Propriétés Étendues pour
avoir un clavier matriciel 4x4.
4)- Connecter ce clavier sur le PORTC.
5)- Créer une variable ch[20] de type “chaîne de caractères”.
AUTOMATIQUE

BEGIN

250 ms
VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E

LCDdisplay 1
1
2
3

4
5
6

7
8
9
10
11
12
13
14
Start

13 33
OSC1/CLKIN RB0/INT
14
OSC2/CLKOUT RB1
34 While 1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5
6
RA3/AN3/VREF+ RB6/PGC
39
40
KeyPad(0)
T<1000 2
7
RA4/T0CKI/C1OUT RB7/PGD ch[0]=GetKeypad
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
10
RE1/AN6/WR
RE2/AN7/CS
RC2/CCP1
RC3/SCK/SCL
18 LCDdisplay 3
1
MCLR/Vpp/THV
RC4/SDI/SDA
RC5/SDO
23
24
A 0 1 2 3 Cursor(0,0)
25
RC6/TX/CK
26
RC7/RX/DT
19
B 4 5 6 7 LCDdisplay 4
RD0/PSP0
RD1/PSP1
20 PrintString(ch)
21
RD2/PSP2
RD3/PSP3
RD4/PSP4
22
27
C
8 9 A B
28
RD5/PSP5
29
RD6/PSP6
RD7/PSP7
30
D C D9 E F
PIC16F877A
1

END

6)- Saisir l’algorigramme ci-dessous:


7)- Configurer les différentes routines en utilisant les données du tableau suivant:
Routine Composant Commande Paramètres
1 LCDdisplay(0) Start (Init) -
2 KeyPad(0) GetKeypadAscii ch[0]
3 LCDdisplay(0) Cursor (Curseur) 0,0
4 LCDdisplay(0) PrintString (Ecrit _chaîne) ch
8)- Simuler l’algorigramme obtenu et visualiser le résultat sur l’afficheur .
Conclure :
L’action sur une touche entraine l’affichage du caractère qui lui correspondant sur
l’afficheur LCD
9)- Compiler puis transférer le fichier .hex obtenu vers le microcontrôleur et véri-
144
Manuel d’activités

fier le fonctionnement.
L’algorigramme ci-contre permet d’afficher une chaîne de caractères issue du clavier.

BEGIN

LCDdisplay(0)
Start

## Il utilise toujours la variable nommée [ch] qui reçoit le While 1


caractère saisi.
KeyPad(0)
## Il teste si une touche est enfoncée pour ne pas afficher ch[0]=GetKeypadAscii

le code ASCII 255.


If Yes
## Une nouvelle variable nommée texte, elle, aussi de ch[0]=255
?
type chaîne de caractères, est utilisée pour enchaîner No String Manipulation
les caractères récupérés par la variable chaine[0]. Texte=texte+ch

## Puis, il affiche le résultat sur la première ligne de LCDdisplay(0)


l’LCD. Cursor(0,0)

## Cette temporisation permet de quantifier la durée de LCDdisplay(0)


PrintString(Texte)
répétition de l’appui entre deux touches.
250 ms
10)- Saisir, simuler puis transférer le programme vers le
microcontrôleur et vérifier le fonctionnement.
11)- Réinitialiser le microcontrôleur et appuyer de nou-
veau sur une touche du clavier .

Conclure END
Affichage d’une chaine des caractères suite aux caractères
actionnés ......

12)- Pour éviter ce dysfonctionnement, il faut initialiser la variable texte comme


étant une chaîne de caractères vide : texte=”” . Ajouter l’icône suivante au début
d’organigramme.
BEGIN
String Manipulation

Texte=’’ ‘’

LCDdisplay
Start

While 1

145
hapitre A4

Activité N°13: Timer0 en mode compteur


Une chaine de production de flacons de sirop pharmaceutique est commandée par
une carte électronique à base de microcontrôleur. La gestion de production est assurée
par un module de comptage permettant de comptabiliser la production horaire.
Les flacons amenés sont détectés par un capteur de présence Cp.
Un opérateur peut à tout moment réinitialiser le cycle de comptage par action sur un
bouton poussoir Bp.
Le nombre de flacons comptés est affiché sur un afficheur LCD.
1)- Établir l’algorigramme correspondant à cette opération.
AUTOMATIQUE

2)- Simuler le fonctionnement.


3)- Compiler, transférer et tester l’algorigramme sur la maquette de développe-
ment.

146
Manuel d’activités

Activité N°14: Timer0 en mode temporisateur


Une société de construction routière désire installer un module permettant de
signaler le début d’un chantier sur un tronçon d’autoroute en travaux.
Le cahier des charges stipule les contraintes suivantes:
## Une solution à base de microcontrôleur PIC 16F628A, assurant deux fonctions
(fonction clignotement et fonction signalisation).
## La fonction signalisation assure l’affichage de la chaine de caractères suivante
«Sortie chantier».
## La fonction signalisation quant à elle, assure le clignotement d’un feu rouge
constitué par une rampe de 3 lampes alimentées sous 24V et raccordées à la
même broche RA2. Ce clignotement est à deux vitesses (2Hz et 4Hz) et est assuré
par le Timer0 (TMR0).
## La sélection de la vitesse est définit par l’ouvrier responsable de la sécurité
en fonction de la densité du trafic grâce à un interrupteur S branché à la broche
RA1(S=0 trafic normal, S=1 trafic dense),
## La mise en marche du système est effectuée par un interrupteur Dcy branché
à la broche RA0.
1)- Partant de la formule figurant dans le manuel de cours (donnant Th) et pour
chacune des fréquences de clignotement :
a- Déterminer les paramètres du TIMER0 (pré-diviseur, valeur initiale N et nombre
de débordements) donnant les valeurs les plus proches de celles exigées par le
cahier des charges.
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
.....................................................................................................................................................................
....................................................................................................................................................................

b- En fonction des paramètres calculés précédemment, configurer le registre OP-


TION_Reg pour les deux vitesses (2Hz et 4Hz)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Fréquence
RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
2 Hz
4 Hz
NB : Les bits 6 et 4 peuvent prendre indifféremment 1 ou 0

c- Compléter le tableau d’affectation


LCD
LR1 LR2 LR3 S Dcy RS x x E D4 D5 D6 D7
RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7
NB : La broche RW de LCD doit être reliée à la masse.
147
hapitre A4

2)- Etablir l’algorigramme de ce système en utilisant le logiciel LOGIPIC(pour plus


de lisibilité, exploiter les possibilités des sous-programmes).
AUTOMATIQUE

3)- Simuler le fonctionnement. Transférer le programme vers le microcontrôleur


4)- Vérifier le fonctionnement sur une maquette ou avec la valise d’expérimentation
5)- Pour chacune des deux fréquences, utiliser l’oscilloscope pour mesurer la
période du signal au niveau de la broche RA2.
2 Hz, période du signal = ......................................................................
4 Hz, période du signal =.............................................................
6)- Sachant que le courant et la tension nécessaires à l’alimentation de la rampe
des lampes dépassent de loin les possibilités du microcontrôleur, proposer un cir-
cuit remédiant à cet inconvénient (circuit d’interfaçage). Vérifier le fonctionnement
sur maquette préalablement préparée par l’enseignant.
....................................................................................................................................................................
....................................................................................................................................................................
.....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
148
Manuel d’activités

Activité N°15: Interruption INT/RB0


FEU DE CIRCULATION
Une rue à trafic dense est équipée d’un
feu (Fa) tricolore pour les automobilistes,
d’un feu bicolore (Fp) pour les piétons et
d’un bouton Bp permettant aux piétons de
prendre momentanément la priorité sur les 64 Tu 122

utilisateurs de la dite voie afin de traverser


en toute sécurité.
En fonctionnement normal le feu vert des Bp

automobilistes et le feu rouge des piétons


sont allumés en permanence.

A tout moment un piéton désirant traverser cette voie, actionne le bouton Bp, ce qui
entraîne:
- L’extinction du feu vert destiné aux automobilistes;
- L’allumage du feu jaune invitant les automobilistes à ralentir durant 5 s;
- L’allumage du feu rouge des automobilistes et l’allumage du feu vert
durant 20s autorisant le passage des piétons.
Après écoulement du temps prévu, le trafic reprend son cours normal (feu
vert pour les automobilistes et feu rouge pour les piétons)
E/S système Bp FA vert FA jaune FA rouge FP rouge FP vert
E/S µ contrôleur RB0 RB1 RB2 RB3 RB4 RB5
1)- Compléter l’algorigramme d’interruption gérant ce fonctionnement.

BEGIN
BEGIN
4
-> PORT B
Enable
RB0INT
5s
While 1
40
-> PORT B
18
-> PORT B
20 s

END

END
Programme
Programme d’interruption
principal

2)- Simuler le fonctionnement. Transférer le programme vers le microcontrôleur


3)- Vérifier le fonctionnement sur une maquette ou avec la valise d’expérimentation
149
hapitre A4

activité n°:16 : compteur binaire à base de PIC 16F877A


Une carte électronique à base d’un microcontrôleur PIC 16F877A est utilisée pour
compter les pièces amenées par le convoyeur à bande du système de tri ci-dessous.
Les pièces à compter sont détectées par le capteur capacitif Cp. Ce capteur est relié
à la broche RB0 du microcontrôleur. Le résultat de comptage/décomptage est affiché
en binaire sur 8 LEDs connectées au port C du microcontrôleur.
BEGIN

N=0
AUTOMATIQUE

Enable
RB0INT

While 1

N ->
1)- Établir l’algorigramme ci-contre. PortC

2)- Modifier les propriétés de l’icône Interruption en effectuant


dans l’ordre:
a- Double cliquer sur l’icône Interruption.
END
b- Choisir la source c- Pour créer le programme
l’interruption de l’interruption

d- Nommer le programme
de l’interruption
e- Éditer le programme
de l’interruption

BEGIN

N=N+1

END

150
Manuel d’activités

3)- Simuler le fonctionnement, puis compiler, transférer et tester l’algorigramme sur


la valise d’expérimentation.
NB : Pour tester ce programme correctement, utiliser pour l’entrée RB0, l’un du
boutons poussoirs du clavier de la maquette.
Exemple: L4 du clavier à Vcc du microcontrôleur et H4 du clavier à RB0.
4)- Quel est le modulo de ce compteur.
C’est un compteur modulo 255 BEGIN
5)- On veut transformer ce microcontrô- Input
leur en un compteur/décompteur:
S ->B1
La sélection du mode s’effectuera à l’aide
d’un interrupteur S connecté à RB1 et qui
respectera les conditions suivantes : If Yes
## S=0 fonctionnement en mode compteur ; S=1
## S=1 fonctionnement en mode ?
décompteur.
6)- Compléter l’algorigramme de l’interrup- N= N+1 N=N-1
tion ci-contre.

END
7)- L’algorigramme de la question N°5 est
celui d’un compteur/décompteur modulo 255, compléter l’algorigramme ci-dessous
pour réaliser un compteur/décompteur modulo10.
BEGIN
Input

S ->B1

If Yes
S=1
?

N=N+1 N=N-1

If
N=255 Yes
If Yes ?
N=10
?
N=9
N=0

END

151