TP1: Montre Electronique
1- Fire le montage ci-dessous :
2- Ecrire un programme qui permet d'afficher le nombre 48 sur deux afficheurs :
3- Modifier le programme en utilisant la fonction affiche_minute():
4- Ecrire un programme qui
permet d'afficher un nombre entré en paramètre dans la fonction affiche_minute(int
m) :
5- Ecrire la fonction affiche_heure (int h) :
6- Ecrire le
programme d'une montre en utilisant les fonctions affiche_minute(int m)
et affiche_heure (int h).
***********************************************
TP2: Timer 0
Le PIC 18F4520 contient 4 modules TIMER.
Deux modes d’interruptions sont possibles : interruption logicielle et interruption
matérielle
Les Timers ou compteurs de temps écoulé permettent :
· De réaliser des temporisations précises puisqu’ils utilisent des
oscillateurs de référence à quartz.
· De générer des signaux électriques 0V / 5V.
· De mesurer des durées.
· De compter des évènements extérieurs sur des fronts montants ou descendants
Principe de fonctionnement (mode 8 bits)
Le registre T0CON (FD5h)
Le registre INTCON . (FF2h)
Calcul du temps avec TIMER0
Le calcul du temps se fait avec cette formule :
T=[1 /(Fosc/4)]*[Vcount - Vinit]*Presc
Avec Fosc : fréquence de l’horloge.
Vcount=28 Débordement du
Timer0
Vinit : valeur initiale a ajouté dans
le registre pour corriger l’erreur du temps
Presc : c’est le pré-diviseur utilisé pour ralentir ou accélérer le
comptage
Travail à faire
Mode
interruption Logicielle
1. Faire un
montage contenant un PIC18F4520 et une diode LED. Configurer le pic avec une
fréquence de 4MHz
2. Tester le
programme suivant
void main()
{
T0CON=0b11000101;
TRISC = 0;
LATC.RC0=1;
while(1)
{
if(INTCON.TMR0IF==1)
{
LATC.RC0=!LATC.RC0;
INTCON.TMR0IF=0;
}
}}
3. Déterminer la fréquence de
clignotement de la diode de deux méthodes :
- Pratique, en utilisant
l'oscilloscope dans Isis
- Théorique, en utilisant la formule
de calcul de temps
4. Programmer le pic pour faire clignoter la diode avec une de fréquence de
20 Hz.
5. Même question avec une fréquence de 3,8 Hz.
6. Nous voulons maintenant commander un servomoteur. Le signale PWM permet la
commande de servomoteur. (voir la figure suivante)
Programmer le pic pour qu'il positionne le servomoteur à la position 0°
Mode interruption Matérielle
Le
système, illustré par la figure suivante, est un odomètre. Ce dernier est un instrument de mesure, permettant de connaître la distance
parcourue par un vélo.
Le système est composé :
D’un capteur effet
hall qui permet de détecter si un
aimant est à proximité. Lorsqu’il n'y a pas de champ magnétique, le capteur à
effet Hall n'est pas activé et par conséquent le signal fourni par le capteur
est à l’état logique bas. Ce dernier passe à l’état logique haut en présence
d'un champ magnétique.
Le capteur à effet hall génère un signal carré si la roue de bicyclette est
en mouvement comme le montre la figure suivante. Le capteur est positionné à l’extrémité de la
roue. Le rayon de la roue est de 3,99 cm.
1. Réaliser le montage électronique suivant ci-dessus ?
2. Écrire un programme qui permet d’afficher la distance parcourue par la bicyclette ?
3. Refaire le même travail avec un afficheur LCD (Montage ci-après)
4. Afficher la vitesse en m/s.
On vous donne le code suivant :
sbit LCD_RS at LATC0_bit;
sbit LCD_EN at LATC1_bit;
sbit LCD_D7 at LATC5_bit;
sbit LCD_D6 at LATC4_bit;
sbit LCD_D5 at LATC3_bit;
sbit LCD_D4 at LATC2_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC5_bit;
sbit LCD_D6_Direction at TRISC4_bit;
sbit LCD_D5_Direction at TRISC3_bit;
sbit LCD_D4_Direction at TRISC2_bit;
void main()
{ LCD_INIT();
while (1)
{ }
}
Exercice Bonus
1- Soit un microcontrôleur fonctionne à une fréquence de 16 MHz. Ecrire un code qui permet de clignoter une diode LED connectée à la broche RC0 à une fréquence de 0,03 Hz.
2- Créez une fonction appelée 'positionnerServo' avec un paramètre 'angle' qui permet de régler l'angle auquel le servomoteur doit se positionner.