PIC 4T LOTFI 2020 2021 .pdf


À propos / Télécharger Aperçu
Nom original: PIC-4T-LOTFI-2020-2021 .pdf

Ce document au format PDF 1.5 a été envoyé sur fichier-pdf.fr le 02/01/2021 à 15:10, depuis l'adresse IP 154.111.x.x. La présente page de téléchargement du fichier a été vue 126 fois.
Taille du document: 750 Ko (12 pages).
Confidentialité: fichier public


Aperçu du document


AUTOMATIQUE

Leçon : A3-2

Objectifs : - Décrire le fonctionnement d’un système par un algorithme.
- Traduire un algorithme en programme écrit en langage évolué.
- Elaborer un programme spécifique à une application à base de PIC.
- Transférer un programme vers un microcontrôleur.

I- Rappels sur les microcontrôleurs:
Un microcontrôleur est un circuit intégré programmable.
Comme un ordinateur, il est composé essentiellement d’un
Microprocesseur, de mémoires et de périphériques.
Il effectue principalement des opérations d’arithmétiques et des opérations logiques.
Donc il fonctionne de façon autonome au sein d’une application.

II- Exemples d’utilisation :
Les systèmes intelligents sont en augmentation dans tous les domaines de la vie quotidienne. Voici des
exemples d'utilisation des microcontrôleurs :
Télécommunications : cartes FAX et MODEM, Minitel, téléphones portables (interfaces homme
machine, gestion d'écrans graphiques)...
Industriels : automates programmables, contrôle de processus divers, supervision...
Commercial : électroménager, domotique...
Médical : Les instruments de mesure (par exemple mesure de la glycémie), les organes artificiels, etc.
Moyens de transport : Autos, avions, vélo électrique, ABS, tableau de bord, etc
Militaire et spatial : sonde, lanceurs de fusées, missile, robots...
Loisirs : Play Station…

III- Principaux fabricants des microcontrôleurs :
Remarque :
 Pour des raisons pédagogiques, ce cours traitera des microcontrôleurs de Microchip.
 Les exemples traités dans ce chapitre utilisent soit : le 16F84, le 16F628 le 16F876, le 16F877
 Les microcontrôleurs de Microchip sont désignés par le synonyme PIC (Programmable intégré circuit)

Intel

N.L

Motorola

Les microcontrôleurs

Atmel

Microchip

STmicroelectronics

Page :

1/12

IV- Identification des microcontrôleurs de Microchip :
 Un PIC est généralement identifié par une référence de la forme suivante :

V- Architecture interne du microcontrôleur PIC 16F84A :
Généralement on trouve à l’intérieur d’un microcontrôleur :
Un microprocesseur (C.P.U.),
De la mémoire de donnée (RAM et EEPROM),
De la mémoire programme (ROM, OTPROM, UVPROM ou EEPROM),
Des interfaces parallèles pour la connexion des entrées / sorties,
Des interfaces séries (synchrone ou asynchrone) pour le dialogue avec d’autres unités,
Des timers pour générer ou mesurer des signaux avec une grande précision temporelle,
Des convertisseurs analogique / numérique pour le traitement de signaux analogiques.

N.L

Les microcontrôleurs

Page :

2/12

VI- Caractéristiques :
Caractéristiques

16F84A

16F628A

16F876A

16F877A

Nombre des broches

18

18

28

40

Entrées/Sorties

13 (2ports)

16 (2ports)

22 (3ports)

33 (5ports)

Mémoire programme (octets)

1028

2048

8192

8192

Fréquence d’horloge (MHz)

20

20

20

20

Sources d’interruptions

4

10

14

15

TMR0 (8 bits)

TMR0 (8 bits)
TMR1(16bits)
TMR2 (8 bits)

TMR0 (8 bits)
TMR1 (16 bits)
TMR2 (8 bits)

TMR0 (8 bits)
TMR1 (16 bits)
TMR2 (8 bits)

Convertisseur
analogique/numérique (ADC)

-

-

1 ADC 10bits
5 canaux

1 ADC 10bits
8 canaux

CCP

-

1

2

2

Comparateur analogique

-

2

2

2

Timer (TMR)/Compteur

VII- Les étapes à suivre pour programmer un microcontrôleur :

VIII- Critères de choix d’un microcontrôleur :
Le choix d’un microcontrôleur se base principalement sur les trois critères suivants:
Caractéristiques techniques :
- Nombre des entrées/sorties, et de timers/ compteurs.
- Périphériques intégrés comme les convertisseurs analogique/numérique et les comparateurs
- Fréquence d’horloge ;
- Mémoire programme (type, taille).
Outils de développement :
- Éditeurs de programmes, la possibilité de simuler le fonctionnement;
- Le programmateur servant à transférer le programme vers le microcontrôleur.
Contraintes économiques :
- Coût du système de développement, prix du microcontrôleur, consommation en énergie.

N.L

Les microcontrôleurs

Page :

3/12

IX- Configuration d’un PORTX :
Le registre TRISX est utilisé pour configurer le PORTX en entrée ou en sortie
Un bit à 0 configure la broche correspondante en sortie (Out).
Un bit à 1 configure la broche correspondante en entrée (In).
EXEMPLE : Gâche jour et nuit
Deux boutons poussoirs (S1) et (S2) placés à la porte d’entrée d’un immeuble commandent une
gâche (G) pendant le jour, une sonnerie (H) pendant la nuit grâce à un commutateur (C).
NB: On pose C = 0 : position jour, C = 1 position nuit
R5

G

270

C1

H

R6
270

U1

15p

X1

16

OSC1/CLKIN
OSC2/CLKOUT

CRYSTAL 15

C2

4

RA0
RA1
RA2
RA3
RA4/T0CKI

MCLR

15p

R8

RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7

4.7k

VCC

17
18
1
2
3

VCC

C

6
7
8
9
10
11
12
13

PIC16F84A

S1

R3

R4

4.7k

4.7k

S2
R4
4.7k

TRISB =………………………………….….

TRISB
PORTB

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

TRISB =………………………………….….
TRISA =……………………………………..

TRISA
PORTA

TRISB =………………………………….….

*

*

*

RA4

RA3

RA2

RA1

RA0

TRISA =………………………………….….
TRISA =……………………………………..

N.L

Les microcontrôleurs

Page :

4/12

X- Applications à base de PIC :
Activité N°1 : Programmation d’un GRAFCET
On se référant aux GRAFCET de point de vue PC et à la table d'affectation Compléter :
Le programme en langage Mikropascal.
Tableau d’affectation
Entrées /Sorties
Broche du
microcontrôleur
Système

GRAFCET PC

m
a
b
d
KM1
AV
AR

RB0
RB1
RB2
RB3
RA1
RA2
RA3

Programme en Mikropascal:
Program ACT1;
Var
m: sbit at RB0_bit;

a: ……………………..…………..; b: ………………………..…………;

…….…: sbit at RB3_bit;

KM1: …………………….. ; ………………………………………... ;

………………………………………..……..
X0, ....................................... : byte ;
Begin
trisa:=........................ ;

trisb:= ................................. ;

…………………………..……………. // état initial des sorties
…………………………..……………. // état initial des étapes
While ………… ………..……….

// boucle infinie

Begin
if (……..……) and (……………) then begin …………………………………….. end;
if (……….….) and (…………….) then begin ………………..…………………………….
if (…………..) and (……………..) then

…………………………………………………….

if ((…………) and (………...…)) ……….. ((……….…….) and (…………..….)) then
…………………………………………………………………………………………………….
If X1=1 then ……………………………………………………………………..……….……..
If X2=1 then ……………………………………………………………………………………..
If X3=1 then ……………………………………………………………………………………..
if t=1 then delay_ms(……..…….);
End;
End.

N.L

Les microcontrôleurs

Page :

5/12

Activité N° 2: Commande d'un afficheur LCD
Sur un afficheur LCD « LM016L » écrire :  4 Sc. TECNIQUE sur la 1ère ligne et la 2ère colonne
 2020- 2021 sur la 2ème ligne et la 5ème colonne

4

RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
RA5/MCLR

RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/T0CKI/CMP2

RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI

RS
RW
E

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

1
2
3

U1
16
15

4
5
6

VSS
VDD
VEE

LM016L

17
18
1
2
3
6
7
8
9
10
11
12
13

PIC16F628A

Compléter puis saisir le programme ci-contre puis simuler et vérifier le fonctionnement :
Program ACT2;
// Connections du module Lcd
Var
LCD_RS : sbit at PORTB.0;
LCD_EN : ………………….;
LCD_D4 : ………………….;
LCD_D5 : ………………….;
LCD_D6 : ………………….;
LCD_D7 : ………………….;
LCD_RS_Direction : sbit at TRISB.0;
LCD_EN_Direction : ………………….;
LCD_D4_Direction : ………………….;
LCD_D5_Direction : ………………….;
LCD_D6_Direction : ………………….;
LCD_D7_Direction : ………………….;
begin
……………………..
// initialisation de LCD
LCD_CMD(_LCD_CURSOR_OFF);
// ……………………………........................
while true do
begin
………………………………..
// 4 Sc. TECNIQUE s'écrit à la 1ère ligne et la 2ère colonne
………………………………..
// 2020-2021 s'écrit à la 2ème ligne et la 5ème colonne
end;
end.

N.L

Les microcontrôleurs

Page :

6/12

Activité N°3 : Compteur / décompteur modulo 10 en boucle.
Compléter le programme suivant permettant d'avoir:
- un compteur modulo 10 si A est actionné (a=1)
- un décompteur modulo 10 si A = 0

U1
16
15
4

U2

RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
RA5/MCLR

RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/T0CKI/CMP2

RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI

17
18
1
2
3
6
7
8
9
10
11
12
13

7
1
2
6
4
5
3

A
B
C
D
BI/RBO
RBI
LT

QA
QB
QC
QD
QE
QF
QG

13
12
11
10
9
15
14

7447

1

A

PIC16F628A

Program ACT3;
Var
i:ibyte;
A:……………………………………..
Begin
trisb:=………..….
trisa:=…………..….
porta:=…….
CMCON:=$07; // PORTA est numérique.
while true do
begin
if A=1 then
begin
for i:=0 ………………………….……….
begin
………………..…; delay_ms (500);
end;
end
else
begin
for i:= ………………………..
……………………………….
………………………………
………………………………
end;
end;
end.

N.L

Les microcontrôleurs

Page :

7/12

Activité N°4 : Compteur modulo10 avec TMR0 en mode compteur.
On désire réaliser un compteur modulo10 en utilisant le timer TMR0.
« Entrée de comptage sur RA4 » avec un coefficient de prédivision =1 (sortie sur le port B)
1) Configurer le registre « OPTION_REG »
RBPU

INTEDG

TOCS

TOSE

PSA

PS2

PS1

PS0

2) Compléter puis saisir le programme ci-contre puis simuler et vérifier le fonctionnement :

0

Program ACT4;

H

begin
TRISB:=$...........
U1

TRISA:=$...........

16
15

OPTION_reg:= %.............................

4

RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT

RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/T0CKI/CMP2

RA5/MCLR

TMR0:=0;

RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI

while (1=1) do
begin
portb:=TMR0;
…………………………………………

17
18
1
2
3
6
7
8
9
10
11
12
13

PIC16F628A

end;
end.
Activité N°5 : Compteur modulo 30 avec TMR0 et avec affichage multiplexé

C7
15p

C8
15p

CRY3

4MHz

R3

9
10
2
3
4
5
6
7
1

RAZ

OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
MCLR/Vpp/THV
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
PIC16F876A

21
22
23
24
25
26
27
28

7
1
2
6
4
5
3

A
B
C
D
BI/RBO
RBI
LT

QA
QB
QC
QD
QE
QF
QG

13
12
11
10
9
15
14

7447
11
12
13
14
15
16
17
18

R1

R2
Q2

Q1

H

0

Le principe est de placer le nombre à afficher sur le décodeur puis commander le transistor
correspondant pour l’afficher.

N.L

Les microcontrôleurs

Page :

8/12

Program ACT5;
Var

i, uni,dix: ………………..;

begin
trisB:=$...........;

trisC:=$.............;

trisA:=$...........;

i:=0;

// Initialisation de variablesi à la valeur 0

TMR0:=0;

// initialisation du timer 0 à la valeur 0

// TMR0 en mode compteur qui s'incrémente toutes les deux impulsions.
OPTION_REG := %……………………………;
while true do
begin
i:=TMR0 ;
uni := …………………………….;

// Identifier le chiffre de l'unité de la variable i

dix := ………………………………;

// Identifier le chiffre de dizaine de la variable i

portC:=0; delay_ms(1);
portb:=uni; portC:=…………..; delay_ms(10);
portC:=0 ; delay_ms(1);
portb:=…………..; portC:=…………; delay_ms(10);
if (tmr0=……….) then Begin tmr0:=……….; i:= ………. ; end;
end ;
end.
Activité N°6 : Conversion Analogique Numérique : CAN ou ADC
EXEMPLE N°1 :

On désire convertir une tension variable en un mot binaire de 10bits variable.

3

?

2

1

0

?

4

?

5

2 2 2 2 2

?

6

?

?

?

ANALOGIQUE

7

?

8

?

9

2 2

?

SORTIE NUMERIQUE

ENTREE

2 2 2

RV1
51%

U1
1k

+88.8
Volts

9
10
2
3
4
5
6
7
1

OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
MCLR/Vpp/THV
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT

21
22
23
24
25
26
27
28
11
12
13
14
15
16
17
18

PIC16F876A

N.L

Les microcontrôleurs

Page :

9/12

Program ACT6EXP1;
Var VN : …………. // VN est sur 16 bits
begin
ADCON1:=% …………………………
// Justification des 10 bits à droite
// et RA0 entrée Analogique (exemple)
TRISA := ……….
TRISB := ……….
TRISC: = ……….
While TRUE do
begin
VN := ADC_Read(0);

// …………………………………………………………………………………..

……………………………….
PORTC := VN shr 8;

// Les 8 bits de plus faibles poids sont aux PORTB

// Afficher les 2 bits de fort poids dans RC0 et RC1

end;
end.
EXEMPLE N°2 : Affichage de température
LCD1
LM032L

C2

C1

U2

1

2
3
4
5
6
7

27.0

VOUT

2

1
3

LM35

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

U1
9
10

OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
MCLR/Vpp/THV
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT

21
22
23
24
25
26
27
28

RV1

50%

4MHz

4
5
6

VSS
VDD
VEE
1
2
3

X1

RS
RW
E

15p

15p

10k

11
12
13
14
15
16
17
18

PIC16F876A

Pour lire et afficher la température on utilise un microcontrôleur PIC16F876A, un afficheur LCD 2*16 et un
capteur de température LM35 qui fournit à sa sortie une tension proportionnelle à température (10mV/°C) :
1- Exprimer T en fonction de Uc :
T ---> Uc

T = f(Uc)

1°C ---> 10mV

T = ………………………

2- Exprimer Uc en fonction de N, en déduire T en fonction de N:
Uc ---> N

Uc = f(N)

5V ---> 1023

Uc =……………………

T = f(N) = …………………….

N.L

Les microcontrôleurs

Page :

10/12

Programmation en langage Mikropascal :
Programme ACT6EXP2 ;

Var
Ncon : ……………..

// déclaration des variables
// 2 octets car le résultat de conversion est sur 10 bits

Ncal : real

// 4 octets pour le calcul

temp : ………………..

// 1 octet car la température est comprise entre 2 et 150

temp_aff: ………………….

//chaine de 3 caractères pour afficher la température

LCD_RS : sbit at portc.0;
LCD_EN : sbit at portc.1;
LCD_D4 : sbit at portc.2;
LCD_D5 : sbit at portc.3;
LCD_D6 : sbit at portc.4;
LCD_D7 : sbit at portc.5;

// Connections de l'LCD

LCD_RS_Direction : sbit at TRISC.0;
LCD_EN_Direction : sbit at TRISC.1;
LCD_D4_Direction : sbit at TRISC.2;
LCD_D5_Direction : sbit at TRISC.3;
LCD_D6_Direction : sbit at TRISC.4;
LCD_D7_Direction : sbit at TRISC.5;
Begin
………………..
lcd_cmd(_LCD_CURSOR_OFF);
lcd_out(1,1,'Temp=');
………………………………..

while true do
begin
…………………………………
…………………………............
………………………………….
…….........................................
lcd_out(1,6,temp_aff);
lcd_chr(1,9,%11011111);
lcd_chr(1,10,'C');
delay_ms(100);
end;
end.

N.L

Les microcontrôleurs

// initialisation de l'LCD
// …………………………………………………………
// préparation de l'affichage, afficher « Temp= »
// initialisation du module CAN

// boucle infinie
// convertir la tension Uc au RA0 en un nombre Ncon
// conversion Ncon en Ncal (réel)
// conversion : Ncal (réel) ---> Temp (Byte)
// conversion : Temp (byte) ---> Temp_aff (caractère)
// affichage de la contenue de Temp_aff
// affichage du symbole degré: ° « voir code ASC II»
// affichage de C pour Celsius
……………………………………………………………………….

Page :

11/12

Activité N°7 : Modulation de largeur d’une impulsion : MLI ou PWM

C2

C1

15p

15p

X1

4MHz

46%

RV1

9
10
2
3
4
5
6
7
1

1k

M1

U1
OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
MCLR/Vpp/THV RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT

D1

21
22
23
24
25
26
27
28
11
12
13
14
15
16
17
18

5V

1N4148

R1

Q1
2N2222

A

2k2

B
C

PIC16F876A

D

Programmation en langage Mikropascal :
Programme
Program ACT7;
var
alpha : byte;
N : word;
begin
…………………….
…………………….
PWM1_start;
while true do
begin
……………………………………
alpha:=N/4;
……………………………………
end;
end.

N.L

Les microcontrôleurs

Commentaires

// déclaration variable rapport cyclique alpha
// nombre numérique (0 à 1023)
// début programme
// initialiser le MLI à une fréquence 250Hz
// configuration du registre ADCON1
// ………………………….

// convertir tension au canal RA0 en nombre N
// alpha =Nx255/1023 = N/4
// Rapport cyclique
// ……………………………………..

Page :

12/12


Aperçu du document PIC-4T-LOTFI-2020-2021 .pdf - page 1/12

 
PIC-4T-LOTFI-2020-2021 .pdf - page 2/12
PIC-4T-LOTFI-2020-2021 .pdf - page 3/12
PIC-4T-LOTFI-2020-2021 .pdf - page 4/12
PIC-4T-LOTFI-2020-2021 .pdf - page 5/12
PIC-4T-LOTFI-2020-2021 .pdf - page 6/12
 




Télécharger le fichier (PDF)




Sur le même sujet..





Ce fichier a été mis en ligne par un utilisateur du site. Identifiant unique du document: 01960025.
⚠️  Signaler un contenu illicite
Pour plus d'informations sur notre politique de lutte contre la diffusion illicite de contenus protégés par droit d'auteur, consultez notre page dédiée.