1. Utilisation et programmation en C
des microcontrôleurs PIC
16F876 – 16F877
Projet tutoré 2ème année GTR, 2004/2005
Tuteur de projet : M. Millet
Xavier Frachebois, Mathieu Coin
Table des matières
Introduction ..............................................................................................................................1
I- Programmation du PIC ....................................................................................................... 1
1- Ecriture du PIC .................................................................................................................1
2- Ecriture des programmes ..................................................................................................1
II- Plaques de l'UTBM .............................................................................................................2
1- Présentation ......................................................................................................................2
2- Détail de la plaque ............................................................................................................2
3- Exemples d'application .................................................................................................... 3
3.1- Envoi d'une chaine de caractères via la liaison série V24 ....................................... 3
3.2- Utilisation du CAN et envoi de la tension via la liaison V24 ................................. 3
3.3- Transmission de la voix PIC à PIC ......................................................................... 4
III- Plaque "COMFILE" ........................................................................................................ 6
1- Détail de la plaque ............................................................................................................6
2- Utilisation du clavier et visualisation via la liaison V24 ................................................. 7
Notes .......................................................................................................................................... 8
Introduction
Le PIC est un microcontrôleur, composant électronique fabriqué par Microchip. Ce composant
possède une multitude de pattes, certaines correspondent à des fonctions
2. particulières comme le port série ou le convertisseur analogique/numérique (CAN). Les autres,
organisées en port, sont utilisable en entrées/sorties TTL, c'est à dire qu'elles délivrent une tension
de 0 ou 5 Volts (Annexe 1) Il possède également une mémoire morte pour stocker les programmes
de type EPROM, EEPROM ou FLASH et vive pour les calculs (RAM). Pour fonctionner, il à
besoin d'une horloge délivrée par un quartz ou un oscillateur. Si on utilise un quartz de 4MHz, on
obtient 1000000 de cycles/seconde. Sachant qu'il exécute pratiquement 1 instruction par cycle,
hormis les sauts, cela donne une puissance de l’ordre de 1 million d’instructions par seconde.
Il y a 3 grandes familles de PIC : La famille Base-Line, qui utilise des mots d’instructions de 12 bits,
la famille Mid-Range, qui utilise des mots de 14 bits (dont font partie les 16F876 et 16F877), et la
famille High-End, qui utilise des mots de 16 bits.
I- Programmation du PIC
1- Ecriture du PIC
Le PIC se programme normalement à l'aide d'un programmateur. Le programme "bootloader"
permet de s'en passer. Cependant, pour l'écrire dans le PIC, vous devez utiliser le programmateur au
moins une fois. Ensuite, vous pourrez programmer le PIC directement depuis la plaque avec le
logiciel "Pic downloader" (Annexe 2a).
2- Ecriture des programmes
Les programmes de microcontroleur s'écrivent d'habitude en assembleur. Cependant ce langage,
même si plus performant, est assez compliqué. Nous les programmerons donc en C. Pour passer du
C en assembleur, nous utiliserons le logiciel CCS (Annexe 2b). Celui-ci, une fois le programme C
compilé, crée un fichier en .HEX. On procède alors au transfert de ce fichier du PC au PIC. Pour
cela, vous devrez appuyer sur le bouton rouge afin de faire un reset du PIC, ce qui va importer le
nouveau programme. Vous procèderez de la même façon pour chaque nouveau programme. Le
transfert du fichier est assuré par la liaison série V24.
Exemple d'un programme en C faisant clignoter la LED connectée à la patte A0.
II-
Plaques
de
l'UTB
M
1-
Présent
ation
Les
deux
plaques
ci-
dessous
sont
identiqu
es dans leurs fonctions. Elles permettent de programmer et d'utiliser le PIC 16F876 pour des
applications simples. Le lien série, V24, permet la programmation et la communication avec un PC
3. ou un périphérique. Le bouton rouge est utilisé pour le reset et le chargement d'un programme.
La plaque de gauche est la première que nous avons utilisée, vous utiliserez celle de droite.
2- Détail de la plaque
3-
Exempl
es
d'applic
ation
3.1-
Envoi
d'une
chaine
de
caractèr
es via la
liaison
série
V24
Ce
program
me
montre
comment utiliser la liaison série V24 pour la transmission d'une chaine de caractères. Pour
visualiser la chaine, on utilise un terminal comme "hyper terminal".
Le "n" dans la fonction printf()
permet le saut de ligne et
le "r" le retour à la ligne.
4. 3.2- Utilisation du CAN et envoi de la tension via la liaison V24 Celui-ci permet d'utiliser le
convertisseur analogique/numérique. Il renvoi la mesure d'une tension comprise entre 0 et 5V via la
liaison V24. On visualise le résultat avec un terminal.
Le coefficient de valeur 205,7 permet de passer d'une valeur variant de 0 à 1023 à une valeur
variant de 0 à 5V. Le temps d'une mesure du CAN est d'environ 46 μs.
5. Pour obtenir le temps d'une mesure du CAN, nous avons relevé à l'oscilloscope le résultat sur la
patte B0 des programmes suivants. Nous en avons déduit ce temps.
Temps d'une mesure : 50 - 4 = 46 μs
3.3- Transmission de la voix PIC à PIC
6. Le dernier montage permet en théorie de transmettre de la voix via la liaison V24 d'un PIC à l'autre.
Cette liaison peut fonctionner avec un débit max. de 19200 b/s. L'acquisition se fait par le CAN du
PIC via un micro et un amplificateur. La restitution se fait par un CNA (Annexe 3), connecté à
l'autre PIC par la liaison série I2C, sur un haut-parleur après amplification. Cependant la chaine de
transmission tel que nous vous la présentons ne fonctionne pas. Le problème vient certainement de
la vitesse de la liaison I2C du PIC qui n'est pas assez rapide.
Transm
ission
de la
voix
PIC à
PIC
Une
solutio
n aurait
été
d'interf
acer un
CNA
parallèl
e ou
d'en fabriquer un avec un réseau R2R sur le port B libre. Par manque de temps nous n'avons pas pu
la tester.
Pour en arriver la, nous avons commencé par quelque chose de plus simple et qui fonctionne. Il
s'agit du montage ci-dessous. Un PIC envoi par la liaison V24 la tension que mesure son CAN (on
l'appelera l'émetteur) à un autre PIC (on l'appelera récepteur). Celui-ci la renvoi à son tour au CNA.
En sortie de ce dernier, on retrouve la valeur d'entrée du CAN.
Transmission d'une tension PIC à PIC
- Programme de l'émetteur :
7. Le CAN est paramétré sur 8 bits car
le CNA utilisé est également sur 8 bits.
-
Prog
ram
me
du
réce
pteu
r :
III-
Plaq
ue
"CO
MFI
LE"
1-
Déta
il de
la
plaq
ue
Cett
e
plaq
ue
poss
8. ède plusieurs modules indépendants :
- Un afficheur LCD sur port série (1)
- Quatres afficheurs numériques à DEL 7 segments (2)
- Un moteur à courant continu avec son contôleur (3)
- La liaison série V24 (4)
- Un oscillateur à quartz de 4 MHz et un quartz de 20 MHz (5)
- Une série de DEL (6), d'interrupteurs (10) et de boutons poussoirs (11)
- Un clavier numérique (matrice 3x4) (7)
- Une plaque d'essai (8)
- Un générateur de tension variable de 0 à 5 Volts (9)
- Un buzzer et un haur-parleur (12)
Câbl
age
de
base
avec
le
PIC
16F8
77
2-
Utili
satio
n du
clavi
er et
visu
alisa
tion
via
la liaison V24
Le clavier est une matrice de boutons poussoirs(voir le schéma ci-contre). Pour déterminer quel
bouton est pressé, il faut les tester par ligne de trois en appliquant une tension nulle sur la ligne à
tester et une tension de 5V sur les autres.
Exemple :
9. Pour tester les boutons 1, 2 et 3 on applique une tension de 0V sur B4 et de 5V sur B5, B6 et B7.
Ainsi, si on lit une tension de 0V sur B0, cela veut dire que le bouton 1 est pressé. Si on a 0V sur B1,
c'est le bouton 2, etc.
Le programme présenté ci-dessous permet d'utiliser ce clavier. Il envoi le caractère de la touche
pressée par la liaison V24. On peut visualiser ce caractère à l'aide d'un terminal.