TP1 : Afficheur 7 segments


Mise en situation
Le Le travail de ce TP se déroule à deux.
Temps alloué : 3h
La programmation se fait sur PC sous Eclipse Kepler.
La carte estune MyRio de NI
|
Objectif
C4.4 : Développer un module logiciel
Découverte de l'environnement MyRio.
Premier programme en C pour la carte
|
But
Compter sur un afficheur 7 segments de 0 à 9 dans une boucle infinie.
|
Utilisation des sorties numériques : projet existant
- Copier les fichiers du TP0 c:/MyRIO/TP0MyRio dans le répertoire c:/MyRio/TP1MyRio
- Effacer les répertoires Debug et Release s'ils existent
- Lancer Eclise
- Choisir comme Work Space le répertoire c:MyRio
- Importer votre projet (General/Existing Projects into Workspace)
Câblage de l'afficheur 7 segments :
En vous aidant du datasheet de l'afficheur
SA39-11EWA, faire le câblage reliant les sorties DIO de la carte MyRio et les broche de cet afficheur :
Remarque : On pourra mettre prendre comme exemples (non-obligatoire) :
Exemple
Segments | a | b | c | d | e
| f | g | DP | Alim |
Broches Afficheur |
10 | 9 | 7 | 5 | 4 | 2 | 1 | 6 | 8 |
Broches MyRio |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 3.3V |
Programmation :
En vous aidant du TP0 qui initialisait la broche 7 :
Dans un premier temps :
- Déclarer 8 variables globales MyRio_Dio qui correspondront au 8 broches de la carte MyRio.
- Faire une fonction void initAfficheur() qui initialise les 8 broches.
- Faire une fonction void affiche(int chiffre) qui affiche sur l'afficheur un nombre chiffre passé en passé en paramètre. Vous utiliserez un switch/case qui selon le chiffre, allumera/éteindre les 8 segments.
Ex : chiffre = 0 ==> broche DP et g éteintes, les autres allumées.
- Tester vos deux fonctions avec un chiffre fixe.
- Faire une boucle infinie qui comptera toutes les secondes et affichera un compteur de 0 à 9 correspondant à l'unité.
Dans un deuxième temps :
- Déclarer un tableau de MyRio_Dio. Le déclarer dans le main, cela évite les variables globales sources d'erreurs (effets de bord)
- Faire deux fonctions :
- void initPort(MyRio_Dio tab[], int nb) où nb représente le nombre de broches comprises dans le tableau (faire une boucle).
- void affichePort(int chiffre, MyRio_Dio tab[]) qui affiche le chiffre sur le SA39 à l'aide du tab.
- Tester cette nouvelle configuration.

