Click here to load reader
Upload
truongcong
View
215
Download
1
Embed Size (px)
Citation preview
2AD
Activité FlowCode
Activité Flowcode.doc Page 1 / 8
I. Objectif On souhaite Programmer un MicroContrôleur 16F88 en Vélocimètre. Ce programme est un peu complexe. Il est nécessaire de clarifier certaines astuces de programmation :
• Etude de la Gestion d’un Afficheur LCD • Etude de la Boucle While. • Les sous-programmes. • Test de la présence du Capteur : Rémanence. • Les Interruptions (facultatif)
II. Gestion de l’afficheur 1. Les Routines de Composants :
L’afficheur LCD est un écran qui contient 2 lignes de 16 caractères. Son contrôle est si complexe qu’il contient lui-même un microcontrôleur intégré.
Pour afficher un « a », il faut mettre la patte B5 à 1, puis lui envoyer la première partie du code de la lettre « a » : « 0110 » sur les pattes B0, B1, B2 et B3. Enfin la seconde partie du code : « 0001 » sur ces mêmes pattes… C’est bien compliqué ! C’est pourquoi FlowCode nous propose des Fonctions Préparées pour gérer l’Afficheur :
Effectuer dans
l’ordre :
2/ Faire glisser cet icône « routine composant dans votre organigram-me
1/ Faire apparaître un LCD
3/ Double sur l’Appel de Routine
4/ Sélectionner le LCD puis la fonction souhaitée.
Exemple : PrintString. Préciser le paramètre à afficher : "a" ou "bonjour" et valider.
2AD
Activité FlowCode
Activité Flowcode.doc Page 2 / 8
2. Activité nº1 :
• Créer la routine « Start ». Elle permet de préparer l’afficheur pour fonctionner.
• Créer la routine « Cursor » avec comme paramètres : 0,0 • Créer la routine « PrintString » pour afficher des caractères.
Mettez comme paramètre "Bonjour" avec les guillemets. • Simuler. • Changer le paramètre de la routine « Cursor » avec 1,0 puis 2,0 puis 2,1. • Simuler à chaque fois.
1. A quoi sert le Premier Chiffre ? ........................................................................ 2. A quoi sert le Deuxième Chiffre ? ........................................................................
III. Les Boucles 1. Principe :
La boucle dans un programme est un morceau de programme qui se répète jusqu’à ce que la condition imposée soit fausse. Cette boucle s’appelle boucle « While » (= Tant que).
On place cette boucle dans l’organigramme grâce à l’icône : Avec un double clic, on accède aux Propriétés : Le Nom de la Boucle, la Condition qui doit être vrai pour exécuter la boucle. Ce test peut être fait au Début ou à la Fin de la boucle.
L’option Compteur permet d’avoir une boucle qui se répète plusieurs fois.
2AD
Activité FlowCode
Activité Flowcode.doc Page 3 / 8
2. Activité nº2 : Nous allons créer un chronomètre de 0 à 1000 :
• D’abord, créer la routine « Start » pour l’afficheur • Créer une case « Calcul » pour mettre T = 0. On doit
définir la variable T comme un octet. • Créer une boucle tant que T < 1000. • Dans cette boucle, afficher T puis une case « Calcul » pour
augmenter T de 1. Enfin ajouter une pause de 1 seconde. • Simuler.
Comment s’affichent les nombres sur le LCD ? …………………………………………………………………………………
• Ajouter une Routine « Cursor » pour que le nombre se remette toujours au début. • Changer la pause de 1 seconde en 50 millisecondes.
Le chronomètre fonctionne correctement ? ………………………
• Remplacer la routine « Cursor » par une routine « Clear » pour effacer l’écran. • Simuler.
Quelle est la valeur maximale atteinte par le chronomètre ? ……………
• Double cliquer sur un calcul. Cliquer sur « variable ». Renommer la variable T et choisir l’option « entier ».
• Simuler. Quelle est la valeur finale lorsque le programme a terminé ? ....................... Quelle doit être la condition si je veux que le 1000 s’affiche à la fin ?......................................
2AD
Activité FlowCode
Activité Flowcode.doc Page 4 / 8
IV. Les Sous-programmes 1. Principe :
Pour rendre plus lisible un programme, on peut lui dire d’appeler des sous-programmes. On peut les appeler plusieurs fois. Quand un sous-programme est fini, on revient au programme principal à l’endroit où on l’avait laissé.
Un Sous-programme est aussi appelé MACRO Remarque : Les Routines de composants sont des sous-programmes préparés par FlowCode et
que l’on ne peut pas modifier.
2. Activité nº3 :
• Créer une Nouvelle Macro, et l’appeler : Afficher_Resultat.
• Sélectionner Macro Afficher, puis réduire les fenêtres pour voir vos 2 programmes (principal et Afficher_Resultat)
• Sélectionner tout ce qui est dans la Boucle et Couper (control X) et placer dans Afficher_Resultat (control V)
• Maintenant, dans le programme Principal,
faire glisser l’icône macro dans la boucle. • Dans propriétés, sélectionner la Macro qu’il
doit appeler. • Simuler
2AD
Activité FlowCode
Activité Flowcode.doc Page 5 / 8
V. Test d’une Entrée 1. Principe :
On souhaite que le microcontrôleur détecte le Passage d’un Capteur. On va donc relier ce capteur à une Entrée, par exemple : sur la patte A1.
Quand le capteur n’est pas Présent, il donne 0 Volt. Cette valeur est traduite par un 0 Logique. Quand le capteur est Présent, il donne 5 Volts. Cette valeur est traduite par un 1 Logique. La détection du capteur se fait en 2 Etapes :
1. Le microcontrôleur LIT les valeurs Logiques de l’entrée et la place dans une Variable. C’est la fonction « Input »
2. Ensuite on étudie la Variable, et en fonction de sa valeur, on choisit différentes options.
2. Activité nº4 : On souhaite afficher les
impulsions d’un interrupteur branché sur A1.
• Placer un LCD et un bouton connecté sur A1. • Créer le « Start » pour l’afficheur. • Créer « Calcul » avec Total = 0. • Créer une boucle infinie avec un 1. • Créer « Input » vers la Variable Test, en
précisant bit unique A1. • Vérifier si Test = 1. • Si c’est oui : Augmenter Total de 1, placer le
curseur en 0,0 et Afficher le nombre Total • Simuler en appuyant sur le bouton.
Le comptage est-il correct ? Que se passe-t-il ? ……………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………………………………
2AD
Activité FlowCode
Activité Flowcode.doc Page 6 / 8
3. Conclusion : Le programme exécute la boucle très vite. Donc si le capteur passe
lentement, le programme le détecte plusieurs fois.
Pour éviter ce problème, il existe plusieurs solutions :
1. Quand le capteur est détecté, on fait une pause pour ne pas le détecter 2 fois. Mais il faut donc connaître le temps de passage du capteur.
2. Faire d’abord un test qui vérifie que le capteur n’est pas présent. C'est-à-dire « input » puis « test = 0 ? ». Si Test vaut 0, on teste ensuite si le capteur est présent. C'est-à-dire « input » puis « Test =1 ? » Inconvénient : La grande boucle ne va pas s’exécuter de manière régulière.
3. Créer une autre variable appelée Autorisation. Faire « input » dans test.
Si Test = 0 alors Autorisation = 1. Si Test = 1 alors 2 possibilités : • Si Autorisation = 1, augmenter le Total et
remettre Autorisation = 0. • Si Autorisation = 0 ne rien faire.
Cette dernière solution est plus compliquée mais elle a l’avantage
d’exécuter la grande boucle avec le même Rythme ≈ 1 ms. Si je l’exécute 1000 fois, j’aurai testé le capteur pendant 1 seconde.
2AD
Activité FlowCode
Activité Flowcode.doc Page 7 / 8
VI. Vélocimètre On Souhaite Mesurer la Vitesse d’une Roue. Nous avons placé 6 encoches sur cette roue. Le programme doit compter les Encoches pendant 1 seconde. Donc il faut préparer une Boucle de 0 à 1000 avec une pause de 1 ms à l’intérieur.
Dans cette boucle appelée Période, on teste le capteur avec la 3ème
solution de la page précédente.
La Liste des Variables Nécessaires et leur Type : Certaines sont des Entiers car elles dépassent les 255. Voici leur utilisation : Test : Variable qui reçoit l’état du capteur dans « input » et que l’on teste. Periode : Variable qui commence à 30 et qui diminue 1 à chaque fin de la boucle de période. Les
30 boucles doivent durer 1 seconde. Si ce n’est pas le cas, modifier la valeur 30.
Total : Variable que l’on augmente à chaque fois qu’une encoche passe. Elle est en Tour/min. Comment l’augmenter : Il y a 6 encoches. Donc si dans 1 seconde je détecte 6 encoches,
la roue a fait 1 tour en 1 seconde, soit 60 tours/min. Pour que Total soit égal à 60 quand passent 6 encoches, il faut donc l’augmenter de 10 à chaque encoche. Total = Total + 10
Autorisation : Variable que l’on met à 1 si on détecte qu’il n’y a pas d’encoche. Elle autorise l’augmentation du Total si elle vaut 1.
Astuce :
Pour le bouton poussoir, aller dans connexion puis Touche Clavier : Demander à ce que le bouton A1 réponde avec la touche 0 du clavier. C’est plus facile ensuite pour la simulation.
La page suivante vous aide à créer ce gros programme.
APPELER LE PROFESSEUR SI VOTRE PROGRAMME FONCTIONNE
2AD
Activité FlowCode
Activité Flowcode.doc Page 8 / 8
Imprimer la chaîne suivante : " Tours/min L.F.M.DESIGN" Juste avant le "T" :
Mettre 6 espaces Juste avant le "L" :
Mettre 27 espaces
Total = Total +10
periode = periode - 1
La Simulation est Lente : Une boucle jusqu’à 30, 40 ou 50 doit suffire pour 1 seconde
Le vrai 16F88 est très Rapide : On choisira periode = 924