TP N°1: Jeux de lumière
1-Faire le montage suivant :
2- Ecrire un programme permettant d'allumer la diode branchée dans RB0.TP N°2: Afficheur 7 segments
TP N°3 : Afficheur 7 segments multiplexés
Exemple d'un montage Proteus en utilisant deux Matrice (8X8) [Matrix-8*8-ORANGE]
Fonctionnement du circuit 74LS138
Le circuit intégré 74LS138 est un décodeur/démultiplexeur à 3 entrées et 8 sorties, souvent utilisé dans les systèmes numériques pour la sélection d'adresses.
Caractéristiques principales du 74LS138 :
- 3 entrées (A, B, C) pour la sélection d'une des 8 sorties.
- 8 sorties (Y0 à Y7) qui sont actives à l'état bas (logique 0).
- 3 broches d'activation (E1, E2, E3) : deux broches d'activation à l'état bas (E2, E3) et une à l'état haut (E1). Les sorties ne seront activées que si les conditions sur les broches d'activation sont respectées.
Table de vérité
E1 |
E2 |
E3 |
C |
B |
A |
Y0 |
Y1 |
Y2 |
Y3 |
Y4 |
Y5 |
Y6 |
Y7 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1- Allumer une LED sur l'un des deux afficheurs
2-Ecrire sur l'afficheur à gauche la lettre H
3- Ecrire sur l'afficheur à droite la lettre E
4- Ecrire le message "HELLO". ( Question Bonus)
NB: il faut que le temps d'activation globale des colonnes égale à 50ms
TP N°5: Afficheur LCD
Schéma:
Le squelette du code :
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)
{ }
}
Travail à faire :
1- Ecrire un programme qui permet d'afficher le message " Bonjour"
2- Modifier le programme pour défiler le message affiché comme suit:
3- Écrire un programme permettant de déplacer le message 'Bonjour' vers la droite ou la gauche en fonction de l'appui sur deux boutons poussoirs.
4- Refaire le même travail avec 4 boutons poussoirs.
5- Remplacer le message "Bonjour" par "*"
6- Afficher l'emplacement de "*" en utilisant la fonction rand().
Résumé de cours sur les afficheurs LCD
TP N°6: Utilisation du clavier 16 touches
Ce qu'il faut savoir
Le but de cette séance de TD est
d’écrire en C des fonctions permettant de scruter un clavier de 16 touches et
de donner la valeur de la touche pressée (on parlera de décodage). On supposera
qu’une seule touche est appuyée à la fois.
Le schéma interne du clavier est
décrit sur la figure suivante. La fonction de scrutation/décodage sera appelée par le
programme principal.
Faire le montage suivant.
1. Tester cette portion de code dans la boucle infinie
void main ()
{
Lcd_Init();
ADCON1=0X0F; // Permet de rendre tous les ports numériques.
TRISB=0XF0;
while (1)
{
Delay_ms(50);
LATB=0b00001011;
switch (PORTB)
{
case 0b11101011: LCD_OUT(2,4,"1"); break;
}
}
}
2. Continuer les codes dans la structure switch pour qu’il affiche les chiffres 2 et 3
3. Ajouter maintenant les autres chiffres [4,5,6] et [7,8,9]
4. Mettre le programme principal dans une fonction appelée chiffre()
5. Modifier la fonction chiffre() pour qu'elle retourne le chiffre tapé.
Par exemple: case 0b11101011: LCD_OUT(2,4,"1"); return 1; break;
6. Ecrire un programme qui permet de faire la somme de deux chiffres tapés (NB : ne programmer pas la touche + du clavier).
TP N° 7: Convertisseur Analogique Numériques
Soit le montage suivant :
1- Ecrire un programme qui permet de lire la
valeur numérique du signal analogique venant du broche AN0.
void main() {
adc_init();
TRISB = 0x00;
TRISD = 0x00;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
while(1)
{
Val= adc_read(0);
IntToStr(Val,text);
Lcd_Out(2,1,text);
Delay_ms(1000);
} }
2- Ecrire un code C qui permet d'afficher la
tension en volt du signal analogique
3- Ecrire un code permettant d'ajouter le caractère "|" sur l'afficheur LCD à chaque variation du potentiomètre. L'affichage sera comme suit :
4- Soit un capteur de température qui fonctionne sur une plage de tension définie par l'intervalle suivant [1v,3v] Le potentiomètre peut simuler le fonctionnement d'un capteur de température. Faire l' affichage de la variation de la température sur le composant "bar graph".
La tension de référence sur Proteus se fait en cliquant sur les deux flèches :
TP N° 8: Le Timer 0
Registre ADCON1
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)
7. Programmer le pic pour qu'il positionne le servomoteur à la position 0°
TP N° 9: Commande du moteur pas à pas
1- Faire le montage dans Isis contenant : Des LOGIC STATE, ULN2803 (circuit de puissance) et moteur pas à pas (MOTOR-STEPPER).
Etat des logicState | Angle du moteur |
1000 | -45° |
… |
|
|
|
|
|
Fonctionnement :………………………………….
Etat des logicState | Angle du moteur |
1100 | -90° |
… |
|
|
|
|
|
Fonctionnement :………………………………….
3- En déduire le fonctionnement d’un demi-bas
4- Ajouter un microcontrôleur au montage, puis écrire un programme permettant d'exécuter à chaque appui sur le bouton poussoir les fonctions suivantes :
a) Fonctionnement pas entier couple faible (2 tours)
b) Fonctionnement pas entier couple fort (3 tours)
c) Fonctionnement en demi-bas (4,375 tours)
d) Fonctionnement pas entier couple faible (sens inverse)
Aucun commentaire:
Enregistrer un commentaire