Mr Z.
Youssef Série 6- Microcontroleur PIC Bac 2025
Exercice 1 :
Le schéma incomplet ci-dessous représente notre projet qui consiste à utiliser un additionneur
binaire CI74283, un multiplexeur 8 vers 1 CI74151 et un microcontrôleur PIC 16F877 pour réaliser
un additionneur BCD.
La correction de la somme de deux nombres A et B à un digit chacun est effectuée à l’aide du
microcontrôleur PIC 16F877 à chaque front montant sur la broche RB0.
1- On rappel que l’équation de circuit correction est Ec = C4 + S3.(S2+S1). Compléter les de
liaisons nécessaires du circuit U2 de la Figure 1.
2- Compléter la configuration du registre INTCON.
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF INTCON
…. …. …. …. …. …. …. …. (…….)Hex
3- Configurer le registre ADCON1 en choisissant le porta numérique.
ADFM --- --- --- PCFG3 PCFG2 PCFG1 PCFG0 ADCON1
1 0 0 0 ……. ……. ……. ……. (……..)Hex
[1]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
4- Écrire le programme en langage C pour effectuer la correction de la somme de A et B en
BCD. Les broches non utilisées sot considérées comme entrées.
void main( )
{
trisa = 0x………………
trisb=0x………………..
trisd=0x………………..
portd=………………….
adcon1=0x………………
intcon=0x……………….
……………………….. //Interruption sur front montant de RB0.
while(1)
{
while (porta<=…………)
{
portd=……………..
}
}
}
…………………….
{
portd = …………………….
intcon=0x………...
}
Exercice 2:
La tension de sortie Vd de la dynamo tachymétrique du moteur est proportionnelle à la vitesse
de rapport 0,01 V/tr.min-1, cette tension sera divisée par 4 puis elle est appliquée à l’entrée
RA1/AN1 de PIC 16F876A. Ce circuit affiche la valeur de la vitesse sur un afficheur LCD
[2]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
1- Compléter le tableau suivant.
n (tr/min) Vd (V) Vp (V)
2000 …….. ………
…….. 15 ………
…….. …….. 3,62
2- Trouver une relation entre n et N. avec N la valeur de la vitesse convertie par le CAN.
……………………………………………………………………………………………………
…………………………………………………………………………………………………….
3- Quel est le type du signal appliqué sur l’entrée RA1.
……………………………………………………………………………………………………
4- Compléter la configuration du registre ADCON1.
ADFM --- --- --- PCFG3 PCFG2 PCFG1 PCFG0
1 0 0 0 …. …. …. ….
5- Compléter le programme C permettant d’afficher la vitesse du moteur sur un écran LCD.
Programme C Commentaires
……… valeur_conversion ; //Variable de type mot 16bits car la conversion sur 10bits
……… vitesse ; //Type réel afin ne pas avoir un dépassement lors de division
…….. valeur_affichage ……. ; //Chaine de 5 caractères pour afficher la vitesse
Sbit LCD_RS at RC2_bit ; //Connections du module LCD
Sbit LCD_EN …………………
Sbit LCD_D4 …………………
Sbit LCD_D5 …………………
Sbit LCD_D6 …………………
[3]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
Sbit LCD_D7 …………………
Sbit LCD_RS_Direction at TRISC2_bit ; //Direction du module LCD
Sbit LCD_EN_Direction ……………………
Sbit LCD_D4_Direction ……………………
Sbit LCD_D5_Direction ……………………
Sbit LCD_D6_Direction ……………………
Sbit LCD_D7_Direction ……………………
…………………………………………………….. //Initialisation de l’LCD
…………………………………………………….. //Désactivation du curseur de l’LCD
…………………………………………………….. //Afficher VITESSE_MOTEUR sur ligne 1, colonne 1
…………………………………………………….. //Afficher n= sur ligne 2, colonne 1
ADCON1 =........................................................... //Justification à droite et RA1 analogique
……………………………………………………. //Initialiser le module ADC
While (1) {
valeur_conversion =……………………………… //Lecture du convertisseur
vitesse =(valeur_conversion*…….)/ …… ; //Calcul de la vitesse
……………. (…………… , valeur_affichage) ; //Conversion de la vitesse calculée en texte
………….. (2, 4, …………………………….) ; //Affichage de la valeur de la vitesse
…………………………………………………….. //Afficher tr/min sur la ligne 2, colonne 8
…………………………………………………….. //Attente de 0,5s
……………………………………………………..
Exercice 3 :
Systèmes de gestion d’une file d’attente : Les salles d’attente de certaines administrations
publiques, disposent généralement d’un système électronique de gestion de la file d’attente.
ce système est généralement composé d’ :
- Un distributeur de tickets.
- Un afficheur à deux digits.
- Un bouton poussoir INC pour incrémenter le numéro à servir.
- Un avertisseur sonore incorporé dans l’afficheur.
- Un bouton RAZ de remise à zéro.
Schéma de simulation :
Figure 2
[4]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
1- Quel est le type des afficheurs utilisés dans la Figure 2.
……………………………………………………………………………………………………
2- Compléter le tableau ci-dessous en indiquant les états des segments de l’afficheur 7
segments pour afficher les chiffres (0..9).
Chiffre RB7/RC7 g f e d c b a Portb /portc
0 1 = (…..)Hex
1 1 = (…..)Hex
2 1 = (…..)Hex
3 1 = (…..)Hex
4 1 = (…..)Hex
5 1 = (…..)Hex
6 1 = (…..)Hex
7 1 = (…..)Hex
8 1 = (…..)Hex
9 1 = (…..)Hex
3- Compléter la configuration du registre OPTION_REG pour avoir un compteur modulo 100
qui s’incrémente à chaque appui sur le bouton INC. (Voir document constructeur du TMR0).
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
1 1 …. …. …. …. …. ….
4- Ecrire un programme C qui permet de réaliser la gestion d’une file d’attente. Les broches
non connectées sont considérées comme des entrées.
const afficheur[10] = {0xBF,.......................................................................................................}; //codage décimal/7segments.
……………………………… //unite, dizaine de type byte.
#define …………………… //affectation de INC et RAZ.
#define ……………………
void main() {
trisa=0x……… trisb=0x……… trisc=0x……. adcon1=0x…… option_reg=0x…… TMR0=……
sound_init(&porta,0);
while(1)
{
if (…......>………) TMR0=0;
unite = ……………………….
dizaine = ……………………..
portc = ………………………. //affichage de cycle.
portb = ………………………
if (RAZ==1) TMR0=0;
if (INC==1) sound_play(1200,1000); //……………………………………………………………………………..
}
}
[5]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
Exercice 4 :
On propose de commander un moteur triphasé avec un démarrage étoile-triangle à l’aide d’un
PIC 16F877. Le principe de fonctionnement est donné selon le grafcet PC ci-contre avec :
- m : Bouton poussoir de marche.
- A : Bouton poussoir d’arrêt.
- ARU : Bouton d’arrêt d’urgence. 0
- F : Contact auxiliaire du relais thermique. m . ARU . F
- KM1 : Contacteur principal.
KM1 KM2 T
- KM2 : Contacteur pour couplage étoile. 1
- KM3 : Contacteur pour couplage triangle. t / X1 / 15s
KM1 KM3
2
A + ARU + F
Schéma de simulation :
1- Le temporisateur T est réalisé à l’aide du module Timer0 avec une pré-division DIV=256 et
une fréquence Fosc = 4MHz.
a- En se référant au document constructeur du Timer0, compléter la configuration de
registre OPTION_REG.
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
1 1 …. 1 …. …. …. ….
b- Calculer le nombre d’itérations i pour obtenir une temporisation de 15s.
……………………………………………………………………………………………………
……………………………………………………………………………………………………
[6]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
2- Compléter les instructions manquantes du programme ci-dessous. Les broches non
connectées sont considérées comme des sorties.
……………………………… // X0,X1,X2 et T de type bit.
……………………. // i de type octet.
// Connection de LCD
sbit lcd_rs at ………..
sbit lcd_en at rb2_bit;
sbit lcd_d4 at ………..
sbit lcd_d5 at ………..
sbit ……….. at rb5_bit;
sbit ……….. at rb6_bit;
//Configuration de direction deTRISB
sbit lcd_rs_direction at trisb1_bit;
sbit lcd_en_direction at trisb2_bit;
sbit lcd_d4_direction at trisb3_bit;
sbit lcd_d5_direction at trisb4_bit;
sbit lcd_d6_direction at trisb5_bit;
sbit lcd_d7_direction at trisb6_bit;
void main()
{
trisa=0x………..
trisc=0x………..
portc=………..
tmr0=………..
adcon1=0x87; //………..………..………..………..
option_reg=0x………..
………..………..………..……….. //Initialisation des étapes du grafcet.
………..………..……….. //Initialisation du module LCD.
lcd_cmd(_lcd_cursor_off); //………..………..………..………..………..
[7]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
while(1)
{
if ………..………..………..………..………..………..………..
{ X0=0; X1=1;
………..………..………..……….. //Afficher ‘Couplage etoile’ sur la ligne 2, colonne 1.
}
if………..………..………..
{X1=0; X2=1;
…..………..…..………..…..……….. //Afficher ‘Couplage triangle’ sur la colonne 1, ligne 2.
}
if…..………..…..………..…..………..…..………..…..………..
{X2=0; X0=1;}
//Programmation des sorties.
…..………..…..………..…..………..
…..………..…..………..…..………..
…..………..…..………..…..………..
//Programmation du temporisateur T
if (X1==0) T=..…..………..
else
{
if(intcon.T0IF==1) { ..…..……….. ..…..……….. ..…..………..}
if (i==..…..………..) {..…..………....…..………..}
}
..…..……….. ..…..……….. ..…..………..//Ecrire ‘Moteur Triphase’ sur la 1ére Colonne, 1ére ligne
}
}
[8]
Mr Z.Youssef Série 6- Microcontroleur PIC Bac 2025
Exercice 5 : Cocher la bonne réponse. Exercice 6 :
1- On donne la configuration de registre option_reg ci-dessous :
1- Quelle est la valeur de registre option_reg au reset
du microcontrôleur : Option_reg RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
0x00 0xFF 0xF0 Cas1 1 1 1 1 1 0 0 0
2- Quelle est la valeur de registre intcon au reset du Cas2 1 0 1 0 0 1 1 1
Cas2 0 0 0 1 0 1 1 0
microcontrôleur :
En se basant sur le document constructeur, compléter le tableau ci-dessous en cochant la case
0x00 0xFF 0xF0
correspondante.
3- Quelle est la valeur de registre adcon1 au reset du
microcontrôleur : TRM0 en mode Incrémentation à front Pré-diviseur affecté au DIV
0x00 0xFF 0xF0 Compteur Temporisateur Montant Descendant watchdog TMR0 128 256
4- La valeur du registre intcon=0x88 autorise Cas1
l’interruption sur : Cas2
RB0 RB4àRB7 TMR0 Cas3
5- Registre de configuration du convertisseur ADC :
Adcon0 Adcon1 Cmcon 2- Se référer au document constructeur, compléter la configuration de registre adcon1 dans les
6- Registre de configuration des entrées / sorties : cas suivants :
Tris Trisa Portb Cas 1 : justification à droite et choix de PortE analogique.
7- Registre de contrôle et configuration des ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0
interruptions : … … … … … … … …
Adcon1 Trisb Intcon Cas2 : justification à gauche et chois de PortA analogique et PortE numérique.
8- Registre de configuration et de contrôle du module ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0
timer0 : … … … … … … … …
TMR0 RA4/T0CKI Option_reg
Cas3 : justification à droite et choix de PortA et RE0 uniquement des entrées analogiques.
9- Quelle est la broche d’entrée d’horloge externe du
timer0. ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0
RB0 RA4 RB4 … … … … … … … …
10- Quelles sont les sources d’interruption externe :
RB0 RA4 RB6 AN4
RB4 RB5 RB7 T0CKI
[9]