Vous êtes sur la page 1sur 16

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

Chapitre 2 :
prsentation du microcontrleur
le pic 16F877

Ce chapitre est consacr la prsentation du microcontrleur tout en illustrant ces


diffrentes caractristiques afin de mieux lexploiter.
On aura dfinir lunit de contrle et tout ce qui lenglobe de part et dautre de sa
structure. La partie la plus importante serai celle qui traite les diffrents ports dentre/sortie.
Ainsi que le convertisseur qui jouera le rle dinterface entre lunit de contrle et le capteur de
niveau.

1. Les microcontrleurs :
Gnralits :
Un microcontrleur se prsente comme tant une unit de traitement de linformation de
type microprocesseur contenant tous les composants dun systme informatique, savoir
microprocesseur, des mmoires et des priphriques (ports, timers, convertisseurs). Chaque
fabricant a sa ou ses familles de microcontrleurs.
Une famille se caractrise par un noyau commun (le microprocesseur, le jeu
dinstruction). Ainsi les fabricants peuvent prsenter un grand nombre de pins qui sadaptent
plus au moins certaines tches. Mais un programmeur connaissant une famille na pas besoin
dapprendre utiliser chaque membre, il lui faut connatre juste ces diffrences par rapport au
pre de la famille. Ces diffrences sont souvent, la taille des mmoires, la prsence ou labsence
des priphriques et leurs nombres.[3 ]

Les avantages du microcontrleur :


Lutilisation des microcontrleurs pour les circuits programmables plusieurs points forts
et bien rels. Il suffit pour sen persuader, dexaminer la spectaculaire volution de loffre des
fabricants de circuits intgrs en ce domaine depuis quelques annes.[3]

Tout dabord, un microcontrleur intgre dans un seul et mme botier ce qui, avant
ncessitait une dizaine dlments spars. Il rsulte donc une diminution vidente de
lencombrement de matriel et de circuit imprim.

Cette intgration a aussi comme consquence immdiate de simplifier le trac du circuit


imprim puisquil nest plus ncessaire de vhiculer des bus dadresses et de donne dun
composant un autre.

Le microcontrleur contribue rduire les cots plusieurs niveaux :


- Moins cher que les autres composants quil remplace.
- Diminuer les cots de main duvre.

Ralisation des applications non ralisables avec dautres composants.

Contenu dun microcontrleur :


Un circuit microcontrleur doit contenir dans un seul botier tous Les lments de bases,
nous y retrouvons bien videmment lunit centrale qui est plus simplifie par rapport celle du
microprocesseur. En contre partie, des instructions de manipulation de bits, trs utiles pour faire
des entres/sorties lui ont t ajoutes. Dans certains circuits, cette unit centrale se voit dote
dun trs grand nombre de registres internes qui servent alors de mmoire vive. (Figure 2.1)

Figure 2.1 : Structure interne dun microcontrleur


Nous pouvons ensuite voir la mmoire morte mais ce nest pas une obligation. En effet
dans un certain nombre de botiers et jusqu ces dernires annes, cette mmoire ne pouvait
qutre programme par masque la fabrication du circuit. Cela imposait donc lutilisation
potentielle du microcontrleur pour commander un nombre de pices identiques important. [4]
Un certain nombre de microcontrleurs taient, et sont toujours dailleurs disponibles
sans ROM. Puis, les technologies dintgration progressent, les fabricants ont appris placer sur
la puce de la mmoire programmable lectriquement et effaable aux ultraviolets (UVPROM)
qui cotent relativement cher, non cause de la mmoire elle-mme dont la technologie est

maintenant facile produire, mais plutt cause de la fentre en quartz ncessaire son
effacement, on a vu galement apparatre des microcontrleurs dits OTPROM. [4]
Dans ces circuits ou OTPROM (ONE TIME PROM), cest dire programmable une fois,
la mmoire UVPROM existe toujours dans ce programme donc comme nimporte quel circuit de
ce type, mais, fait de labsence de toute fentre, cette mmoire nest ensuite plus effaable. Cest
une solution intressante pour les productions en petite srie, ne justifiant pas une programmation
par masque. En effet, du fait de labsence de fentre, ces versions OTPROM sont disponibles en
botier plastique trs peu coteux. [4]

2. Gnralit sur PIC :


Un PIC nest rien dautre quun microcontrleur, cest dire une unit de traitement de
linformation De type microprocesseur la quelle on a ajout des priphriques internes
permettant de raliser des montages sans ncessiter lajout de composants externes.
Les Pics (Programmable Interface Controller) sont des composants dits RISC (Reduce
Instructions Set Computer), ou encore composant jeu dinstruction rduit, sachant que plus on
rduit le nombre dinstruction plus facile et plus Rapide en est le dcodage, et vite le composant
fonctionne. [3]
Dans le march, il existe deux familles opposes, les RISC et les CISC (Complexe
Instruction SET Computer) chez les CISC, on diminue la vitesse de traitement mais les
instructions sont plus complexes, plus puissantes, et donc plus nombreuses. Il sagit donc dun
choix de stratgie.[4]
Tous les pics Mid Range ont un jeu de 35 instructions, ils stockent chaque Instruction
dans un seul mot de programme, et excutent chaque instruction (Sauf les sauts) en un cycle. On
atteint donc des trs grandes Vitesses. Lexcution en un seul cycle est typique des composants
RISC.
Lhorloge fournie au pic est pr-divise par quatre au niveau de celle-ci. Cest Cette base
de temps qui donne le temps dun cycle.
Si on utilise par exemple un quartz de 4 MHZ, on obtient donc100000 cycles / Secondes,
comme Le pic excute pratiquement linstruction par cycle hormis Les sauts, cela nous donne
une puissance de lordre de 1 MIPS (1 Millions dinstruction par secondes).

Les pics peuvent monter 20 MHZ.

2.1

Les diffrentes familles des Pics :


La famille des pics est divise lheure actuelle en trois grandes familles :

La famille Base - Line, qui utilise des mots dinstructions de 12 bits.


La famille Mide Range, qui utilise des mots de 14 bits (et dont font partie Les
16F84 et 16F876).
La famille High End, qui utilise des mots de 16 bits.

2.2

Identification dun Pic :


Pour identifier un pic, on utilise simplement son numro.
Les deux premiers chiffres indiquent la catgorie du pic, 16 indique un pic Mid Range,

vient ensuite une lettre L : celle ci indique que le pic peut


Fonctionner avec une plage de tension beaucoup plus tolrante, ensuite on trouve.
C indique que la mmoire programme est une EEPROM.
CR pour indiquer une mmoire de type ROM.
F pour indiquer une mmoire de type FLASH.
Notons ce niveau que seule une mmoire FLASH ou EEPROM est Susceptible dtre efface,
donc nesprons pas reprogrammer les pics de type CR.
Un composant quon ne peut reprogrammer est appel O. T. P (One Time
Programming) : composant programmation unique.
Puis viennent les derniers chiffres identifient prcisment le pic.
Finalement on voit sur les botiers le suffixe XX dans lequel XX reprsente la
frquence dhorloge maximale que le pic peut recevoir. par Exemple -04- pour un 4MHZ.
Une dernire indication quon trouve est le type de botier.
Nous utilisons pour nos expriences le botier PDIP, qui est un botier Dil40 broches avec
un cartement entre les ranges de 0.3. La version 4MHZ sera simplement suffisante.
Notons que les pics sont des composants STATIQUES, C'est--dire la frquence
dhorloge peut tre abaisse jusqu larrt complet Sans perte des donnes et sans
dysfonctionnement, ceci par opposition aux Composants DYNAMIQUES (comme les

microprocesseurs de lordinateur)

Donc la frquence dhorloge doit rester dans des limites

prcises.

2.3

Identification du pic 16F877 :

2.3.1 Le choix du microcontrleur :Pourquoi le PIC16F877 ?


Le choix dun microcontrleur est primordial car cest de que dpendent en grande
partie des performances, la taille, la facilit dutilisation et le prix du montage.
Le PIC 16F877 possde en plus des instructions trs puissantes donc un programme
dvelopper rduit, surtout lorsquon utilise le logiciel de programmation micropascal qui
possde un nombre important de procdures et fonctions prdfinit et ddi au PIC 16F877.
En fait la cause principale du choix de ce type de microcontrleur est quil dispose de
loption du convertisseur A/D pour satisfaire cot acquisition, aussi la possibilit de
ladaptation au protocole I2C et la liaison RS232 mais aussi le nombre

de

ports

dentres /sorties nous convient.

2.3.2 Le microcontrleur PIC 16F877 :


Nous allons maintenant sintresser la structure interne du PIC 16F877, avec lequel
nous avons travaill.
Le 16F877 est un microcontrleur de MICROCHIP,[3] fait partie intgrante de la
famille des Mid Range (16) dont la mmoire programme est de type flash (F).
Caractristiques gnrales :
-PIC 16F877
-Flash 8k octets
-RAM 368 octets
-EEPROM 256 octets
-I/O 33
-A/D 5
- port parallle OUI
- port srie USART/MSSP

Figure 2.2 : Brochage du microcontrleur PIC16F877


On constate que sur le schma concernant le 16F877, on a 2 connexions VSS qui sont
relies la masse. En fait, en interne, ces pins sont interconnects. La prsence de ces 2 pins
sexplique pour une raison de dissipation thermique. Les courants vhiculs dans le PIC sont loin
dtre ngligeables du fait des nombreuses entres/sorties disponibles.
Le constructeur a donc dcid de rpartir les courants en plaant 2 pins pour
lalimentation VSS, bien videment, pour les mmes raisons (dissipation thermique), ces pins
sont situs de part et dautre du PIC, et en positions relativement centrales.

2.3.3 Organisation de la mmoire du 16F877 :


La mmoire du 16F877 est divise en 3 parties :

La mmoire programme :
La mmoire programme est constitue de 8k mots de 14 bits. Cest dans cette zone que

nous allons crire notre programme. Le PIC excute une une les instructions loges dans la
mmoire de programme.

La mmoire EEPROM :

20

La mmoire EEPROM (Electrical Ecrasable Programmable Read Only Memory), est


constitue de 256 octets que nous pouvons lire et crire depuis notre programme. Ces octets sont
conservs aprs une coupure de courant et sont trs utiles pour conserver des paramtres semipermanents.

La mmoire RAM et organisation :


La mmoire RAM est celle que nous allons sans cesse utiliser. Toutes les donnes qui y

sont stockes sont perdues lors dune coupure de courant.


La mmoire RAM disponible du 16F877 est de 368 octets. Elle est rpartie de la manire
suivante :
1) 80 octets en banque 0, adresses 0*20 0*6F
2) 80 octets en banque 1, adresses 0*A0 0*EF
3) 96 octets en banque 2, adresses 0*110 0*16F
4) 96 octets en banque 3, adresses 0*190 0*1EF
16 octets commun aux 4 banques, soit 0*70 0*7F = 0*F0 0*FF.

2.4

Les particularits des ports :


Le pic 16F877 dispose de 5 ports entre/sortis et voici par la suite la particularits de
chaque port :
Le port A :
Le 16F877 dispose de 5 canaux dentres analogique. Nous pouvons donc
chantillonner successivement jusque 5 signaux diffrent avec ce composant. Les

pins

utiliss sont les pins AN0 AN4 (qui sont en fait les dnominations analogique des pins RA0
RA3 + RA5).
On peut noter galement que les pins Anx sont des pins dentes. Il nest donc pas
question desprer leur faire sortir une tension analogique. Ceci ncessairement un
convertisseur numrique/analogique dont nest pas pourvu notre PIC.
Le port B :
Hors de sa fonction principale autant que ports dentres/sorties, on note la pin RB0
qui en configuration dentre est de type trigger de Schmitt quand elle est utilise en
mode interruption INT ; la lecture simple de RB0 se fait dune faon tout fait classique,
en entre de type TTL. Encore il y a (RB3-RB6-RB7) qui peuvent servir dans la
programmation en cas dabsence de programmateur commercial.
Le port C :

Cest un port tout ce quil a de plus classique,or quil a deux pins quon utilisera plus
tard dans la communication srie avec le PC travers( TX et RX ) (pin25et pin 26) .
Le port D :
Ce port fonctionne de faon identique aux autres, dans son mode de fonctionnement
gnral. Le registre TRISD comportera donc les 8bits de direction, pendant que le registre
port D correspond aux pins I/O concerns. Do les 8 pins I/O, en mode entre, sont du type
<trigger de Schmitt>.
Le port E :
Ce port nest prsent que sur les PIC 16F877. Il ne comporte que 3 pins RE0 RE2,
mais, contrairement aux ports, les bits non concerns de TRISE sont, cette fois, implants
pour dautres fonctions. Les pins REX peuvent galement tre utiliss comme pins dentres
analogiques. Dou le registre ADCON1 qui dtermine si ce port est utilises comme port I/O
ou comme port analogique.

2.5

Le convertisseur :
Le CAN est un priphrique intgr destin mesurer une tension et la convertir en
nombre binaire qui pourra tre utilis par un programme.
Notre 16F877 travaille avec un convertisseur analogique/numrique qui permet un
chantillonnage sur 10 bits. Le signal numrique peut donc prendre 1024 valeurs possibles.
On sait que pour pouvoir numriser une grandeur, nous devons connatre la valeur minimale
quelle peut prendre, ainsi que sa valeur maximale, Les pics considrent par dfaut que la
valeur minimale correspond leur Vss dalimentation, tandis que la valeur maximale
correspond la tension positive dalimentation Vdd. le principe de la conversion suit la
squence est la suivante :
- Le pic connecte la pin sur laquelle se trouve la tension mesurer un condensateur
interne, qui va se charger via une rsistance interne jusque la tension applique.
-

Le pin est dconnect du condensateur, et ce dernier est connect sur le


convertisseur analogique/numrique interne.

Le pic procde la conversion.

Le temps ncessaire la conversion est gal au temps ncessaire la conversion dun bit
multipli par le nombre de bits dsirs pour le rsultat. Concernant notre pic, il faut savoir quil
ncessite, pour la conversion dun bit, un temps nomm Tad.

Ce temps est driv par division dhorloge principale. Le diviseur peut prendre une valeur
de 2, 8 ou 32. Le temps de conversion Tad ne peut dtendre, pour des raisons lectroniques, en
dessous de 1.6 us pour les versions classiques de 16F87x, et en dessous de 6 us pour les versions
LC. [5]
Donc en fonction des frquences utilises pour le quartz du pic, on choisit le diviseur le
plus appropri.
Voici un tableau qui reprend les valeurs de diviseur utiliser pour quelques frquences
courantes du quartz et pour les PICs de type classique.
Diviseur
2
8
32
Osc RC

20Mhz
100ns
400ns
1,6s
2-6s

5Mhz
400ns
1,6s
6,4s
2-6s

4Mhz
500ns
2s
8s
2-6s

2Mhz
1s
4s
16s
2-6s

1,25Mhz
1,6s
6,4s
25,6s
2-6s

333,3Khz
6s
24s
96s
2-6s

Les valeurs 400ns; 1,6s; 2s; 4s; 6,4; 24s correspondent au meilleur diviseur en
fonction de la frquence choisie, en ce qui nous concerne puisquon utilise une frquence de
4MHZ, on utilisera la valeur de 2s dans notre programmation.
Il faut prsent prciser que le PIC ncessite un temps Tad avant le dmarrage effectif de
la conversion, et un temps supplmentaire Tad la fin de la conversion.
Rsumons donc le temps ncessaire pour effectuer lensemble des oprations :
- On charge le condensateur interne (ncessite le temps Tacq)
- On effectue la conversion (ncessite le temps 12 * Tad)
- On doit attendre 2 * Tad avant de pouvoir recommencer une autre conversion

Figure2.3 :cycle de conversion


Le module de conversion utilise 4 registres disposs comme suit :
*Registre de Rsultat High (ADRESH)
*Registre de Rsultat Low (ADRESL)
*Registre0 de Contrle (ADCON0)

*Registre1 de Contrle (ADCON1)


Regardons cela de prs dans la figure ci-dessous :
Configuration interne du module de convertisseur analogique/numrique :

Figure 2.4 : module du convertisseur


On voit trs bien sur ce schma que les pins AN2 et AN3 servent selon la position du
slecteur dentre analogique ou de tension de rfrence. Le slecteur de canal permet de
slectionner lequel des 8 canaux va tre appliqu au convertisseur analogique/digital.
On voit que la slection de la source des tensions de rfrence dpend de bits du registre
ADCON1, tandis que le canal slectionn pour tre numris dpend de ADCON0. Cest le
registre ADCON1 qui dtermine si ce port sera utilis comme port I/O ou comme port
analogique. Nous en aurons besoin dans la programmation.

Les registres ADRESL et ADRESH

On attire votre attention sur le fait que le convertisseur donne un rsultat sur 10 bits, et donc que
ce rsultat devra donc obligatoirement tre sauvegard dans 2 registres. Ces registres sont tout
simplement les registres ADRESL et ADRESH. Comme 2 registres contiennent 16 bits, et que
nous nen utilisons que 10, Microchip nous a laiss le choix sur la faon dont est sauvegard le
rsultat, nous pouvons soit justifier le rsultat gauche, soit droite.
La justification droite complte la partie gauche du rsultat par des 0 . Le rsultat sera donc
de la forme :
ADRESH
0

ADRESL
0

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

La justification gauche procde bien videmment de la mthode inverse :


ADRESH
B9

B8

B7

B6

B5

ADRESL
B4

B3

B2

B1

B0

La justification droite sera principalement utilise lorsque nous avons besoin de lintgralit des
10 bits de rsultat, tandis que la justification gauche est trs pratique lorsque 8 bits vous
suffisent. Dans ce cas, les 2 bits de poids faibles se trouvent isols dans ADRESL, il suffit donc
de ne pas en tenir compte. Cette approche est destine nous pargner des dcalages de rsultats.
Le choix de la mthode seffectue laide du bit 7 de ADCON1.
Le registre ADCON1
Ce registre permet de dterminer le rle de chacune des pins AN0 AN7. Il permet donc de
choisir si un pin sera utilis comme entre analogique, comme entre/sortie standard, ou comme
tension de rfrence. Il permet galement de dcider de la justification du rsultat.
Pour pouvoir utiliser un pin en mode analogique, il faudra que ce pin soit configur galement en
entre par TRISA. Le registre ADCON1 dispose, comme tout registre accessible de notre PIC, de
8 bits, dont seulement 5 sont utiliss :

Tableau 2.1 : le registre ADCON1


B7
B6

ADFM
INUTILISE

A/D result format select


lu comme 0

B5

INUTILISE

lu comme 0

B4

INUTILISE

lu comme 0

B3

PCFG3

Port Configuration control bit 3

B2

PCFG2

Port Configuration control bit 2

B1

PCFG1

Port Configuration control bit 1

B0

PCFG1

Port Configuration control bit 0

Le bit ADFM permet de dterminer si le rsultat de la conversion sera justifi droite (1)
ou gauche (0). Nous trouvons dans ce registre les 4 bits de configuration des pins lis au
convertisseur analogique/numrique. Ces bits nous permettent donc de dterminer le rle de
chaque pin.
Comme nous avons 16 combinaisons possibles, nous aurons autant de possibilits de
configuration (en fait, vous verrez que nous nen avons que15). (Annexe2 )
. Le registre ADCON0
Ce registre est le dernier utilis par le convertisseur analogique/numrique. Il contient les bits que
nous allons manipuler lors de notre conversion. Sur les 8 bits de notre registre, 7 seront utiliss.
B7

ADCS1

A/D conversion Clock Select bit 1

B6

ADCS0

A/D conversion Clock Select bit 0

B5
B4
B3
B2

CHS2
CHS1
CHS0
GO/DONE

Analog Channel Select bit2


Analog Channel Select bit1
Analog Channel Select bit0
A/D conversion status bit

B1

Inutilis

lu comme 0

B0

ADON

A/D ON bit

2.6

MCLR :
Entre de remise zro, lorsque cette entre est mise ltat bas, le microcontrleur est

rinitialis : il va excuter linstruction se trouvant ladresse00 H (adresse de bootstrap).


Mais aussi lorsque le microcontrleur est mis sous tension il est prfrable que RESET soit
ltat logique 0 pendant un temps trs court cest le rle du circuit RC.

VCC

R0
1k

D3
1N4148
MCLR

C71
220u

SW3

Figure 2.5 : circuit du reset

2.7

Loscillateur :
Lhorloge est un systme qui peut tre ralise soit avec un QUARTZ(a) , soit avec
une horloge extrieur(b), soit avec un circuit RC(c), dans ce dernier la stabilit du montage
est limite.
La frquence maximale dutilisation va dpendre de Microcontrleur utilis. Le
suffixe indiqu sur le botier donne la nature de lhorloge utiliser et sa frquence maximale.

Figure 2.6 :loscillateur

Partant dune prsentation gnrale sur les microcontrleurs, nous avons ensuite dfini la
famille des PICs et plus particulirement le 16F877.
En conclusion dans ce chapitre nous pouvons dire que le microcontrleur 16F877 peut
bien jouer le rle d'une unit de contrle pour notre systme.
Sachant que lvolution du niveau deau est trs lente nous pouvons dire que le
convertisseur intgr dans le PIC nous convient parfaitement.
Maintenant, nous pouvons passer la conception puisque le composant le plus important
dans notre systme nous est dj familier.