0% ont trouvé ce document utile (0 vote)
25 vues52 pages

Introduction

Le document présente un projet basé sur le microcontrôleur PIC 16F876A, soulignant son importance dans le développement de systèmes électroniques modernes. Il décrit en détail les caractéristiques techniques du microcontrôleur, y compris ses différentes versions, familles, et l'organisation de sa mémoire. Le projet vise à optimiser la gestion du temps à l'aide de ce microcontrôleur, en mettant en avant ses ressources et ses capacités programmables.

Transféré par

kasichamel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues52 pages

Introduction

Le document présente un projet basé sur le microcontrôleur PIC 16F876A, soulignant son importance dans le développement de systèmes électroniques modernes. Il décrit en détail les caractéristiques techniques du microcontrôleur, y compris ses différentes versions, familles, et l'organisation de sa mémoire. Le projet vise à optimiser la gestion du temps à l'aide de ce microcontrôleur, en mettant en avant ses ressources et ses capacités programmables.

Transféré par

kasichamel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

Introduction :

Depuis des siècles et des siècles l'homme cherche à dominer la


nature et maîtriser ses forces, et le moyen qui a contribué le plus a atteindre
ce but est l'invention.

De nos jours la science a atteint un stade très avancée dans le


développement de tous les domaines notamment le domaine militaire, le
domaine de la médecine et de l'espace, et ce grâce a l'électronique
analogique puis numérique qui ont joué un rôle déterminant dans cette
révolution extraordinaire qui a changé notre mode de vie, de communication
et de perception des choses, la seule chose qui a limité et qui limite cette
avancée et la capacité de l'être humaine à créer et inventer de nouvelles
formes de communication et de nouvelles idées.

Notre réalisation part de ce principe, a savoir inventer un système


qui peut aide, servir et apporter un plus au développement et
l’épanouissement de l’homme, et quelle est la chose la plus précieuse de nos
jours que la gestion et l’optimisation du temps, aidées par les connaissances
acquises tout au long de notre formation dans le domaine de l’électronique
numérique et surtout après avoir vu la puissance des circuits programmables
précisément les microcontrôleurs la décision nous avons entamé ce projet
avec l’espoir d’être à la hauteur des efforts consentis.

Le cœur de ce projet est le microcontrôleur PIC16876A qui est un


µC de la famille MICROCHIP, il est considéré parmi les meilleurs µC
disponibles sur le marché, son prix, sa disponibilité et sa puissance nous ont
convaincus de la réalisabilité de notre projet, est c’est d’ailleurs le sujet du
premier chapitre de cette thèse.

Introduction:

Dans ce chapitre, nous allons expliquer et donner tous les détails


concernant le Microcontrôleur PIC 16F876A relatifs à notre conception, en
d'autres termes expliquer les ressources utilisées dans notre programme
d'une manière très détaillée avec des exemples de programmation là ou il est
nécessaire.
Le PIC 16F876A est un microcontrôleur très puissant regorge de
ressources et de périphériques, très rapide et possède un jeu d'instruction
réduit. On peut citer :

 un convertisseur 10 bits.
 un port série.
 trois TIMER.
 22 entrées/sorties.
 Un port parallèle.
 Des modules de capture….
Parlant de tous ceci et d'une manière détaillé sort du cadre et des
objectifs on s'est fixé à savoir précision, clarté et exactitude des informations
fournis qui aiderons a la compréhension de notre projet.

Voici les ressources utilisée dans notre application :

 les entrées sorties.


 Le TIMER0.
 Le TIMER2.
 Les interruptions du PORTB.
 Le port série.

Avant de donner une vue d’ensemble sur le Microcontrôleur on


commence par :

1.1 Définition Du PIC:

Un PIC est un microcontrôleur, c’est à dire une unité de traitement


de L’information de type microprocesseur à laquelle on a ajouté des
périphériques internes Permettant de réaliser des montages sans nécessiter
l’ajout de composants externes.
La dénomination PIC (Programmable Interface Contrôler) est sous
copyright de MICROCHIP TECHNOLOGY, et qui est une Société
américaine.

I.2 Les différentes versions du PIC :

Il existe trois versions du PIC :

Version OTP : (one time programmable)

Cette technologie est le standard dans la famille PIC. Un PIC en


version OTP, est utilise pour la production en série. Elle est beaucoup moins
chère que les autres versions. eIle est logée dans un boîtier opaque et ne
permet donc qu’une seule programmation.

Version EPROM : (Erasable Programmable Rom)

Ces composants sont effaçables par ultraviolets. Elles coûtent


habituellement beaucoup plus chére que leur équivalent OTP et ne résistent en
moyenne qu’à environ 100 effacement. Le chip est logé dans un boîtier muni d’une
petite fenêtre. Pour modifier ou remplacer le programme, il suffit d’exposer le
microcontrôleur à l’ultraviolet.

Version FLASH :

Ces mémoires sont programmables et effaçables des milliers de


fois. C’est les plus facile à utiliser pour le prototypage et qui est le notre.
1.3 Les différentes familles des PICs :

La famille des PICs est subdivisée en 3 grandes familles :

 La famille Base-Line: qui utilise des mots d’instructions de 12 bits.


(Comme les12CXX et12CXXX).

 La famille Mid-Range: qui utilise des mots d’instructions de 14 bits.


(Comme les 16F84 et 16F876).

 Et la famille High-End: qui utilise des mots d’instructions de 16 bits.


(Comme les 18FXX et 18LFXXXJ10).

1.4 Identification d’un PIC :

Pour identifier un PIC, on utilise son numéro, Les 2 premiers


chiffres indiquent la catégorie du PIC, par exemple 16 indique un PIC Mid-
Range, Vient ensuite parfois une lettre L : Celle-ci indique que le PIC peut
fonctionner avec une plage de tension beaucoup plus tolérante, ensuite, vient
une lettre tel que C indique que la mémoire programme est une EPROM ou
plus rarement une EEPROM, CR pour indiquer une mémoire de type ROM
Ou F pour indiquer une mémoire de type FLASH.
Les derniers chiffres identifient précisément le PIC. Par exemple
(876). Finalement vient sur les boîtiers le suffixe « -XX » dans lequel XX
représente la fréquence d’horloge maximale que le PIC peut recevoir. Par
exemple –20 pour un 20 MHz.
Donc, un 16F876-20 est un PIC Mid-Range (16) donc la mémoire
programme est de type FLASH (F) donc réinscriptible de type 876 et capable
d’accepter une fréquence d’horloge de
20MHz.
Une dernière indication qu'on peut trouver est le type du boîtier. Le
notre boîtier est est un PDIP, qui est un boîtier DIL (Dual In Line) 28 broches
14x2.
Pic 16 F 876A - 20

Fréquence d’horloge maximale

Identifiant le PIC

Pour le Montage on a utilisé le Pic 16F876A) voici son Brochage :


Code de couleur

Les sortie/ entrée


L'oscillateur in /out
VDD
VSS
Reset

Figure 1.0
Mémoire de
Mid-Range
type flash
Ses principales caractéristiques sont :

 une mémoire EEPROM de 256 octets


 Une mémoire RAM utilisateur de 256 emplacements à 8 bits
 architecture interne de type HARVARD lui conférant une très grande
rapidité
 présence d’un code de protection permettant d’en empêcher la
duplication
 possibilité d’être programmé in-circuit, c’est à dire sans qu’il soit
nécessaire de le retirer
 du support de l’application.
 22 lignes d’entrées/sorties, réparties en un port de 5 lignes (Port A) et
Deux ports de 8
 lignes (Port B, C)
 une mémoire programme pouvant contenir 8.192 instructions de 14
bits chacune.
 Un convertisseur 10 bits.
 Un port série.
 Un port parallèle.
 Plusieurs TIMER.
 Des modules de captures…..

1.5 Les Entrées/Sorties:


Elles sont regroupées en trois ports : Port A, Port B et Port C. On
peut les configurer comme Entrées, comme On peut les configurer comme
sorties.

Le Port A possède 5 lignes, nommées:

 RA0..........pin 2
 RA1..........pin 3
 RA2..........pin 4
 RA3..........pin 5
 RA4..........pin 6
 (NB: RA = Registre A)

Le Port B possède 8 lignes, nommées:

 RB0..........pin 21
 RB1..........pin 22
 RB2..........pin 23
 RB3..........pin 24
 RB4..........pin 25
 RB5..........pin 26
 RB6..........pin 27
 RB7..........pin 28
 (NB: RB = Register B)

Le Port C possède 8 lignes, nommées:

 RC0..........pin 11
 RC1..........pin 12
 RC2..........pin 13
 RC3..........pin 14
 RC4..........pin 15
 RC5..........pin 16
 RC6..........pin 17
 RC7..........pin 18
(NB : RC = Register C)

Alimentation:

 VSS……….pin 19 et 8
 VDD……....pin 20

Quartez ou bien l'horloge:

 OSC1/CLKIN...…….pin 9
 OSC2/CLKOUT……pin 10
 MCL/Vpp…………. .pin 1(Reset)
1.6 Organisation de la Mémoire du PIC 16F876A :
La mémoire du PIC 16F876A est répartie en trois espaces, logés
sur la même pastille de silicium :

 Mémoire de la programmation de type flash.


 Mémoire de données EEPROM.
 Mémoire volatile RAM.

1er La mémoire programme (EEPROM DE TYPE FLASH):

La mémoire programme est constituée de 8K mots de 14 bits.


C’est dans cette zone que notre programme va se logé.

2eme La mémoire eeprom (Data Memory):

La mémoire eeprom (Electrical Erasable Programmable Read Only Memory),


est constituée de 256 octets qu'on peut lire et écrire depuis notre programme.
Ces octets sont conservés Après une coupure de courant et sont très utiles
pour conserver des paramètres semi permanents.
Remarque : Il est donc plus rapide de la lire que d’y écrire.
Cette mémoire est contrôlée par l’intermédiaire de quatre registres :
 EEADR (EEprom ADRess) pour ce qui concerne les adresses
 EEDATA (EEprom DATA) pour ce qui concerne les données
 EECON1 (EEprom CONtrol) permettant de définir le mode de
fonctionnement de cette mémoire
 EECON2 .

3eme La mémoire Ram:

La mémoire RAM est celle que nous allons sans cesse utiliser. Toutes les
données qui y sont stockées sont perdues lors d’une coupure de courant.

La mémoire de notre Microcontrôleur est organisée en 4 pages pour le


16F876A, dans chacune des pages on trouve des « cases mémoires
Spéciales » appelées «REGISTRES SPECIAUX » et des cases mémoires «
libres » dont on peut s'en servir pour le stockage temporaire des données .
s’aqissant de la notre on dispose de 368 octets libres. Et chaque case
mémoire est constituée de 8 bites. L’organisation de la RAM est montrée
dans le tableau figure 1.2
Organisation de La mémoire :

La mémoire RAM
Figure. 1.2
Résumér :
PIC FLASH EEPROM RAM
16F876A 8K de 14 bit 256 octet de 8 bit 368 octet de 8 bit

1.7 Les registres spéciaux du Pic 16F876A:

Le registre STATUS (Registre d’état):

C'est un registre très important car il suit les instructions de notre


programme et positionne ses bits suivant le résultat des opérations
effectuées. Les cinq premiers bits de ce registre (bits 0 à 4) correspondent à
des flags en d'autres termes des drapeaux que le programmeur peut
interroger pour obtenir des informations lui permettant d’écrire correctement la
suite des instructions de son programme ; tandis que les bits 5, 6 et 7 (RP0,
RP1, RP2), pourraient sélectionner les 4 pages de registres.

RP2 RP1

Bit 0: C (Carry)Flag indiquant si une retenue a eu lieu dans un octet lors


d’une addition ou d’une soustraction. Si une retenue a été générée, ce bit
passe à 1.
Bit 1 : DC (Digit Carry)Flag fonctionnant comme le bit de Carry, sauf qu’ici la
surveillance de la retenue s’exerce non pas sur l’octet entier, mais sur le
premier demi-octet. Ce flag se positionne à 1 si une retenue est générée du
bit 3 (bit de poids fort du quartet inférieur) vers le bit 0 du quartet supérieur. Il
est utile pour corriger le résultat desopérations effectuées en code BCD.
Bit 2 : Z (Zero) Ce flag passe à 1 si le résultat d’une opération (arithmétique
ou logique) est 0.
Bit 3 : PD (Power Down)
Mise en veilleuse de l’alimentation, effectuée par l’instruction SLEEP. Passe à
1 lorsqu’on utilise l’instruction CLWDT, ou à la mise sous tension.
Bit 4 : TO (Time Out) Dépassement de délai. Passe à 0 si le timer du Watch-
Dog (chien de garde) déborde. Est mis à 1 par les instructions CLWDT et
SLEEP, ainsi qu’à la
Mise sous tension.
Bit 5 : RP0 (Register Page zero) Sert à sélectionner l’une des deux pages de
registres (Page 0 ou Page1).
Mais dans le 16F876A le Bit 5 : RP0 et le Bit 6 : RP1 servirons à
sélectionner l'un des quatre pages de registre (Bank 0, 1, 2 et3)

RP1 : RP0 Page (Bank)


00 0
01 1
10 2
11 3

Le registre OPTION :

C'est le registre qui contrôle le fonctionnement de l’horloge interne du


microcontrôleur et le la manière dont fonctionne le PORTB.

Bit 7 : RBPU (Register B Pull Up)


Valide les résistances de pull-up présentes, à l’intérieur du boîtier, sur les
lignes du port B.
Bit 6 : INTEDG (INTerrupt EDGe)
Détermine le front du signal d’horloge sur lequel on veut que soit prise en
compte une demande d’interruption provenant de l’extérieur (commande
appliquée sur la pin 21 : RB0/INT). Car on peut faire agir une telle demande
soit à l’apparition d’un front montant (passage de zéro à 1), soit à l’apparition
d’un front Descendant (passage de 1 à zéro).
1 = interruption programmée pour se déclencher

Sur un front montant ( )

0 = interruption programmée pour se déclencher

Sur un front descendant ( ).


Bit 5 : T0CS (Timer zero Clock Source)
Sert à choisir la provenance du signal qu’on souhaite utiliser comme clock
pour piloter l’horloge interne. Il existe deux choix possibles : soit utiliser
l’horloge
Interne utilisant le quartz pilote du microcontrôleur et fournissant un signal
dont la fréquence est celle du quartz divisée par 4, soit utiliser un signal
externe prélevé sur
La pin RA4 (bit 4 du port A).
0 = le timer est piloté par l’horloge interne
1 = le timer est piloté par un signal externe.

Bit 4 : T0SE (Timer zero Signal Edge)


Sert à déterminer si l’horloge doit avancer sur front montant ou sur front
descendant.

0 = l’horloge avance sur front montant ( )

1 = l’horloge avance sur front descendant ( ).


Bit 3 : PSA (Pre-Scaler Assignment)
Sert à affecter le pré diviseur soit au timer TMR0 soit au Watch-Dog.
0 = le pré diviseur est affecté au timer TMR0
1 = le pré diviseur est affecté au Watch-Dog.
Bits 2 – 1 – 0 : PS2 – PS1 – PS0 (Pre-Scaler rate)
Ces trois bits servent à programmer le facteur de division qu’on veut assigner
au pré diviseur dans le but d’avoir des signaux plus lents. A remarquer que le
facteur de division n’est pas le même selon que le pré diviseur soit affecté au
TMR0 (timer) ou au Watch-Dog (chien de garde) :

Facteur de division
PS2 PS1 PS0
Pour le timer 0 Pour le watch-dog
0 0 0 2 1
0 0 1 4 2
0 1 0 8 4
0 1 1 16 8
1 0 0 32 16
1 0 1 64 32
1 1 0 128 64
1 1 1 256 128

1.8 Le système d'interruption:


Début de programme
Le microcontrôleur 16F876A est doté d'un système d'interruption
Routine de l'interruption
très performant permettent au programmeur de prendre en charge les
événements000 extérieurs et intérieurs au totale 13 sources en temps réel et
Lire l'instruction
d'écrire des programmes qui ce
très optimisé.
. trouve dans l'adresse
. Sauvegarder l'environnement
Schéma général 0x00 et continuer la
d’une interruption : (Exemple 0x36 Et
0x15 de l’exécution
lecture l'instruction suivante 0x37)
0x16 Une instruction ou bien
. une source qui provoque
. Aller à l'adresse 0x04
l'interruption Exécuter les instruction qui
0x36
ce trouve de dans

0x37
. Suite des instructions Restaurer l'environnement
.
0x57

RETFIE

FIN

ORGANIGRAME D’UNE INTERRUPTION


Le système d’interruption du PIC16F876A est contrôlé par les registres
suivant:
 INTCON
 PIE1
 PIR1

Il fonctionne comme suit :


Chaque source d'interruption possède son événement déclencheur, dés qu'il
se présente son flag est positionné est le pointeur d'instruction pointe
automatiquement vers l'adresse 0004 donc l'unité centrale s'arrête d'exécuter
le programme principale et commence l'exécution des routine d'interruptions.
Apres un reset, les interruptions sont toutes désactives donc pour les utiliser il
faut les activer. Son registre principal est :

6-INTCON (Interrupt Control):

C'est le registre qui préside au fonctionnement des interruptions.


Dans le 16F876A il y a 13 sources possibles d’interruptions. Chaque fois que
l’une d’elles surgit, le microcontrôleur (après avoir noté Dans la pile l’adresse
de retour) abandonne momentanément (interrompt) le Programme qu’il avait
en cours d’exécution et saute à l’adresse 004 (Adresse prédéfinie par le
fabricant, de la même façon que l’adresse 000 a été prédéfinie pour la
fonction Reset).

En lisant le contenu de ce registre, on peut déterminer la provenance de la


Demande d’interruption et aiguiller le programme de manière à y répondre de
façon adéquate.

Exemple des evenments qui peuvent déclencher l’interruption :


1) la fin d’une programmation de l’EEPROM de données ;
2) le débordement du timer interne ;
3) une commande externe appliquée sur la pin 6 (RB0/INT) ;
4) un changement d’état sur l’une des pins 21, 22, 23 ou 24
(Respectivement RB4, RB5, RB6, RB7).
Explication de chaque bit de ce registre :

Bit 7: GIE (Global Interrupt Enable) Le chef suprême du registre INTCON.


Mis à 1, il autorise la prise en compte de tous les autres bits de
l’octet, Tandis que mis à zéro, il les masque (même s’ils sont positionnés).
Sous l’action d’un Reset il est automatiquement mis à zéro. Pour interdire la
prise en compte de toute éventuelle demande d’interruption pouvant surgir
pendant que le microcontrôleur est déjà occupé à en traiter une, ce bit (GIE)
passe automatiquement à zéro jusqu’à ce que dans le programme apparaît
l’instruction RETFIE, qui le repositionne à 1.
Au cas où l’utilisation de ce bit soit nécessaire, il ne faut pas oublier que:
Bit 6: EEIE (EEprom Interrupt Enable)

Mis à 1, autorise l’interruption que l’EEPROM génère à la fin de la


programmation.

Bit 5: T0IE (Timer zero Interrupt Enable)

Mis à 1, il autorise les interruptions provoquées par le


Débordement du timer interne (passage de FF à 00)

Bit 4: INTE (Interrupt Enable)

Mis à 1, il autorise les demandes d’interruption provenant de l’extérieur,


appliquées sur la pin 6(RB0 /INT).
NB : ces demandes peuvent se déclencher soit à l’apparition d’un Front
montant, soit à l’apparition d’un front descendant, selon la façon
Dont on a programmé le bit 6 du registre OPTION (INTEDG)
1 = sur front montant
0 = sur front descendant

Bit 3: RBIE (Register B Interrupt Enable)

Mis à 1, il autorise les interruptions provoquées


Par un changement d’état sur les lignes du port B
(RB4, BR5, RB6, RB7).

Bit 2: T0IF (Timer zero Interrupt Flag)


Le fonctionnement de ce flag est conditionné par l’état du bit 5. Il ne
fonctionne que Si le bit 5 a préalablement été mis à 1.
Dans la mesure où le bit 5 est à 1, ce flag passe à 1 Chaque fois que le timer
TMR0 déborde (passage de FF à 00).

Bit 1 : INTF (INTerrupt Flag)

Le fonctionnement de ce flag est conditionné par l’état du bit 4. Il ne


fonctionne que si le bit 4 a préalablement été mis à 1. Dans la mesure où le
bit 4 est à 1, ce flag passe à 1 chaque fois qu’une demande d’interruption
surgit, provenant de l’extérieur, appliquée sur la pin 6 du boîtier (RB0/INT).

Bit 0 : RBIF (Register B Interrupt Flag)

Le fonctionnement de ce flag est conditionné par l’état du bit 3. Il ne


fonctionne que si le bit 3 a préalablement été mis à [Link] la mesure où le bit
3 est à 1, ce bit passe à 1 chaque fois qu’il y a un changement d’état sur l’une
des lignes du port B (RB4, RB5, RB6 ou RB7) par rapport à la dernière
opérations de lecture du port B (dans la mesure, évidemment, où les lignes
de ce port sont configurées en entrée).

PIE1:
C'est le registre qui contient les bits d’autorisation des interruptions
pour chaque ressource périphérique pour notre cas seule deux bits nous
intéresse a savoir celui de la réception du port série et celui du TIMER2.

Bit 5: RCIE (Receive Interrupt enable bit)


1 = activer l'interruption en mode réception du port série.
0 = Désactiver l'interruption en mode réception du port série.
Bite TMR2IE: (TMR2 to PR2 match Interrupt Enable bit)
1 = activer l'interruption du débordement du TMR2 lors du son dépassement
de PR2.
0 = Désactiver l'interruption du débordement du TMR2 lors du son
dépassement de PR2.

PIR1:
Contient les flags ou bien les drapeaux d’interruptions des
périphériques
RCIF : drapeau d’interruption du port série.
TMR2IF : drapeau d’interruption du TMR2.

1.9 LE TMR0 (TiMeR zéro):

Le TIMER0 est un compteur 8 bits, un compteur qui compte les


cycles d’instructions du µC son registre principal est le registre TMR0 c’est la
que le comptage est fait. Son rôle principal est la création de temporisation.
Ce TIMER peut soit fonctionner seul, soit être précédé par un pré diviseur
programmable à 8 bits dont la programmation se fait par l’intermédiaire du
registre OPTION. Ce registre peut être lu et modifié à tout moment, soit pour
connaître sa position courante, soit pour le déclencher à partir d’une valeur
déterminée.
Le comptage est sur 8 bits, une fois que le comptage est arrivé à
FF, celui-ci revient à 00 (ce qui provoque le passage à 1 du bit 2 du registre
INTCON appelé T0IF). En programmation on peut écrire :
1) pour le lire :
 MOVF TMR0, W (porte la valeur de TMR0 dans W)
2) pour lui donner une valeur de départ :
 MOVLW valeur
MOVWF TMR0
3) pour le mettre à zéro :
 CLRF TMR0

Ses différents registres :

TMR0 : registre a 8 bits la ou est fait le comptage.

OPTION_REG : voir ci-dessus.

INTCON : voir aussi ci-dessus.

La mémoire EEPROM DATA :

C’est une mémoire de sauvegarde semi permanente de données


elle peut être lue est écrite à tous moments elle sert a conserver les données
même après coupure d’électricité.
Ses différents registres son

1- EEADR (EEprom ADRess):


Registre dans lequel on écrit l’adresse de la mémoire de données EEPROM
2- EEDATA (EEprom DATA):
Pendant une opération de lecture : registre dans lequel est disponible la
donnée située à une certaine adresse de la mémoire EEPROM.
- Pendant une opération d’écriture : registre dans lequel on place la donnée a
l’emplacement qu’on veut écrire.
3- EECON1 (EEprom CONtro1):
Registre de contrôle permettant de définir le mode de fonctionnement de la
mémoire de données EEPROM).Registre à 8 bits, mais dont 5 seulement
sont utilisés:
43210

Bit 0: RD (ReaD)
Normalement à 0. Il se met dans cet état de lui-même. Le programmeur ne
peut y écrire que un 1. (N’accepte pas d’être programmé à zéro).
Bit 1: WR (WRite)
Normalement à 0. Il se met dans cet état de lui-même. Le programmeur ne
peut écrire que un 1.(N’accepte pas d’être programmé à zéro.
Bit 2: WREN (WRite ENable)
Mis à zéro, interdit toute écriture en mémoire.
Mis à 1, autorise une écriture en mémoire.
Bit 3: WRERR (WRite ERRor)
Flag d’erreur. Normalement à zé[Link] à 1 pour signaler qu’une erreur
s’est produite Juste au moment où une écriture était en cours(Celle-ci n’a pu
aboutir parce qu’un événement inopiné s’est produit ; par exemple un Reset).
Bit 4 : EEIF (EEprom Interrupt Flag)
Flag d’[Link] est automatiquement mis à 1 lorsque la programmation
de l’EEPROM de données est terminée. Doit être mis à zéro par
programmation.
4- EECON2 (EEprom CONtro2)
Registre n’ayant aucune consistance physique, et dont le seul rôle consiste à
obliger le programmeur à vérifier les données qu’il envoie dans l’EEPROM.
Par exemple pour lire une donnée dans la mémoire eeprom , les étapes à
suivre sont les suivantes :
1) on écrit l’adresse dans le registre EEADR;
2) on met à 1 le bit 0 (RD : Read Data) du registre EECON1 (ce qui provoque
le transfert de la donnée dans le registre EEDATA);
3) on lit la donnée dans le registre EEDATA où elle est devenue disponible.

Exemple : on veut lire le contenu de l’emplacement mémoire 03 :

BCF STATUS, RP0


MOVLW 03
MOVWF EEADR
BSF STATUS, RP0
BSF EECON1, 0
BCF STATUS, RP0
A partir de ce moment, ayant autorisé le mode « lecture », la donnée
contenue à l’adresse 03 est disponible dans le registre EEDATA, et on peut
l’utiliser comme on veut. Ainsi, par exemple on veut lire une donnée en
EEPROM et la porter dans le registre W

BCF STATUS, RP0


MOVLW adresse dont on veut lire le contenu
MOVWF EEADR
BSF STATUS, RP0
BSF EECON1, 0
BCF STATUS, RP0
MOVF EEDATA, W

Voyons maintenant comment écrire une donnée en EEPROM :

BCF STATUS,RP0
BCF INTCON,7
MOVLW donnée que l’on veut écrire
MOVWF EEDATA
MOVLW adresse
MOVWF EEADR
BSF STATUS,RP0
BCF EECON1,4
BSF EECON1,2
MOVLW 55
MOVWF EECON2
MOVLW AA
MOVWF EECON2
BSF EECON1,1
BCF EECON1,2
BSF INTCON,7
BCF STATUS,RP0

Cette séquence montre que pour écrire dans cette mémoire, les étapes à
suivre sont un peu plus complexes, car on est obligé de passer d’abord par
EECON2 avant de confirmer la donnée par EECON1 :
1) on interdit les interruptions ;
2) on écrit la donnée dans le registre EEDATA ;
3) on écrit l’adresse dans le registre EEADR ;
4) on configure le registre EECON1
5) on envoie la séquence définie par Microchip (55 et AA) à EEcon2
6) on reconfigure les registres EECON1, INTCON et STATUS.

Les entrées sortie :

PORT A, PORT B et PORT C -TRIS A, TRIS B et TRIS C :

Le PORT A, PORTB et PORTC permettent au microcontrôleur de


communiquer avec l’extérieur.
Alors que TRISA, TRISB et TRISC se limitent à définir le sens de chaque
ligne des ports entrée ou sortie),
Voici des exemples :
Pour configurer les port A ou B ou C en sortie il faudra mettre Tris A ou B ou
C a 0 et pour les configurées en entrée les mettre a 1

Exemple de programmation
MOVLW B '00000' , Charger l'accumulateur w avec la valeur binaire
'00000'
MOVWF TRISA , Envoyer le contenu de w a Tris A (les 5 pins A1....A4
son tous en sortie)
MOVLW B '00001' , Charger l'accumulateur w avec la valeur binaire
'00001'
MOVWF PORTA , Envoyer le contenu de w a PORTA (+5v envoyé a la
pin A0)

1) Comment écrire un 0 sur une ligne de port (par exemple, sur RA0) :

MOVLW B’11111110’. Octet de configuration de port :


0 = sortie
1 = entrée
Dans ce cas : on veut programmer le bit 0 en sortie,et tous les autres en
entrée.
MOVWF TRISA Charge l’octet de configuration dans le registre TRIS A, mais
toutes les lignes sont encore maintenues en haute impédance.
BCF PORTA,0 Met à zéro (clear) le bit 0 du port A. Toutes les autres lignes
du port restent à haute impédance.

2) Comment écrire un 1 sur une ligne de port (par exemple, sur RA2) :

MOVLW 11111110 (en binaire, pour que ce soit plus parlant). Octet de
configuration de port :
0 = sortie
1 = entrée
Dans ce cas : on veut programmer le bit 2 en sortie et tous les autres en
entrée.
MOVWF TRISA Charge l’octet de configuration dans le registre TRIS A.
BSF PORTA,2 Met à 1 (set) le bit 2 du port A. Toutes les autres lignes du port
restent à haute impédance.

3) Comment lire l’état logique d’une ligne de port. C’est à dire :


comment savoir si une ligne est à 0 ou à 1 :
MOVLW 11111111 (en binaire). Octet de configution de port (on veut que
toutes les lignes du port soient des entrées).
MOVWF TRISA Charge l’octet de configuration dans le registre TRIS A.
BTFSC PORTA, 3 Teste le bit 3 des lignes du port A. S’il est à 1, l’instruction
suivante est exécutée. Si par contre il est à 0, l’instruction suivante est
ignorée et le programme exécute l’instruction se trouvant encore après.
NB : Au lieu de BTFSC, on aurait pu utiliser l’instruction BTFSS pour, dans ce
cas, exciter l’instruction suivante si le bit testé est à 0.

4) Comment lire l’octet entier d’un port configuré en entrée :


MOVF PORTA,W Charge le contenu du port A dans le registre W.

1.10 Le TIMER2 :

Le TIMER2 est un compteur sur 8 bits, il possède un pré diviseur.


Qui peut être paramétré avec une des 3 valeurs suivantes : 1,4, ou 16.
Cependant, il dispose également d’un post diviseur, qui effectue une seconde
division après l’unité de comparaison. Ce post diviseur peut prendre n’importe
quelle valeur comprise entre 1 et 16, ce qui donne un grand choix possible.
La valeur du diviseur total, vue par l’utilisateur, est bien entendu obtenue en
multipliant la valeur du pré diviseur par celle du post diviseur.
Les valeurs de diviseur sont :
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20,24,28,32,36,40,44,48,52,56,60,64,8
0,96,112,128,144,160,176,192,208,224,240,256
Le registre TMR2 est remis automatiquement à 0 lors d’un reset.

Bloc diagramme du TIMER2

Le principe de fonctionnement du timer 2 est le suivant :

 le contenu du pré diviseur est incrémente à chaque cycle


d’instruction.
 Chaque fois que ce contenu correspond à un multiple de la valeur du
pré diviseur, le TMR2 est incrémenté (contenu du timer 2)
 Chaque fois que le contenu de TMR2 dépasse le contenu de PR2,
TMR2 est remet à 0, et le contenu du post diviseur est incrémente
donc le débordement est par rapport à une valeur prédéfinie.

Ses différents registres son :

bit 7 : non implémenté : lu '0'


bit 6-3 TOUTPS3:TOUTPS0: Timer2 Output Post scalaire Select bits
0000 = 1:1 Post scale
0001 = 1:2 Post scalaire
0010 = 1:3 Post scalaire



1111 = 1:16 Post scalaire

bit 2 TMR2ON: Timer2 On bit


1 = Timer2 is on
0 = Timer2 is off

bit 1-0 T2CKPS1:T2CKPS0: bits de sélection du Pré scalaire.


00 = Pré scalaire est 1
01 = Pré scalaire est 4
1x = Pré scalaire est 16

1.11 Le port série du PIC 16F876A USART :

USART signifie « Universal Synchronous Asynchronous Receiver


Transmitter ». C’est un module qui permet d’envoyer et de recevoir des
données en mode série, soit de façon synchrone, soit asynchrone.
Le module USART de notre µC fonctionne sur 2 pins, à savoir
RC6/TX/CK et RC7/RX/DT

Illustration du port série

Ses différent registre :

le registre TXSTA :

Le registre «TRANSMITT STAtus and control registre », comme son nom


l’indique, contient des bits de status et de contrôle, la plupart concernant
l’émission de données. Voici ses bits :
b7 : CSRC : Clock SouRCe select bit (1 = master, 0 = slave) détermine si
votre PIC va travailler en tant que maître ou en tant qu’esclave
b6 : TX9 : TRANSMITT 9 bits enable bit (1 = 9 bits, 0 = 8 bits) indique si vous
voulez envoyer des données codées sur 8 ou sur 9 bits.
b5 : TXEN : TRANSMITT ENable bit permet de lancer l’émission.
b4 : SYNC : SYNChronous mode select bit (1 = synchrone, 0 = asynchrone)
indique si vous travaillez en mode synchrone (1) ou asynchrone (0).
b3 : N.U. : Non Utilisé : lu comme « 0 »
b2 : non : non utilisé en mode synchrone
b1 : TRMT : TRansMiT shift register status bit (1 = TSR vide) indique quand
le registre TSR est vide c’est-à-dire quand l’émission de la dernière valeur
présente est terminée.
b0 : TX9D : TRANSMIT 9th bit Data contient la valeur du 9ème bit à envoyer.

Le registre RCSTA :

RCSTA, pour « ReCeive STAtus and control register », contient


d’autres bits de contrôle et de status, axés principalement sur la réception des
données. Voici les bits qui le composent.

b7 : SPEN : Serial Port ENable bit met le module USART en service.


b6 : RX9 : RECEIVE 9 bits enable bit (1 = 9 bits, 0 = 8 bits) permet de choisir
une réception sur 8 ou sur 9 bits
b5 : SREN : Single Receive ENAble bit lance la réception d’un seul octet.
b4 : CREN : Continuous Receive ENable bit lance la réception continue.
b3 : non : non utilisé en mode synchrone
b2 : non : non utilisé en mode synchrone
b1 : OERR : Overflow ERRor bit indique une erreur de type overflow.
b0 : RX9D : RECEIVE 9th Data bit le 9ème bit de votre donnée reçue.

24.5 Le registre SPBRG :

Ce registre, permet de définir le débit qui sera utilisé pour les


transferts. C’est le même registre qui est utilisé pour émission et réception.
De ce fait, un transfert full-duplex s’effectuera toujours avec une vitesse
d‘émission égale à celle de réception. Par contre, en mode half-duplex, rien
n'empêche de modifier SPBRG à chaque transition émission/réception et
inversément.

- La formule utilisée pour le calcul de SPBRG :

Il y a 2 formules distinctes, selon que nous aurons positionné le bit BRGH à «


1 » ou à « 0 »

Si BRGH = 0 (basse vitesse)


Débit = Fosc / (64 * (SPBRG + 1))
Ou encore
SPBRG = (Fosc / (Débit * 64)) – 1

Les limites d’utilisation sont (avec notre PIC à 20MHz) :


Débit min = 20*106 / (64 * (255+1)) = 1221 bauds
Débit max = 20*106 / (64 * (0+1)) = 312.500 bauds
Si BRGH = 1 (haute vitesse)
Débit = Fosc / (16 * (SPBRG + 1))
Ou encore
SPBRG = (Fosc / (Débit * 16)) – 1
Les limites d’utilisation sont (avec notre PIC à 20MHz) :
Débit min = 20*106 / (16 * (255+1)) = 4883 bauds
Débit max = 20*106 / (16 * (0+1)) = 1.250.000 bauds

RCREG : La lecture de la donnée reçue ce fait par l'intermédiaire de ce


registre.

TXREG : l'émission des données se par ce registre.

Conclusion concernant la partie hardware du µC:

Comme cité plus haut, ce chapitre a traité des ressources et


périphériques utilisés dans notre application.
Le timer2 calcule le temps écoulé en secondes le système
d'interruption du PORTB fait la gestion des bouton poussoirs pour pouvoir
régler les temps de notre minuterie, le port série sert au transfert des temps
de déclenchement de la sirène et le Timer0 est utilisé pour la commutation
des afficheurs sept segments qui sont utilisées comme support d'affichage et
c'est l'objet du prochain chapitre.

Etapes suivie dans la programmation du µC :


Après avoir vu la partie hardware du µC et avoir expliqué les
ressources les plus importantes voici dans quelques lignes au plutôt quelques
pages les différentes étapes suivies dans la programmation de ce dernier.

La première chose est la création du programme source lui-même


qui fait tourné le µC de la manière désirée par le programmeur pour cela le
logiciel MPLAB fournie par MICROCHIP le fabricant du µC est un outil
indispensable et très puissant dans l'édition et la compilation du programme
source.

Après compilation et création du fichier objet autrement dit le


fichier hexadécimal à partir fichier assembleur (le source) vient ensuite l'étape
d'envoi de ce dernier dans la mémoire programme du µC

Voici une vue général de ces deux logiciels qui servent a la programmation
des µC MICROCHIP

MPLAB IDE V 7.40 :

MPLAB est un outil de développement pour tout type de Pic, il


présente l'énorme avantage d'être gratuite. On le télécharger sur le site de
[Link]
C'est dans l'interface de ce logiciel plutôt convivial et facile ou l'on écris les
programme du Pic, pour différentes applications et après avoir terminé ce
dernier converti le programme assembleur ([Link]) vers le [Link],
prés à étre chargé dans le µC.

Compilation
Les Instruction A111FF100001
Du programme E111110C0001
B1010100
[Link] [Link]

:Création d'un projet sous MPLABE

Méthode pratiquée:

La figure ci-dessous montre l'aspect de l'interface de la dernière


version du logiciel MPLAB voici une méthode pratiquée pour la création d'un
projet.

On crée d'abord un nouveau répertoire ou doit être crée à son tour


notre projet dans ce dernier on crée le fichier source en d'autre termes le
fichier ayant une extension .asm a partir par exemple d'un fichier .txt il suffit
seulement de changer l'extension par exemple Sirè[Link].
1. dans la bar des menus choisir le menu Project et dans le menu contextuel
qui s'affiche choisir project wizard la fenetre ci-dessous s'affiche.

2. cliquer sur suivant :


3. cliquer sur suivant : dans la fenêtre qui s'affiche choisir le µC utilisé et
appuyer sur suivant.

4. après avoir cliqué sur suivant deux fois la fenêtre ci-dessous s'affiche et
c'est la où on doit nommer le projet et pointer ver le répertoire de
destination.

5. cliqué sur terminé.


Le logiciel Ic Prog 1.05D:

Définition:

Ic proge 1.05D est un logiciel qui fait charger les microcontroleurs de la


famille MICROCHIP spécialement les Pic avec le Fichier .HEX crée par
MPLAB vu dans le paragraphe précédant, on peut le télécharger gratuitement
sur le site Web de son concepteur : [Link]

Méthode d'initialisation d' ICPROG sous Windows XP Professionnelle:

Assurez-vous dans un premier temps de disposer des trois fichiers


suivants dans votre répertoire contenant ICPROG, tel que :

Celui de gauche, représente le fichier d'aide [Link], celui


de droite exécutable du logiciel [Link] et enfin celui du centre le
fichier système [Link] nécessaire au fonctionnement sous Windows
XP.

Lancez [Link], vous obtenez le message suivant :

Cliquez sur OK.

Paramétrez le Hardware Settings comme ci-dessous pour un


fonctionnement correct avec le présent programmateur sur port série (utilisez
votre propre configuration pour un programmateur différent) :
Cliquez sur OK.

La fenêtre principale du logiciel apparaît.

Cliquez dans la barre d'outils sur l'icône . Sélectionnez l'onglet


Misc, cochez la case Enable NT/2000 Driver. Une boite de dialogue s'ouvre et
vous demande si vous souhaitez redémarrer ICPROG. Cliquez sur YES.

Au redémarrage (automatique) d'ICPROG, ce dernier vous demande


l'autorisation d'installer le driver. Cliquez sur YES.
ICPROG est désormais opérationnel sous Windows XP...

Permet de parcourir choisir le fichier .Hex Permet de choisir le Pic

Les boutons opérationnells :

Celui qui est à droite Pour effacer le Pic


Celui qui au milieu Pour charger le pic ([Link])
Celui qui a gauche Pour lire le contenu de pic

La mémoire programme de Pic 16fXXX contient 14 bits c'est pour ça vous


voyez 3FFF
En Binaire c'est B' 11111111111111' veut dire que la case mémoire est Vide.
NB: le carre en rouge c'est notre programme.

Introduction :
Il existe plusieurs moyens pour donner l'information aux
utilisateurs de n'import quel système ou appareils, le choix de l'un de ses
moyens est fait selon plusieurs critères, on peut citer :

- Le prix.
- La Disponibilité.
- La facilité de son pilotage.
- Les dimensions.
- …

Le plus indiqué pour notre application et après avoir réellement


cherché des solutions adéquates est l'afficheur sept segments et cela pour
plusieurs raisons :

- Le prix, bien sur c'est le facteurs le plus important dans tout


développement.
- Affichage uniquement des nombres donc ila aucun besoin pour d'un
afficheur LCD ou graphique.
- Facilité de pilotage cité dans les critères.
- Disponibilité, pour cette raison les afficheurs sept segments aux
dimensions qu'on cherche sont disponibles sur le marché mais leurs
prix tellement élevés qu'on a opté pour sa création a base de LEDs.

L'afficheur sept segments n'est rien d'autre qu'un ensemble de


LED ou leurs anodes ou bien leurs cathodes sont reliées ensemble formant
un outil d'affichage qui permet de visualiser les chiffres décimaux. La figure
ci-dessous montre son aspect.

Figure 1 Aspect d'un afficheur sept segment

Les différents types de l'afficheur 7 segments:

Il existe deux types d'afficheur 7 segments :


1er les afficheurs cathodes communes:

Ce sont des afficheurs qui ont les cathodes de leurs LED


segments regroupés dans une seule sortie donc pour allumer la LED
Segment "A" par exemple il nécessite seulement D'envoyer +5V dans le
bus A . Voir la figure ci-dessous

Figure 2 Afficheur cathode commune

2 me les afficheurs anodes communes:

Ce son des afficheurs qui ont les anode de leurs LED ou bien
segments regroupés dans une seule sortie donc pour allumer la LED, le
Segment "A" cette fois il nécessite de shunté sa cathode a la masse.

Figure 3 Afficheurs anode commune Figure 4 Circuit de pilotage

Pour notre projet on a réalisé un afficheur 7 Segments à laide de


plusieurs LEDs (84) de type cathode commune ça veut dire que dans chaque
Segments on a raccordé 3 LED en séries et les cathodes d LEDs regroupés
dans une seule sortie voir la figure 3.

Figure 5. Aspect d'un segment

Remarque :

Dans notre cas l'alimentation des segments doit se faire avec une
tension supérieure a 5.4 V car le seuil des LED utilisées en série est égale a
cette valeur sachant que le seuil d'une LED rouge est de 1.8 V, notre choix
c'est porté sur la tension de 12V car elle est utilisée aussi pour alimenté des
relais.
Dans ce cas une résistance de limitation de courant et un transistor
d'adaptation sont indispensables car le pilotage se fait par le µC.

Calcule de la résistance de protection :

Le circuit électronique simplifie pour un seule segment est le


suivant :

Figure 6 Mails pour une LED

Suivant la loi des mails, la somme des tensions dans un circuit fermé est
égale à zéro
Donc:
5V = R x I + 1.8V

C'est une équation a deux inconnus impossible a résoudre mais la solution


vient des datasheets des constructeurs des composants, précisément celui
de la LED et du µC.

La première restriction est le courant maximum pour une LED rouge qui est
de 60 mA.
La deuxième est que le courant maximum que le µC peut délivré est de 25
mA.
La troisième est le facture consommation, sachant qu'avec un courant de 5
mA la LED s'allume d'une manière très satisfaisante donc on va l'assumé
pour le reste des calcules.

L'équation devient :
5V = R x 5 mA + 1.8V

R = (5-1.8)/0.005
R = 64 Ω
On prendra une valeur supérieur peur évité la tolérance des composants et
diminué encre la consommation.
Le circuit d'adaptation le CD4511 :

Les afficheurs 7 segments peuvent être pilotés directement, donc


pour chaque segment il nous faut une linge de commande et pour 4 afficheurs
il nous faut 28 lignes, ce nombre peut être réduit en utilisant le multiplexage et
pour en faciliter son pilotage et réduire encore ce nombre en utilisant le
décodeur BCD 7 segments le 4511.
Avant d'expliquer le fonctionnement de ce circuit une vue générale sur le
codage des nombres est indispensable :

Codage des nombres :

Un code constitue une correspondance entre des symboles et des


objets à désigner. Les codes sont pondérés : dans une base de travail
donnée, la valeur d’un rang donné est un multiple par la base de celle du rang
inférieur. D’autres codes ne sont pas pondérés, c’est à dire que la position
d’écriture ne correspond pas à un poids des autres. Ils ne permettent pas
d’effectuer d’opérations arithmétiques.

Code décimal codé binaire (DCB)

Dans ce codage (BCD, Binary Coded Decimal en anglais), chaque


digit décimal est écrit en binaire puis tous sont juxtaposés. Cette
représentation est commode pour traiter les nombres dans le mode de
représentation le plus adapté à l’opérateur humain (lors d’un affichage par
exemple).

Exemple :

7239 = 0111 0010 0011 1001 DCB =


(1110001000111)2.

7 2 3 9

Le décodeur BCD / 7 segments (4511):


Le décodeur BCD / 7 segments permet de commander un
afficheur 7 segments. Il dispose de 7 sorties, notées a, b, c, d, e, f, g
correspondant chacune à un des 7 segments de l’afficheur ou bien les tous.
Le segment "a" est évidemment relié à la sortie "a" du décodeur et
s’allume ou s’éteint suivant l’état électrique de la sortie (allumé si niveau haut,
éteint si niveau bas).
Les entrées sont au minimum de quatre. On notera les quatre
entrées principales E3, E2, E1, et E0. Elles représentent le nombre binaire E3
E2 E1 E0 (E3 étant le bit de poids le plus fort et E0 celui de poids le plus
faible) à afficher
L’état des sorties du décodeur dépend du nombre binaire à 4 bits que l’on a
en entrée. Ce nombre binaire est affiché en décimal sur l’afficheur à 7
segments
Avec un afficheur à 7 segments, on ne peut afficher que les 10 premiers
chiffres de 0 (0000 en binaire) à 9 (1001 en binaire). Si le nombre en entrée
du décodeur est supérieur à 9, l’affichage ne représente plus un nombre et
dépend du type du décodeur.

Brochage du 4511 (Décodeur BCD/7Segments) :

Pin 1………
Sont les entrées
B
Destinées à recevoir
Pin 2………
Les 4 bits du code BCD.
C
Pin 6………
D
Pin 7………A

Pin 15….....f
Pin 14….…
g Pilotes les segments
Pin 13….… De l'afficheur à
a Cathode commune. Figure 7 Brochage du 4511
Pin 12….…
b
Pin 11….…c
Pin 10….…d
Pin 9….…e

Pin 3……… Pins de


LT Configuration
Pin 4………
BL
Pin 5………LE

Pin 3……...vdd
Alimentation
Pin 4………vss

L'entrée LT, pour lamp test (broche 3) permet d'allumer tous les segments de
l'afficheur.
L'entrée BL (blanking) permet d'éteindre l'afficheur.
L'entrée LE/STROBE permet de "geler" un chiffre sur l'afficheur.

Configuration du décodeur 4511 :

Le tableau ci-dessous donne les Configurations possibles du 4511 pour avoir


un affichage normale il faut que BI et LT Branché au VDD et EL branché au
VSS et le code BCD ne dépassent pas le 9 (de 0000 -1001) s'ils dépassent 9
l'afficheur n'affiche rien (BLANK)

NB:Pour configurer le 4511 il faut voir son datasheet


H: High state +V ou 1
L: Low state –V ou 0

Visualisation des chiffres :

Figure 8 Aspects visuels des afficheurs

pour terminer, Voici le tableau de vérité du décodeur :

Tableau de vérité du 4511


Conclusion :

Le choix de l'afficheur 7 segments, du décodeur BCD 7 segment


4511 ainsi que du multiplexage est fait pour optimiser notre système et le
rendre de plus en plus performant, le 4511 pilote directement les afficheurs
donc il doit être alimenté par 12V ce dernier et piloté lui-même par le µC mais
ce dernier ne fonctionne qu'avec une tension de 5V donc un circuit
d'adaptation est indispensable, il construit a base de transistor.

Le circuit d'adaptation:

Ce circuit est rendu indispensable car Les tensions de sorties du


µC sont de 5V sous un courant maximum pour une broche de 25 mA par
contre le circuit décodeur doit être alimenté avec une tension de 12V car
chaque sortie pilote trois LED de chaque segment de l'afficheur donc ses
entrées sont pilotés avec cette même tension, on a essayé de les piloter avec
le 5V on reposant sur le schéma donné dans le datasheet du circuit mais
sans aucun résultat , la figure 8 montre le circuit électronique de l'adaptateur
pour une seule broche.

Figure 9 Circuits adaptateur pour une broche


Explication :

La base du transistor est polarisée par la tension provenant de


l'état logique envoyé par le µC donc 0V ou 5V le rôle de la résistance de
base est de limiter le courant entrant du transistor tandis que sur le circuit
collecteur la tension de 12V est acheminée au circuit décodeur via la
résistance R2 qui est une résistance de tirage et non de protection car les
entrées du 4511 possédant des résistance d'entrées très grandes.

Remarque :

Ce circuit inverse l'état logique envoyé par le µC car lorsque il


envoie un état logique 1 le transistor est saturé donc l'état logique présent sur
l'entrée du 4511 est 0 logique et vice-versa. La solution pour cet inconvénient
est gérée par logiciel.

Introduction :

Pour rendre notre système plus performant et facile à l'utilisation on


a pensé à charger tous ses paramètres de fonctionnement via le port série et
cela en créant un logiciel avec une interface graphique conviviale et simple.
Le choix du port série n'est pas fortuit car la majorité des logiciels de
développement le prend en charge et d'autre part aussi la majorité des µC
possède un port série, voici les détails de ce système de liaison.

Le port série (RS232) :

A l'origine les ports série permettaient uniquement d'envoyer des


données, mais pas d'en recevoir, mais les ordinateurs actuels son équipé par
des ports séries bidirectionnels donc on a besoin de deux fils pour effectuer
la communication.

Les types de liaison :

La liaison asynchrone :
Dans laquelle chaque caractère est émis de façon irrégulière dans
le temps (par exemple un utilisateur envoyant en temps réel des caractères
saisis au clavier). Ainsi, imaginons qu'un seul bit soit transmis pendant une
longue période de silence... le récepteur ne pourrait savoir s'il s'agit de
00010000, ou 10000000 ou encore 00000100...Afin de remédier à ce
problème, chaque caractère est précédé d'une information indiquant le début
de la transmission du caractère (l'information de début d'émission est appelée
bit START) et terminé par l'envoi d'une information de fin de transmission
(appelée bit STOP, il peut éventuellement y avoir plusieurs bits STOP)

La liaison synchrone :

Dans laquelle l’émetteur et le récepteur sont cadencés à la même


horloge. Le récepteur reçoit de façon continue (même lorsque aucun bit n'est
transmis) les informations au rythme où l'émetteur les envoie. C'est pourquoi
il est nécessaire que l'émetter et le récepteur soient cadencés à la même
vitesse. De plus, des informations supplémentaires sont insérées afin de
garantir l'absence d'erreurs lors de la transmission.

Lors d'une transmission synchrone, les bits sont envoyés de façon


successive sans séparation entre chaque caractère, il est donc nécessaire
d'insérer des éléments désynchronisation, on parle alors de synchronisation
au niveau caractère.

Le principal inconvénient de la transmission synchrone est la


reconnaissance des informations au niveau du récepteur, car il peut exister
des différences entre les horloges de l'émetteur et du récepteur. C'est
pourquoi chaque envoi de données doit se faire sur une période assez longue
pour que le récepteur la distingue. Ainsi, la vitesse de transmission ne peut
pas être très élevée dans une liaison synchrone.

Pour notre application La communication série se fait de façon


asynchrone, cela signifie qu'aucun signal de synchronisation (appelé horloge)
n'est nécessaire: les données peuvent être envoyées à intervalle de temps
arbitraire. En contrepartie, le périphérique doit être capable de distinguer les
caractères (un caractère a une longueur de 8 bits) parmi la suite de bits qui lui
est envoyée...
C'est la raison pour laquelle dans ce type de transmission, chaque
caractère est précédé d'un bit de début (appelé bit START) et d'un bit de fin
(bit STOP).

Un ordinateur personnel possède généralement deux ports séries


(certains de ces ports possèdent des connecteurs DB9, d'autres des
connecteurs DB25).

Figure 1 Connecteur série Male DB9


Brochage du port série:

Signal In/Out PIN

Carrier Detect In 1

Receive Data In 2

Transmit Data Out 3

Data Terminal Ready Out 4

Les Signal Ground - 5 deux broches


principales sont les
broches de Data Set Ready In 6 transmission
des données 2 et 3, la broche
d'émission d'un équipement est
Request to Send Out 7
reliée à la broche de
réception de l'autre (câble
croisé). Les Clear to Send In 8 autres broches
sont utilisées pour les
protocoles de Ring Indicator In 9 transmission.

Niveaux de tension :

Dans une liaison RS232

- Le 1 est défini par une tension de -3V à -15V


- Le 0 par une tension de +3V à +15V

Cela tolère des baisses de tension importantes en ligne

Les tensions logiques sur un équipement informatique sont en


général de 0 et 5V. Un circuit d'adaptation est nécessaire pour convertir ces
tension en +/- 10V et réciproquement.
Le circuit MAX232 est destiné à cette fonction. La batterie de 4
condensateurs dont il est équipé permet de générer les tensions de +8,5V et -
8,5V à partir du 5V.

Protocole de communication :

Format des trames :

Au repos, la ligne est à 1. Un passage à 0 indique que la transmission va


commencer, c'est le bit de START.

- Les bits de données sont ensuite transmis sur un format de 7 ou 8


bits.

- Un bit de parité peut être ajouté pour vérifier la validité des données.

- Un ou deux bits de Stop terminent la transmission pour le retour au


repos de la ligne.

Figure 2 Les différents bits Constituant un octet dans le protocole du port série

Le bit de parité est tel que la somme des bits à l'état 1 est paire, dans le
cas contraire, il y a eu une erreur de transmission. Il est aussi possible de
travailler avec un nombre
Impair de bits.

NB : 2 erreurs de transmission s'annulent.

Débit des données :

La vitesse de transmission caractérise le nombre de bits transmis


par secondes. Elle s'exprime en bauds. Les valeurs courantes sont entre
300 et 9600 bauds

Exemple de configurations :

Exemple 1 :

4800, 8, n, 1 : 4800 bauds, 8 bits de données, pas de parité (no), 1 bit de


stop
Exemple 2 :

600, 7, p, 2 : 600 bauds, 7 bits de données, 1 bit de parité, 2 bit de stop.

Notre configuration :

9600, 8, n, 1 9600 bauds, 8 bits de données, pas de parité (no), 1 bit de


stop.

Ces informations sont nécessaires pour configurer les deux


équipements de transmission

Le max 232 :

Le MAX232 est un circuit électronique qui fait l'adaptation entre le


port série et le µC car du coté du port série la norme électrique et la forme
logique des signaux n'est pas la même que du coté du µC.

D'une part le port série travaille avec les états logiques et électriques
suivants :

- +12V pour l'état logique 0.


- -12V pour l'état logique 1.

D'autre part le µC travaille avec les états logiques et électriques suivants :

- +5V pour l'état logique 1.


- -5V pour l'état logique 0.

Etude de l’alimentation :

La construction du bloc d’alimentation pour n’importe quel appareil


électronique requiert de savoir les besoins en courants, tensions et
puissances de se derniers, car un choix important existe dans le types et le
dimensionnement des composants constituants l’alimentation, le choix de l’un
de ses types se fait en se basant sur plusieurs critères, voici les plus
importants :

 Puissance demandée et rendement de l’alimentation.


 Tensions ET courants requis.
 Complexité de l’étude et de la réalisation.
 Disponibilité des composants.
 Coût global.
 …
Voici maintenant quelques types d’alimentation du moins les
plus utilisées, et les caractéristiques de chacune d’elle :

Alimentation a découpage :

Elle repose sur le principe suivant : la tension 220V efficace


issue du secteur est redressée, filtrée ensuite appliquée au collecteur d’un
transistor (ou MOSFET, montage push-pull…) de puissance à travers le
primaire d’une bobine d’un transformateur impulsionnels, cette tension est
hachurée à une fréquence très grande de l’ordre de 100 KHz ce qui nous
permis de réduire les dimensions du transformateur. Du coté du secondaire
un redressement simple et un filtrage avec un petit condensateur suffisent.

Figure 1 Schémas de principe d’une alimentation à découpage

Le grand avantage de ce type d’alimentation est son rendement important


pour des puissances supérieurs à 100 watts et des dimensions physiques très
acceptables. Et son défaut majeur est la non disponibilité des composants,
études complexes et rapport rendement/coût global médiocre pour des
puissances inférieurs a 100 watts ce qui est notre cas.

Alimentation stabilisée linéaire :

Son principe est le suivan : la tension 220V efficace du secteur est


abaissée à l’aide d’un transformateur abaisseur puis redressée, vient ensuite
le filtrage et la régulation la ou elle est requise.
Son principalle avantage est le coût réduit et la disponibilité des composants
par contre son défaut et le rendement faible en puissance et les dimensions
élevées du transformateur.
Cette alimentation est la plus indiquée pour notre montage car la puissance
demandée ne dépasse pas les 5VA donc rendement acceptable, un coût
réduit et son étude est relativement simple. La figure 2 montre le schéma
électrique de notre alimentation.

A B C
+12V -

Figure 2 Schémas d’une alimentation stabilisée linéaire

Le transformateur utilisé est un transfo 9V (efficace) 400mA


- -12V
précédé par un fusible de protection et un switch de marche/arrêt la tension
issue de ce dernier est redressée par un pont de créatz donc double
alternances pour avoir un bon filtrage même avec un condensateur chimique
A) valeur,
relativement de faible le signale de 12V
sa tension de avent redressage
claquage doit être supérieure au
moins de 30% par rapport à la tension réelle appliquée à ses bornes, les
condensateurs C3 et C1 sont des condensateurs de découplage, leurs rôle
est d'éliminer les perturbations et les parasites de haute fréquence, il servent
+12V
aussi a équilibrer le fonctionnement du régulateur pour que ce dernier n'entre
-
pas en oscillation. La régulation est effectuée par un régulateur intégré vu ça
simplicité, son prix et son courant de sortie qui est largement supérieur à nos
- +0.6V voir datasheet.
besoins La figure 3 montres la forme des signaux aux
différents points de l'alimentation :

C) le signale continu de 12V après redressage

Figure 3 Forme des signaux aux points A, B et C de l'alimentation

B) le signale continu de 12V après filtrage


Notre montage requièrt la présence continuelle d'électricité car c'est
un system basé sur le comptage du temps pour cela la présence d'une
alimentation de secours est indispensable. Cette dernière est construite
autour d'une batterie ayant une tension inférieure a celle de l'alimentation et
une diode D1 qui assure le blocage de la tension secteur pour ne pas
perturber la batterie, cette dernière est raccordée aux bornes du
condensateur de filtrage C2 voir la figure 2. Elle est de type 1N4004.
Remarque : la batterie doit être une batterie de 9Vmax ou inférieure jusqu'à
6V min pour ne pas être au dessous de la tension requise par le régulateur.

Donc quand la tension secteur est présente ou absente on à deux cas :

1èr cas (présence de la tension secteur) la tension appliquée sur la cathode


de la diode est supérieure à celle de l'anode par conséquence la diode est
bloquée (circuit ouvert) la batterie est au repos.

2 eme cas (absence de la tension secteur) la tension appliquée sur l'anode de


la diode est supérieure a celle de la cathode donc la diode est conductrice,
c'est la batterie qui fait alimentée le montage.

Les Relais :

Comme son nom l’indique, il sert en tout premier lieu à " relayer ",
c’est à dire à faire une transition entre un courant faible et un courant fort.
Mais il sert également à commander plusieurs organes simultanément grâce
à ses multiples contacts. Il permet également la transition entre deux sources
différentes en isolant ces dernières. Il sert pour des temporisations de
verrouillages... bref, les fonctions d’un relais sont aussi nombreuses que
différentes. Voir Figure 4

Figure 4

Caractéristiques

Un relais est caractérisé par :


 La tension de sa bobine de commande, 5V à 220V en général de
faible tension.
 Le pouvoir de coupure de ses contacts, qui est généralement exprimé
en Ampère, 0,1A à 50A. C’est le courant maximal qui pourra traverser
les contacts. Ce courant est se fonctionne à travers plusieurs
paramètres : Constitution des contacts, (cuivre, argent, or, etc.....), du
temps d’ouverture des contacts, de la température ambiante, etc. Il
pourra être continu, alternatif, haché, pulsé, etc.
 Le nombre de contacts souhaités.
 Son emplacement, circuit imprimé, à visser, embrochage, à souder.
 Le type de courant de sa bobine, en général du continu.
 La tension d’isolement entre la bobine et les contacts.
 La gamme de temps pour un relais temporisé.

Fonctionnement:

Un relais " standard " est constitué d’une bobine ou solénoïde qui
lorsqu’elle est sous tension attire par un phénomène électromagnétique une
armature ferromagnétique qui déplace des contacts, voir figure 4 ci-dessous.

Figure 5

Pour notre montage on a choisi deux relais de 12V DC, 220V


ayant un ampérage de 5A, le premier commander une sirène, le deuxième
pour allumer et éteindre les lumières des classes et des labos.
Comme nous avons dis, la commande d'un relais se fait par
appliquer une tension de 5V, 6V ou bien 12V (suivant les caractéristique du
relais). Un changement brusque de tension aux bornes de la bobine crée des
tensions indésirables très élevées. Qui peuvent endommager le collecteur du
transistor le pilotant.
Le pilotage est fait d'une manière numérique donc les passages de l'état
conducteur a l'état repos et vice versa ce fait d'une manière très rapide. Or la
tension aux bornes d'une bobine s'exprime comme suit : V=L
di/dt ……………………… 1
A l'état conducteur un courant important traverse la bobine soudainement ce
courant disparais et cela pendant un temps très court donc on se referant a la
lois 1, une différence de tension très grande née aux bornes de la bobine.
Pour éliminer ses tensions parasites la solution est de mettre une diode qui
s'appelle (Diode roue libre) connectée en inverse et eu parallèle avec la
bobine voir Figure 6.

BC 337

Figure 6

La bobine de notre relais nécessite une tension de 12V pour


fonctionner et notre µC (pic 16F876A) ne fonctionne qu'avec des tension de
5V et ne peu fournir que des courants de 25ma max pour une pins alors
l'utilisation d'un transistor de commutation s'avère indispensable.

Le choix de ce dernier est fait en se basant sur plusieurs critères les plus
important qui sont :

- Courant collecteur max.


- Tension collecteur max de claquage
- le Rapport de l'amplification β
- les Dimension …..Etc.
- Le prix

Notre choix final s'est porté sur un transistor de la famille BC qui satisfait
amplement nos exigences sa référence complète est BC337 voir la figure 6,
se dernier fonctionne en mode saturation blocage.
- lorsqu'on applique un 5V à sa base le transistor est saturé.
- lorsqu'on applique un 0V à sa base le transistor est bloqué.

Calcule de la résistance de la base:

Ce calcule est obligatoire pour protéger le pic et limiter le courant


fourni par ce dernier.

Pour calculer la résistance de base on suit les étapes suivantes:


1- on suppose que le transistor est saturé et on calcule le courant IC de
saturation.

On sachant que l'impédance de la bobine est de 270Ω et puisque le


transistor est saturé donc la tension collecteur émetteur est nulle en se
référant a la figure 7 on peut écrire :

270 Ω

Vce

Figure 7

12V = 270Ω X ICsat + 0V.

Donc : ICsat = 12V/ 270Ω = 0.04A = 40 mA.

2- Le courant minimum qui sature le transistor est donné par la loi :

IBmin = ICsat / β

Donc en sachant que le β du BC337 est : β = 250

IBmin = 0.04/ 250 = 0.18 mA.

3- Suivant la loi des mails dans le circuit de base voir figure 8, la somme
des tensions dans un circuit fermé est égal à zéro voir la figure 7

Donc: 5V = R x IBmin + 0.6V

5V R???
25ma max
Diode base émetteur du transistor

D1

Figure 8
L'équation devient :
5V = R x 0.00018mA + 0.6V
R = (5-0.6)/0.00018
R = 24.44KΩ

On prendra une valeur inférieur peur éviter la tolérance de la


résistance de base et diminué encore cette valeur pour bien confirmer la
saturation, une résistance de 5.6 kΩ suffit largement.

Les Boutons poussoirs:

Les boutons poussoirs sont nécessaires pour fixer l'état logique


des entrées d'un système électronique pour pouvoir communiquer avec ce
dernier est modifier et permettre la modification d'un paramètre, changer un
état ou bien régler un élément.
Pour notre montage on a utilisé les boutons poussoirs pour régler
le temps, on à besoin de quatre boutons poussoirs:

Le premier pour régler les minutes.


Le deuxième pour régler les dizains des minutes.
Le troisième pour régler les heurs.
Le quatrième pour régler les dizaines des heurs.

Pour relier ces derniers au µC il faut fixer l'état logique de repos à 1


ou a 0 et ça nécessite une résistance qui s'appelle résistance de tirage en
Anglais Pull up (état logique 1) et pull down (état logique 0). La figure 8
présentons les deux configurations possibles.

Etat logique 0
Etat logique 1
Figure 9
Le choix de la résistance de tirage est fait de la manière suivante :
La valeur de la résistance ne doit pas être assez petite pour ne pas
consommer inutilement un courant important et ne doit pas être assez grande
pour ne pas être au dessous du courant minimum requis par l'entrée et qui est
un courant assez petit une valeur entre 4,7 K et 50 K est un bon choix. Pour
notre cas on a activé les résistances internes du µC ce qui explique leur
absence dan le circuit imprimé et le schéma électrique. Multiplexé

Les transistors de switchage:

notre montage possede 4 afficheurs 7 segments composés chacun


de plusieurs LEDs et chaque segment est composé lui aussi de trois LEDs,
(le type de notre afficheur est cathode commune) les cathodes de ces
derniers sont sont regroupés dans une seule ligne et envoyés a la
masse à travers un transistor de commutation car les afficheurs sont
mmultiplexés autrement dit il possedent . Voir figure 10.
Quand le transistor est bloqué le point commun des segements est isolé de la
masse donc l'afficheur n'affiche rien et quand le transistor est saturer leurs
point commun est reliée a la masse donc le segment qui est alimenté
s’allume.
Adaptation

2.2k

??? RB

Figure 10

Calcul de la résistance de la base du transistor :

Le calcul se fait comme suit :

1. on calcule le courant IC de saturation :

Pour cela on suppose que le transistor saturé donc Vce = 0

12V = 2200Ω X ICSat + 3 X (1.8V) + VCE

ICSat = 12V - 3 X (1.8V) – 0 / 2200V = 0.003 A = 3 mA.

Le courant de base minimum de saturation :


I csat = β X IBmin

Donc IBmin = I csat / β on sachant que le β = 250

IBmin = 3mA / 250

IBmin = 0.012 mA

Calcule de RB
La maille de base nous permet d’écrire :

5V = RB.3mA + 0.6V
RB = 5V – 0.6 V / 12.6µA
RB = 34.9 KΩ

Pour assurer la saturation et éviter l’inprécision des résistances on proçéde a


la diminution de sa valeur. Une valeur entre 1.5 KΩ a 20 KΩ k peut convenir
notre choix pui s’est porté sur la valeur de 10 KΩ

Pilotage de µC Pic 16F876A:

Pour que le µC pic 16F876A fonctionne d'une manière normale il


faut un minimum de connexion soit satisfait a savoir les broches
d'alimentations, la broche reset et l'entrée de l'horloge externe sur la base de
laquelle les instructions s'exécutent les figures ci-dessous montre les
différents cas possible et le tableau indique les valeurs des condensateurs de
maintient des oscillation a mettre pour différentes valeurs de quartz.
Schéma électrique du RS232 (DB9) et le Max 232:

Les deux broches principales sont les broches de transmission


des données 2 et 3, la broche d'émission d'un équipement est reliée à la
broche de réception de l'autre (câble croisé). Les autres broches sont utilisées
pour les protocoles de transmission.

Vers PC
Du Pic

Figure 11

Les emplacement et les valeurs des condensateurs sont données au


DATASHEET du composant voir la figure 12

Figure 12
Conclusion :

L’objectif de notre travail est de réaliser une sirène programmable


par PC à base du microcontrôleur PIC16F876A ce travail nous a permis de
nous familiariser avec les circuits programmablés et d’une manière générale
avec le monde de l’électronique numérique et analogique.

Les résultats obtenus dans cette étude sont très satisfaisants


surtout du point de vu apprentissage et approfondissement des
connaissances.

Ce travail, nous appris a réaliser des schémas électriques avec le


logiciel EAGLE 4.11 et le dessin des circuits imprimés avec le même logiciel
il nous a aussi permis d’apprendre la programmation des microcontrôleurs et
la création d’interfaces graphiques sous Windows communicant avec un
matériel électronique avec DELPHI.

D’une manière général ce se stage de fin d’étude nous a apportés


un considérable plus a notre formation, ce qui a enrichi nos connaissances
dans le domaine d électronique, notamment en ce qui concerne la gestion du
temps avec des moyens électroniques.

Nous espérons que notre travail va apporter beaucoup d’aides aux


futurs techniciens de notre honorable institut.

Vous aimerez peut-être aussi