Vous êtes sur la page 1sur 8

Exercice 1 

: soit à convertir une tension variable entre 0 et 5v branchée sur RA1/AN1. L’affichage de la
tension en mV est réalisé par un afficheur LCD comme le montre la figureci-contre.

1- Comment doit –on configurer l’entrée RA0/AN0 ? numérique ou analogique :


………………………………..…………
2- Configurer le registre TRISA «  tout le port est utilisé en entrée »

3- Le convertisseur C.A.N fournit un nombre binaire de 10 bits N= B9 B8 B7 B6 B5 B4 B3 B2 B1 B0


2 registres 2X 8bits) sont nécessaires pour stocker le résultat de la conversion. Ces sont les
registres :
 ADRESH
 ADRESL
a- Identifier la valeur des 2 registres ADRESH et ADRESL
- Dans le cas ou la justification est à droite

- Dans le cas ou la justification est à gauche

b- Calculer la valeur de N si la tension U=2 V

4- Identifier la valeur du registre ADCON1( voir du document page 2)

Microcontrô leur ***série2 Page 1


5- Compléter le programme langage mikro pascal pro

Program voltmetre ; Begin


Var TRISA :=$……………
N ,tension :……………….// 2 octets ADCON1 :=%..............................................
Calcul :……………..// réel LCD_INIT() ;//………………………………….
Valeur_affichage :string[4] ; LCD_CMD(_LCD_cursor_off) ;
//………………………………………. //………………………………………………….
Lcd_RS:sbit at portc.0 ; ………………………………………………..
lcd_EN :sbit at ……………………………. // afficher « V= » à la 1ere ligne et 3 colonne
lcd_D4 :sbit at ……………………………… While true do begin
lcd_D5:sbit at …………..……………… N :=adc_read(…….) ;//…………………….

lcd_D6: sbit at …………… ……… Calcul :=N*(5000/1023) ;


Tension :=word(calcul) ;//…………………………….
lcd_D7: sbit at ………………………
Wordtostr(tension,valeur_affichage) ;
Lcd_RS_Direction: sbit at trisc.0;
…………………………………………………… ;
lcd_EN_Direction: sbit at ……………..;
// afficher à la ligne1 et 3 colonne la valeur de tension
lcd_D4_Direction:sbit at …………. ….;
……………………………………………………….. ;
lcd_D5_Direction:sbit at ………………;
// afficher à la 1ere ligne et 9 colonne « mV »
lcd_D6_Direction:sbit at ……… ………;
Delay_ms(………………) ;// pause d’une seconde
lcd_D7_Direction:sbit at ……… …………;
End ;End .
//………………………………………………..…

Document constructeur PIC 16F876A


Tensions de
ADCON1 PORTA
références
PCFG3

PCFG2

PCFG1

PCFG0

VREF+

VREF-
ADFM

AN4/

AN3/

AN2/

AN1/

AN0/
RA5

RA3

RA2

RA1

RA0
-

1 - - - 0 0 0 0 A A A A A VDD VSS

1 - - - 0 1 0 0 D A D A A VDD VSS

1 - - - 0 1 1 X D D D D D VDD VSS

1 - - - 0 1 1 0 D D D D A VDD VSS

A : analogique D : numérique VDD = VCC = 5 V VSS = GND = 0 V

Microcontrô leur ***série2 Page 2


Exercice 2 : Contrôle de la température de l’eau 
Pour assurer un lavage de bonne qualité, la température de l’eau devrait être maintenue constante
toute autour d’une valeur "Tc" fixée par l’opérateur

RV1 : potentiomètre
permettant de fixer la
valeur de la
température de
consigne.

Aff =0: autorise


l’affichage de la valeur
de la température de
l’eau.

Aff =1 : autorise


l’affichage de la valeur
de la température de
consigne.

D1 : signale que la
valeur affichée est
celle de la température
de consigne.

Commande_RCH
D2 : signale que la
valeur affichée est
celle de la température
de l’eau.

La solution envisage l’utilisation d’un microcontrôleur du type PIC16F876A comme le précise le


schéma structurel ci-dessous.
a- Compléter les instructions  et  du programme sachant que les broches non connectées
sont considérées comme des entrées.
b- Les résultats de la conversion analogique/numérique (N) du convertisseur du microcontrôleur
16F876A sont obtenus sur 10 bits, c'est-à-dire N varie entre 0 et 1023 pour une tension de
consigne variable de 0 à 5V. La tension (Uc) image de la consigne est appliquée sur l’entrée
RA1 et celle de la température de l’eau (Ue) est appliquée sur l’entrée RA0. Compléter alors
les instructions  et  du programme.
c- La température de la consigne est réglable entre 20 et 80°C. Pour N=0 on a Tc= 20°C et
pour N=1023 on aura Tc= 80°C. La relation entre Tc et N s’écrit sous la forme TC = a.N +b.
Déterminer les valeurs de a et b et compléter l’instruction  du programme.
................................................................................................................................................

................................................................................................................................................

................................................................................................................................................

Microcontrô leur ***série2 Page 3


d- La résistance chauffante est mise sous tension pour Te < Tc - 5 et mise hors tension pour

Te >Tc + 5. Compléter les instructions  et  du programme.

program C_temp;  Tc:= …………………………………………….………;


var
Tcu:=(Tc ……… 10); // extraire les unités
Aff:.........................................; // Commutateur Tcd:=(Tc ……… 10); // extraire les dizaines
LED1:..................................................... // Affichage

LED2:.................................................... if Aff=1 then


Commande_RCH: ......................................... begin
Uc , Ue : ....................;//réel portb:= Tcd + Tcu*16;
Tc,Tcd,Tcu,Te,Teu,Ted : ........... ;//octet LED1:=.....;
begin LED2:=.....;
ADCON1:=$.............; end
// Configuration du registre else
trisa:=$..........; begin
 trisb:=$.............; portb:= Ted + Teu*16;
 trisc:=$............;
LED1:=………;
while true do
LED2:=……….;
begin
end;
// Consigne température
// Commande de la résistance chauffante
 Uc := …………………………………….;
 if …………......…then Commande_RCH:=1;
// Température de l'eau
 if …………......…then Commande_RCH:=0;
 Ue := adc_read(……….);
end;
Te := (Ue * 99)/1023 ;
end.
Teu:=(Te …..…. 10); // extraire les unités

Ted:=(Te …….. 10); // extraire les dizaines

Microcontrô leur ***série2 Page 4


Exercice 3 : Système de Comptage de véhicules entrant dans un parking.
Ce système permet de compter le nombre de véhicules entrant dans un parking. Le système est
constitué d’un tuyau sensible à la pression, relié à une carte à base de microcontrôleur
PIC 16F876AA et un afficheur 7 segments 3 digits permet d'afficher le nombre de véhicule entrant, le
tout contenu dans un boîtier résistant aux intempéries en plastique transparent. Pour l’utiliser, il faut
déployer le tuyau à travers la route puis, laisser les véhicules rouler dessus. Chaque jeu de deux
essieux (c'est-à-dire toutes les deux impulsions) est enregistré comme un véhicule.

2-Schéma de câblage du compteur : Le comptage de véhicule entrant dans le parking est réalisé par
un compteur à base de TMR0.Ce parking peut supporté uniquement 150 véhicule.

On donne le schéma de câblage pour réaliser ce compteur :

Microcontrô leur ***série2 Page 5


Fiche Technique du TMR0:

Le TMR0 est un compteur programmable à 8 bits (de 0 à 255).

La configuration du TMR0 est assurée par le registre OPTION « OPTION_REG »

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


RBPU INTEDG TOCS TOSE PSA PS2 PS1 PSO

A partir du schéma de câblage du compteur :

1- Pourquoi on a choisi RA4 comme entrée d’horloge


..............................................................................................................................................

2- Quelle est la fonction assurée par le circuit 7447 : …………………………….............................


3- Déterminer les valeurs des registres suivants:
TRISB 0 0 0 0 …. …. …. …. = (……..)H

TrisA.4:= .... TrisC.0:= .... TrisC.1:= .... TrisC.2:= ....


Option_reg:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


1 1 ...... 1 ......... ....... ......... .........

4- Déduire le type des afficheurs utilisés :


...........................................................................................................................................................

5- Donner la valeur des bits du port C lors de la commande des afficheurs:

Commande de l'afficheur 1: PortC.0=....... PortC.1=....... PortC.2=.......

Commande de l'afficheur 2: PortC.0=....... PortC.1=....... PortC.2=.......

Commande de l'afficheur 3: PortC.0=....... PortC.1=....... PortC.2=.......

Eteindre les afficheurs : PortC.0=....... PortC.1=....... PortC.2=......

6- Pour afficher les unités, les dizaines et les centaines, établir les instructions nécessaires :

Unite:= TMR0...................................... // Identifier le chiffre de l'unité

Dizaine:= ........................................... // ..............................................

Centaine:= ........................................ // ..............................................

7- Compléter le programme en Mikropascal d'un compteur modulo 150 à base de TMR0:

Microcontrô leur ***série2 Page 6


program controle_parking;

var i, Unite, dizaine, centaine : .....................;

Begin

TrisB:=$...... ; TrisC.0:=….; TrisC.1:=….; TrisC.2:=….; TrisA.4:=….; TMR0:=.... ;

option_reg:= $........... ;

while true do

begin

Unite := TMR0 ..............10; // Identifier le chiffre de l'unité

dizaine :=......... ......................... 10;  // ………………………………………

centaine := ........................................... // ........................................................

for i := 0 to 50 do

begin

portc.0:=1; portc.1:=1; portc.2:=1; // ………………………………………..


delay_ms(1);
portb:=unite;
portc.0:=....; portc.1:=....; portc.2:=....; //Commande l'afficheur 1
delay_ms(4);
portc.0:=1; portc.1:=1; portc.2:=1; ;
delay_ms(1);
.............................................
............................................. // Commande l'afficheur 2
............................................
portc.0:=....; portc.1:=....; portc.2:=....;
delay_ms(1);
...............................................
.............................................. // .................................................
..............................................
end;
IF TMR0 = ............. Then TMR0 := ...................... ; // Remise à Zero de TMR0
end;end.

Microcontrô leur ***série2 Page 7


Exercice 4 : Etude du circuit de contrôle et d’affichage de la température :Un microcontrôleur du
type PIC16F876A, deux afficheurs 7 segments et un capteur de température LM35 sont destinés à
afficher la température de l’eau dans la baignoire. +5V
+5V A
B
C
9 21
OSC1/CLKIN RB0/INT D
10 OSC2/CLKOUT 22
RB1
37 RB2 23
24
BI/RBO
RB3/PGM RBI
2 25
VOUT
3 RA0/AN0 RB4
RB5 26
LT 7447
RA1/AN1
LM35 4
RA2/AN2/VREF-/CVREF RB6/PGC
27
5 RA3/AN3/VREF+ RB7/PGD
28 +5V
6
RA4/T0CKI/C1OUT
7 RA5/AN4/SS/C2OUT
11
RC0/T1OSO/T1CKI BI/RBO
RC1/T1OSI/CCP2 12
13 RBI
RC2/CCP1
14 LT
RC3/SCK/SCL
R RC4/SDI/SDA
RC5/SDO
15
16
A
B
MCLR/Vpp/THV 17
RC6/TX/CK C
18
RC7/RX/DT D 7447
Init
PIC 16F876A

Le capteur LM35 fournit à sa sortie une tension proportionnelle à la température. Le convertisseur


CAN du microcontrôleur reçoit la tension délivrée par ce capteur et la convertit en un nombre « N » sur
10 bits (de 0 à 1023). Sachant à 1°C le capteur donne une tension U= 10mv.
1- Quelle est la nature du signal appliqué à l’entrée RA0/AN0? Cocher la bonne réponse.
¨Signal numérique ¨Signal analogique
2- Le PIC16F876A ; Combien possède des broches en entrée analogique :…………..
3- Exprimer la température T en fonction de N
………………………………………………………………………………………………………………………………………………………………….
……………………………………………………………………………………………………………………………………………………………
4- Compléter les instructions et les commentaires du programme en mikroPascal Pro correspondant à la
détection et à l’affichage de la température de l’eau dans la baignoire.
………………………………………………………….. ; while true do begin // ………………………………..

// Entête du programme affichage_température Tension := adc_read(…….); // Lecture du CAN

var Tension : …………; // écrit sur 10 Bits Temperature:= (Tension*……….)/………… ;

temperature : …………..;// réel // Calcul

temp_con , temp_aff : …………….; // octet Temp_con := byte(temperature);

…………………………….//Début programme // Transformation en octet : partie entière.

adcon1 := ……………… ; Temp_aff:=Dec2Bcd(temp_con);

//RA0/AN0 uniquement en tant qu'entrée analogique. // Conversion du décimal en BCD.

adc_init(); // ……………………………………………. ………………………………………;/ afficher température

trisc := ……………………; end;// Fin boucle

…………………………..// Fin programme

Microcontrô leur ***série2 Page 8

Vous aimerez peut-être aussi