Vous êtes sur la page 1sur 6

Ministère de l’Enseignement Supérieur ‫وزارة اﻟﺘﻌﻠﻴـﻢ اﻟﻌﺎﻟﻴﻮاﻟﺒﺤﺚ اﻟﻌﻠﻤﻲ‬

et de la Recherche Scientifique

Université de Carthage
‫ﺟﺎﻣﻌـﺔ ﻗﺮﻃﺎج‬

Ecole Nationale d’Ingénieurs de Carthage ‫اﻟﻤﺪرﺳـﺔ اﻟﻮﻃﻨﻴﺔ ﻟﻠﻤﻬﻨﺪﺳﻴﻦ ﺑﻘﺮﻃﺎج‬

Année universitaire 2020-2021


Session de rattrapage
Examen Microcontrôleurs et Microprocesseurs
Enseignants : W.Hakimi Date : 02/07/2021
Filière / Classe : 1 Ingénieurs Mécatronique Durée : 1h30
Barème indicatif : 1-2-1-1,5-2-1,5-3-3-2-3 pts Documents : aut. / non aut.
Nbre. de pages : 2 Enoncé + 4 annexes + 4 feuilles de réponse Calculatrice : aut. / nonaut.
Commande d’un afficheur matriciel
I. Description du système :
On se propose de réaliser un dispositif à base d’un microcontrôleur PIC16F877a cadencé à 4MHz, pour commander
l’affichage de la séquence indiquée dans la figure 1 à l’aide d’un afficheur matriciel 8x8.
Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5
Ligne 6
Ligne 7
Ligne 8

Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5
Ligne 6
Ligne 7
Ligne 8

Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5
Ligne 6
Ligne 7
Ligne 8
DECALE DECALE DECALE
Colonne 5
Colonne 6
Colonne 7
Colonne 8
Colonne 1
Colonne 2
Colonne 3
Colonne 4

Colonne 6
Colonne 7
Colonne 8
Colonne 6
Colonne 7
Colonne 8

Colonne 3
Colonne 4
Colonne 5
Colonne 1
Colonne 2
Colonne 3
Colonne 4
Colonne 5

Colonne 1
Colonne 2

Figure 1 : schéma descriptif du système.

Le circuit de commande de l’afficheur est présenté dans la figure 2 et le circuit détaillé de l’afficheur matriciel 8x8 est
présenté dans la figure 3.
 Le passage d’un état à un autre est assuré par un bouton poussoir lié à l’entrée RB0. La détection d’un front montant
fait passer l’afficheur d’un état à un autre successivement selon la figure 1. On suppose que l’état initial est l’état
où l’afficheur est totalement éteint.
 Les 8 PINs du PORTC sont liés aux 8 commandes des lignes de l’afficheur comme suit :
RC0 lié à la commande de la ligne 1 RC4 lié à la commande de la ligne 5
RC1 lié à la commande de la ligne 2 RC5 lié à la commande de la ligne 6
RC2 lié à la commande de la ligne 3 RC6 lié à la commande de la ligne 7
RC3 lié à la commande de la ligne 4 RC7 lié à la commande de la ligne 8
 Les 8 PINs du PORTD sont liés aux 8 commandes des colonnes de l’afficheur comme suit :
RD0 lié à la commande de la colonne 1 RD4 lié à la commande de la colonne 5
RD1 lié à la commande de la colonne 2 RD5 lié à la commande de la colonne 6
RD2 lié à la commande de la colonne 3 RD6 lié à la commande de la colonne 7
RD3 lié à la commande de la colonne 4 RD7 lié à la commande de la colonne 8
 L’affichage d’une lettre s’effectue colonne par colonne en alternance (une seule colonne est activée à la fois). On
commence par allumer les diodes LEDs de la première colonne, puis les diodes LEDs de la deuxième colonne et
ainsi de suite jusqu’à la huitième colonne. Cette opération est répétée indéfiniment afin de réaliser un affichage
qui apparaîtra simultané à l’œil humain. Si, par exemple, on affecte à la sortie du PORTD la valeur b’00000001’
(activation de la colonne 1) et à la sortie du PORTC la valeur b’11111110’ alors uniquement la diode LED de la
première ligne dans la première colonne est allumée.

1
II. Commande du système :
A l’état initial, il n’y a aucun affichage sur l’afficheur matriciel 8x8. Un premier appui sur le bouton « DECALE »
commande l’affichage de la lettre « A ». Un deuxième appuie sur le même bouton commande l’affichage de la lettre
« B ». Un troisième appui commande le retour à l’état initial « aucune diode LED est allumée » et ainsi de suite.
 Pour réaliser la commande en ASSEMBLEUR, répondre aux questions suivantes :
Q1- Déclarer les variables Choix_Lettre, N_FLAG, w_temp, status_temp
Q2- Écrire la fonction Config_Init_Ports permettant de configurer les broches d'entrée/sorties du PIC16F877 et
d’initialiser l’afficheur à l’état éteint.
Q3- Nous proposons d'utiliser le Timer0 en mode POOLING afin de générer une temporisation de 50 ms.
a. En supposant que ce microcontrôleur est relié à un oscillateur quartz de fréquence 4MHz, et en fixant la
valeur DIV du prédiviseur (Prescaler) à 64, calculer la valeur de la variable N_FLAG (Compteur) qui
représente le nombre de débordement du Timer0, permettant de créer une temporisation de 50 ms.
On donne : TF0 = 256. (DIV.TH) où TF0 est la période qui sépare 2 débordements successifs du Timer0
et TH est la période d'un cycle d'instruction.
b. Écrire la fonction Config_Timer0 qui permet de configurer le Timer0. L'appel de cette fonction se fera
au début du programme principal.
c. Écrire la fonction Tempo_50ms selon l’organigramme 1 de la figure 4.
Q4- Écrire la fonction Config_Interrupts qui permet d’activer que l’interruption primaire « INT » sensible aux
fronts montants détectés sur le pin RB0.
Q5- Ecrire la fonction Affiche_Lettre_A qui permet d’afficher la lettre ‘A’ sur l’afficheur matriciel selon
l’organigramme 2 de la figure 5.
Q6- Ecrire la fonction Affiche_Lettre_B qui permet d’afficher la lettre ‘B’ sur l’afficheur matriciel selon
l’organigramme 3 de la figure 6.
Q7- Ecrire la routine d’interruption Routine_Interruption qui permet de traiter l’interruption « INT » selon le
logigramme 4 de la figure 7
Q8- Donner le code source du programme principal ayant le logigramme 5 de la figure 8.

2
ANNEXES

Figure 2 : Description simplifiée du circuit électronique de commande.

Figure 3 : Schéma équivalent de l’afficheur matriciel 8x8 connecté au PIC 16F877a.

3
4
5
6

Vous aimerez peut-être aussi