TP SE Licence Sujet OK
TP SE Licence Sujet OK
TP SE Licence Sujet OK
L
des Enseignements Supérieurs
1
Embedded Intelligent Systems
Travaux Pratiques
Programmation C Embarqué
Cas des Microcontrôleurs PIC 8bits
Systèmes embarqués
Prof. : CORCHER Guy Laurent
Ing. Développeur Hardware Electronique
2
Descriptif
Ces séances de travaux pratiques (TP) sont scindés deux (02) TP de douze
(12) exercices chacun. Ce TP est destiné à illustrer les notions qui ont
été présentées durant les séances de cours. Les étudiants sont amenés à
concevoir et à tester un certain nombre des programmes en langage C
embarqué sous le compilateur MikroC, de les implanter et de simuler les
programmes sur la plateforme Proteus(ISIS) et de faire des investigations
pertinentes.
L’objectif général visé est qu’à l’issue de ces travaux pratiques, les
étudiants seront capables de définir l’environnement extérieur d’un
microcontrôleur PIC (électronique d’interfaçage et l’électronique de
commande) depuis un cahier des charges et de pouvoir le programmer en
langage C. Seront traités dans ce TP, des exercices autour du
microcontrôleur PIC16F877A, microcontrôleur étoffé en termes de
fonctionnalité et très répandu. Egalement seront traités, le matériel et
les logiciels nécessaires à leur programmation. Les bases du langage C
adapté aux PICs en utilisant comme compilateur croisé le MikroC et comme
outil de CAO électronique Proteus(ISIS) pour la saisie de schéma et la
simulation.
Contenu
Les exemples traités seront : l’allumage et clignotement des LEDs,
l’utilisation des boutons poussoirs pour commander un équipement, la
capture et la mesure d’une grandeur analogique, la sérialisation d’une
donnée pour un registre à décalage, la communication avec un ordinateur
via le RS232, la manipulation de la mémoire EEPROM pour le stockage
permanent de données, gestion d’un afficheur LCD et des afficheurs 7
segments, gestion d’un clavier, etc… Et la programmation évènementielle.
Logiciels à disposition
- Compilateur croisé MikroC for PIC ;
- CAO électronique Proteus (ISIS) ;
3
Recommandations
Le travail est effectué en binômes. Pour chaque tâche que vous aurez à
réaliser, nous vous invitons à enregistrer votre programme sous un nom
particulier pour garder une sauvegarde du travail. Pour faciliter le
débogage et assurer la maintenance et la portabilité de vos codes, il est
primordial que vous commenciez par rédiger un algorigramme, que vous
commentiez clairement votre programme et que vous pensiez à le rendre le
plus clair possible. Les schémas devront être saisis ou charger sous ISIS.
Une attention particulière doit être apportée à la lisibilité de vos
codes.
4
Brochage
5
Structure interne du PIC16F877A
6
Fichier des registres
7
8
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, read as ‘0’, r = reserved.
Shaded locations are unimplemented, read as ‘0’.
9
SUJETS
10
TP1 (TRAVAUX PRATIQUES)
L’objectif de ce TP est de prendre en main la gestion des ports
d’entrées/sorties numériques à travers le pilotage de périphériques de
sortie simple telle que la diode émettrice de lumière (DEL) ou encore la
prise en compte de périphériques d’entrée tel que le bouton poussoir.
De bien appréhender le style de programmation séquentielle et modulaire
avec la notion de boucle infinie.
De se familiariser aux fonctions prédéfinies notées Delay_us(x) et
Delay_ms(x) qui permettent d’introduire des temporisations respectivement
en microseconde et milliseconde avec x (constante) comme paramètre
d’entrée. La fonction Vdelay_ms(x) permet d’introduire également une
temporisation en milliseconde avec x (variable) comme paramètre d’entrée.
Schéma 0
A) Reproduire ou charger le schéma sous Proteus
(ISIS).
B) Proposer un algorigramme de fonctionnement.
C) En déduire le programme en C sous MikroC puis
simuler
11
Sur le schéma ci-contre, on inverse la polarité
de la LED. Le courant circule de VDD vers RB0.
Cette sortie fonctionne en absorption de
courant. Dans le schéma 0, RB0 fonctionne en
source de courant.
Schéma 0
12
EXERCICE 4: Faire clignoter deux (02) leds par alternance
On ajoute une deuxième led sur le port RB3. Ecrire un programme en C sous
MikroC qui permet de faire clignoter les deux leds par alternance à la
mise sous tension du système. On gardera une temporisation de 300ms.
Schéma 1
Schéma 2
13
EXERCICE 6: Commenter et expliquer un programme
GND = …………………………………………….
14
EXERCICE 7: Commenter et expliquer un programme
GND = …………………………………………….
15
EXERCICE 8: Prise en compte de deux boutons poussoirs et deux leds
On désire commander deux LEDs
respectivement notées D1 et D2 à l’aide
de deux boutons poussoirs BP1 et BP2 via
un microcontrôleur 16F877A comme on peut
le voir sur la figure ci-contre.
CAS 1 : Une brève pression sur le bouton poussoir, fait allumer la
led, une seconde pression l’éteint. C’est la fonction Marche/Arrêt
CAS 2 : Une brève pression sur le bouton poussoir, fait clignoter la
led à une fréquence de 2Hz. Une seconde pression l’éteint.
A) Reproduire ou charger le
schéma sous Proteus
(ISIS).
B) Proposer un algorigramme
de fonctionnement pour
chaque cas.
C) Ecrire le programme en C
sous MikroC puis simuler
Schéma 2
16
EXERCICE 10: Fonction Marche/Arrêt Prise à deux boutons poussoirs
Schéma 5
17
c) Ecrire un chenillard double : un chenillard de haut en bas et
simultanément un autre de bas en haut qui se croisent. Le cycle doit
être permanent. On gardera la même temporisation que précédent.
a) Reproduire ou charger le
schéma sous Proteus (ISIS).
b) Ecrire un programme en C sous
MikroC pour repondre aux
attentes du client
18
EXERCICE 12: Gestion d’un feu tricolore à un carrefour
Schéma 6
A un carrefour, le raccordement des feux est tel que les feux situés sur
une même voie (exemple voie A) sont connectés en parallèle, idem pour la
voie B.
19
Position 1 : Mode Feux tricolores de croissement :Dans ce mode, les
feux doivent s’éteindre et s’allumer selon un cycle réglementaire
pour assurer la gestion du la circulation au niveau du carrefour. Ce
cycle de fonctionnement est décrit ci-dessous.
Position 2 : Mode Feux oranges clignotants: Dans ce mode, seuls les
feux oranges clignotent à une fréquence autour de 1Hz. Ce second mode
est souvent activé tard dans la nuit vu la fluidité du trafic à ces
heures (au-delà de minuit).
Position 3 : Mode Test allumage de tous les feux: Dans ce mode, on
allume tous les feux pour s’assurer du bon état des feux.
20
TP2 (TRAVAUX PRATIQUES)
L’objectif de ce TP est de prendre en main l’interfaçage du
microcontrôleur à des périphériques d’entrée ou de sortie plus complexes
que les simple led ou bouton poussoir. Ce sont les afficheurs 7 segments,
les claviers, les écrans LCD la gestion des ports d’entrées/sorties
numériques à travers le pilotage d’interface de sortie simple (LED) ou la
prise en compte d’interface d’entrée simple (Bouton poussoir). De bien
appréhender le style de programmation séquentielle et modulaire avec la
notion de boucle infinie.
Schéma 8
Schéma 88
22
EXERCICE 4: Sérialisation des données en C
La sérialisation des données est une méthode de transfert des données bit
après bit sur une broche de sortie du microcontrôleur durant un temps.
Pour transmettre des données en série, deux signaux sont nécessaires :
Schéma 9
23
EXERCICE 5: Ecriture d’une donnée permanente en EEPROM et lecture
Schéma 12
25
EXERCICE 8: Mesure et affichage d’une grandeur analogique variable.
On désire mesurer et afficher une grandeur analogique. Le signal
analogique est récupéré sur le curseur d’un potentiomètre. Cette valeur
pouvant évoluer de 0 à 5V. Le compilateur).
MikroC offre une bibliothèque de fonctions pour la prise en charge de
données analogiques. (Consulter l’aide sur MikroC
Schéma 13
26
EXERCICE 9: Etablir une communication avec l’ordinateur via le RS232
Tout autre caractère reste sans effet. MikroC offre une bibliothèque de
fonctions prédéfinies pour gérer la communication série sous RS232. Il est
important de prendre connaissance de cette biblio afin de voir comment
recevoir ou envoyer
Schéma 14
27
EXERCICE 10: Générer un signal PWM ou MLI
(Modulation en largeur d’impulsion)
Schéma 15
28
EXERCICE 11: Générer un signal PWM ou MLI
(Modulation en largeur d’impulsion)
Schéma 16
29