Vous êtes sur la page 1sur 16

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

Chapitre 2 : prsentation du microcontrleur le pic 16F877

13

Chapitre 2 : Prsentation du microcontrleur 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.

14

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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.

15

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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

16

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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). 17

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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

18

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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

19

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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 :

21

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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.

22

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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) 23

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

*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.

24

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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 0 0 0 0 0 B9 B8 B7 B6 B5 B4 ADRESL B3 B2 B1 B0

La justification gauche procde bien videmment de la mthode inverse : ADRESH B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 0 0 ADRESL 0 0 0 0

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 :

25

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

Tableau 2.1 : le registre ADCON1 B7 B6 B5 B4 B3 B2 B1 B0 ADFM INUTILISE INUTILISE INUTILISE PCFG3 PCFG2 PCFG1 PCFG1 A/D result format select lu comme 0 lu comme 0 lu comme 0 Port Configuration control bit 3 Port Configuration control bit 2 Port Configuration control bit 1 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 B6 B5 B4 B3 B2 B1 B0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE Inutilis ADON A/D conversion Clock Select bit 1 A/D conversion Clock Select bit 0 Analog Channel Select bit2 Analog Channel Select bit1 Analog Channel Select bit0 A/D conversion status bit lu comme 0 A/D ON bit

26

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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 1 C7

220u

SW3
2

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

27

Chapitre 2 : Prsentation du microcontrleur PIC 16F877

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.

28