🎯 Objectif

Le but est de réaliser un petit effet de gyrophare rouge et bleu. Le PIC16F877A allumera alternativement les deux LED pour créer un clignotement de type gyrophare.

Ce projet permet aussi de voir le câblage minimum du PIC16F877A : alimentation, broche MCLR, quartz externe et connexion du PICkit 3.

1️⃣ Matériel nécessaire

PIC16F877A sur breadboard câblé avec PICkit 3
PIC16F877A installé sur breadboard et relié au PICkit 3 avant l'ajout des deux LED du gyrophare.

2️⃣ Comprendre le branchement du PIC16F877A

Le câblage principal sera réalisé dans cet ordre :

MCLR / pin 1 → résistance 10 kΩ → +5 V
VDD / pins 11 et 32 → +5 V
VSS / pins 12 et 31 → GND
Quartz 16 MHz → entre les pins 13 et 14
Pin 13 → condensateur 22 à 26 pF → GND
Pin 14 → condensateur 22 à 26 pF → GND
RB6 / pin 39 → PGC du PICkit 3
RB7 / pin 40 → PGD du PICkit 3

La broche MCLR est maintenue à l'état haut avec une résistance de 10 kΩ vers +5 V. Les deux broches VDD et les deux broches VSS doivent être raccordées.

3️⃣ Réaliser le montage des deux LED

La LED rouge est reliée à RB0, broche 33 et la LED bleue à RB1, broche 34. Chaque LED reçoit sa propre résistance de limitation.

RB0 / pin 33 → résistance 220 à 330 Ω → LED rouge → GND
RB1 / pin 34 → résistance 220 à 330 Ω → LED bleue → GND

La patte longue de la LED correspond généralement à l'anode (+) et la patte courte à la cathode (-).

Montage final PIC16F877A avec LED rouge et bleue sur breadboard
Montage terminé : la LED rouge est pilotée par RB0 et la LED bleue par RB1.

4️⃣ Programmer le gyrophare avec XC8

Le quartz externe est à 16 MHz. Le mode d'oscillateur est donc configuré en HS et la fréquence est indiquée à XC8 avec _XTAL_FREQ.

#include <xc.h>

#define _XTAL_FREQ 16000000

#pragma config FOSC = HS
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config BOREN = OFF
#pragma config LVP = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF
#pragma config CP = OFF

void main(void)
{
    TRISBbits.TRISB0 = 0;
    TRISBbits.TRISB1 = 0;

    PORTBbits.RB0 = 0;
    PORTBbits.RB1 = 0;

    while(1)
    {
        PORTBbits.RB0 = 1;
        PORTBbits.RB1 = 0;
        __delay_ms(1000);

        PORTBbits.RB0 = 0;
        PORTBbits.RB1 = 1;
        __delay_ms(1000);
    }
}

5️⃣ Téléverser et tester

Dans MPLAB X, sélectionne le PIC16F877A, le compilateur XC8 et le PICkit 3. Compile puis programme le microcontrôleur.

Une fois la programmation terminée, les deux LED doivent continuer à clignoter en alternance. Si elles ne fonctionnent que pendant la programmation, vérifie MCLR, VDD/VSS et le quartz.

6️⃣ Résultat en vidéo

Résultat final : la LED rouge et la LED bleue s'allument alternativement pour créer l'effet gyrophare.

7️⃣ Essayer un gyrophare plus rapide

Le programme utilise une temporisation de 1000 ms. Pour accélérer l'alternance, remplace les deux délais par 100 ms. Pour une vitesse intermédiaire, utilise 500 ms.

// Plus rapide
__delay_ms(100);

// Vitesse intermédiaire
__delay_ms(500);

📊 Résumé du montage

Élément Connexion / rôle
MCLR / pin 1Résistance 10 kΩ vers +5 V
VDD / pins 11 et 32Alimentation +5 V
VSS / pins 12 et 31Masse GND
Quartz / pins 13 et 14Horloge externe 16 MHz
RB0 / pin 33Commande la LED rouge
RB1 / pin 34Commande la LED bleue
RB6 / pin 39PGC du PICkit 3
RB7 / pin 40PGD du PICkit 3

✅ Conclusion

Ce montage permet de réaliser un premier projet complet avec le PIC16F877A : alimentation, quartz externe, programmation avec le PICkit 3 et commande de deux sorties numériques.

Avec RB0 et RB1, nous obtenons un effet de gyrophare simple que l'on pourra ensuite améliorer avec plusieurs flashs, des timers ou des interruptions.

Pour revoir le premier test sur PORTB, consulte le tutoriel LED clignotante du PIC16F877A.