TP 2 : Initialisation au
développement des cartes avec
PIC 16F84A
Initialisation au développement
des cartes avec PIC 16F84A
Objectifs :
Le PIC (Programmable Interface Controler) 16F84 est un microcontrôleur produit par la société
MicroChip. C’est un composant qui regroupe dans un même boîtier tous les éléments vitaux d’un
système programmé : CPU, RAM, ROM, Interfaces d’entrées/sorties, etc...
Ses caractéristiques principales sont :
- Séparation des mémoires de programme et de données (architecture Harvard) : On obtient ainsi
une meilleure bande passante et des instructions et des données pas forcément codées sur le même
nombre de bits.
- Communication avec l'extérieur seulement par des ports : il ne possède pas de bus d'adresses, de
bus de données et de bus de contrôle comme la plupart des microprocesseurs.
- Utilisation d'un jeu d'instructions réduit, d'où le nom de son architecture : RISC (Reduced
Instructions Set Construction). Les instructions sont ainsi codées sur un nombre réduit de bits, ce qui
accélère l'exécution (1 cycle machine par instruction sauf pour les sauts qui requirent 2 cycles). En
revanche, leur nombre limité oblige à se restreindre à des instructions basiques, contrairement aux
systèmes d'architecture CISC (Complex Instructions Set Construction) qui proposent plus
d'instructions donc codées sur plus de bits mais réalisant des traitements plus complexes.
La famille des PICs est subdivisée en 3 grandes familles : La famille Base-Line, qui utilise des mots
d’instructions de 12 bits, la famille Mid-Range, qui utilise des mots de 14 bits (et dont font partie la
16F84 et 16F876), et la famille High-End, qui utilise des mots de 16 bits.
Nous nous limiterons dans ce document à la famille Mid-Range et particulièrement au PIC 16F84,
sachant que si on a tout assimilé, on pourra facilement passer à une autre famille, et même à un autre
microcontrôleur.
1
Pour identifier un PIC, on utilise simplement son numéro :
Un PIC est identifié par un numéro de la forme suivant : xx(L)XXyy –zz
- xx : Famille du composant (12, 14, 16, 17, 18)
- L : Tolérance plus importante de la plage de tension
- XX : Type de mémoire de programme
C - EPROM ou EEPROM
CR - PROM
F - FLASH
-yy: Identification
- zz : Vitesse maximum du quartz
Nous utiliserons un PIC 16F84 –10, soit :
- 16 : Mid-Line
- F : FLASH
- 84 : Type
- 10 : Quartz à 10MHz au maximum
Donc, un 16F84-04 est un PIC Mid-Range donc la mémoire programme est de type FLASH de
référence 84 et capable d’accepter une fréquence d’horloge de 4MHz.
Notez que les PICs sont des composants STATIQUES, c’est à dire que la fréquence d’horloge peut
être abaissée jusque l’arrêt complet sans perte de données et sans disfonctionnement. Une version –
10 peut donc toujours être employée sans problème.
LE PIC 16F84
Les caractéristiques principales du 16F84 sont :
• Une mémoire programme de type flash de 1K (1024) mots de 14 bits
• Une mémoire RAM constituée :
• Des registres de control SFR (SpecialFunctionRegisters)
• 68 octets de RAM utilisateur appelés aussi GPR (General Propose Resisters)
• Une mémoire EEPROM de donnée de 64 octets
• Deux ports d'entrée sortie, un de 8 bits et un de 5 bits
• Un timer/Compteur cadencé par une horloge interne ou externe
• Un chien de garde / compteur qui est un timer particulier
2
• Un prédiviseur de fréquence programmable permettant d'étendre les possibilités du Timer TMR0 et
du chien de garde WDT
• 4 sources d'interruption
• L'horloge peut être générée par 4 types d'oscillateurs sélectionnables
• Protection de code
• Fonctionnement en mode sleep pour réduction de la consommation
• Programmation par mode ICSP (In Circuit Serial Programming) Mémoire
Architecture général de pic 16F84
Organisation externe
Le μC 16F84 est un circuit intégré de 18 broches : voir figure
3
Le fonctionnement du μC 16F84 nécessite une horloge qui rythme l’exécution des instructions du
programme.
On distingue trois modes d’horloge :
Horloge interne à quartz (Figure 3a) : Avec l’oscillateur à quartz, on peut avoir des
fréquences allant de
4 MHz jusqu’à 20 MHz selon le type du μC.
Horloge interne à circuit RC (Figure 3b) : Avec un oscillateur à circuit RC, la fréquence de
l’oscillation dépend de la tension Vdd et des éléments Rext et Cext.
Horloge externe (Figure 3c) : Application d’un signal horloge externe.
Après la compilation de leur programme sur PC (génération du programme binaire au format .hex)
aller dans le dossier de votre projet et examiner le fichier de l’extension .hex
comme la figure suivent :
Mise en marche du montage
Après les deux étapes précédentes on ajoute le ficher .hex dans
l le PIC16F84A dans le logiciel proteus. Pour le vérifier,
double clic sur le pic une fenêtre est ouverte comme suite : le
chemine du fichier .hex doit être indiqué
4
On clic sur le bouton Play du logiciel ISIS la simulation commence
Les broches 15 et 16 ne sont présentes que sur les afficheurs LCD avec retro éclairage. Les
connexions à réaliser sont simples puisque l'afficheur LCD dispose de peu de broches. Il faut
évidemment, l'alimenter, le connecter à un bus de donnée (4 ou 8 bits), et connecter les broches E,
R/W et RS. Les détailles de ce type d’afficheur seront présenté dans le TP suivant.
5
MANIPULATION
Montage à réaliser
Réaliser les montages suivents à base de PIC 16F84A dans le logiciel de simulation PROTEUS(ISIS)
en utilisent les composants suivants:
- Un PIC 16F84A
Figure 1
6
Figure 2
Figure 3
Questions
7
Réponse
#include <16F84A.h>
void main()
{
//int i;
for(;;)
{
if(input(pin_b0)==0)
{
delay_ms(500);
output_high(pin_b3);
}
else
{
delay_ms(500);
output_low(pin_b3);
}
}
}
#include <16F84A.h>
#use delay(clock=4M)
#define lcd_rs_pin pin_b0
#define lcd_rw_pin pin_b1
#define lcd_enable_pin pin_b6
#define lcd_DATA4 pin_b2
#define lcd_DATA5 pin_b3
#define lcd_DATA6 pin_b4
#define lcd_DATA7 pin_b5
#include <lcd.c>
void main ()
{
lcd_init();
lcd_gotoxy(5,1);
printf(lcd_putc,"Nom") ;
lcd_gotoxy(5,2);
printf(lcd_putc,"Prénom") ;
}
}