Microcontrôleur, scrutation, interruption, temporisation, PICDEM 2 Plus, LCD
Ce document comporte un rapport de travaux pratiques portant sur les microcontrôleurs.
[...] MILLIVOLTMETRE/VOLTMETRE Dans le Main : Application message déroulant application 3 : Montre Fonctions d'initialisation du timer 1 et de la routine d'interruption : Dans le Main : Après avoir fait toutes les initialisations nécessaires au bon fonctionnement du programme nous avons écrit la fonction Main qui fonctionne comme suit : A chaque fois que le compteur « compteur » atteint la valeur 100 on a une seconde et on incrémente donc montre_seconde et on remet le « compteur » à 0. Quand montre_seconde arrive à 60 grâce aux incrémentations à partir de « compteur » on incrémente montre_minute et on remet montre_seconde à 0. Et c'est le même principe pour montre minute et montre heure. [...]
[...] Mise en application : Que réalise cette fonction ? affiche_seconde permet d'afficher sur les LEDs de la carte la valeur binaire de seconde. Code plus concis et main ci dessous III. PRISE EN MAIN DU LCD DE LA CARTE PICDEM2 PLUS: Après avoir compléter les #define Pourquoi on les met dans un fichier .h? [...]
[...] On doit chercher une valeur p la plus petite possible tel que T01 = k.T0max pour avoir une meilleure précision En utilisant cette fonction tempo_1_s , la fonction C s'écrit de la façon suivante : 5.Petite application: on fait clignoter la LED, on l'allume durant 4s et on l'éteint 2s II. UTILISATION DU TIMER1 SOUS INTERRUPTION calcul la valeur T1max de la temporisation la plus grande réalisable avec le TIMER1. On a f=4 p=8 n=16 Tosc=250 ns T1max = f.p.Tosc.(2^n-VI) = 4.8.250ns.((2^16)-0) = 0,524288 = 524,288 ms Explication: A chaque fois que T1max fini sa temporisation il y aura un débordement et donc une routine d'IT mais comme T1max vaut 524,288 ms on ne peut pas incrémenter la variable seconde à chaque interruption 2. [...]
[...] Rapport de travaux pratiques de microcontrôleurs Encadrant : Étudiants : M. 1.UTILISATION DU TIMER0 PAR SCRUTATION 1.La valeur de T0 max: TIMER0 étant un registre sur 8 bits,on a f=4 pmax=256 VI=0 et n=8 T0max = f.p.Tosc.(2^n-VI) = 4.256.250ns.((2^8)-0) = 0,065536 = 65,536 ms Ce n'est pas suffisant pour une temporisation de 1s 2.méthode pour réaliser cette temporisation T01 de 1 seconde : il suffit de répéter la temporisation T01 à plusieurs reprises Mise en pratique: T01 = k.T0max + T0R 1 = k.0,065536 + T0R k + T0R/T0max = 1/0,065536 k + T0R/T0max = 15,25878906 k = 15 ; T0R = T0max.25878906 = 0,065536 * 025878906 = 0,01696010076 ≈ 17ms si k = 15 on aura T01 = 0,983 ms si k = 16 on aura T01= 1,049 ms On prend k = 15 pour réaliser la fonction tempo_1_s. [...]
[...] On les met dans un fichier de type h car ce sont des fichier header ils contiennent les déclarations de fonctions et leurs définitions. Corps de la fonction init_PORTD : Nous avons utilisé les noms symboliques précédemment choisis Pourquoi il est plus structurant d'intégrer cette fonction dans la fonction allume_LCD Pour utiliser le LCD on doit initialiser le PORTD correctement, ainsi, au lieu d'appeler init_PORTD ensuite allume_LCD, il vaut mieux n'appeler que allume_LCD avec init_PORTD à l'interieur de allume_LCD 3. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture