« SE3 2025/2026 EC2 » : différence entre les versions
Aller à la navigation
Aller à la recherche
| Ligne 40 : | Ligne 40 : | ||
''' | ''' | ||
* Le programme configue les broches utilisées comme sorties : | * Le programme configue les broches utilisées comme sorties : | ||
- PB0 pour les données (SER) | - PB0 pour les données (SER) | ||
- PD7 pour l'horloge (CLK) | - PD7 pour l'horloge (CLK) | ||
- PD4 pour la validation (LTC) | - PD4 pour la validation (LTC) | ||
* Un tableau nommé digits contien les codes binaires nécessaires pour afficher les chiffre et les lettres sur l'afficheur 7 segments. | * Un tableau nommé digits contien les codes binaires nécessaires pour afficher les chiffre et les lettres sur l'afficheur 7 segments. | ||
* La fontion affiche_chiffre permet d'afficher un caractère à une position | * La fontion affiche_chiffre permet d'afficher un caractère à une position | ||
- si le caractère est entre '0' et '9' on utilise directement l'index correspond. | - si le caractère est entre '0' et '9' on utilise directement l'index correspond. | ||
-si le caractère est entre 'A' et 'F' on utilise la formule (ascii - 'A' + 10 ) | -si le caractère est entre 'A' et 'F' on utilise la formule (ascii - 'A' + 10 ) | ||
Cela permet de convertir la lettre en index dans le tableau . | Cela permet de convertir la lettre en index dans le tableau . | ||
Version du 13 avril 2026 à 00:44
Objectifs
Réaliser le programme du devoir surveillé concernant la programmation en C sur microcontrôleur AVR :
- vous disposez de la fonction
init_minuteurdu cours ; - vous devez déjà écrire une version améliorée de la fonction
shift_setdonnée en cours/TP :- la version améliorée doit s'appeller
affiche_chiffre, - cette fonction se charge de l'initialisation des registres à décalage du bouclier multifonction au premier appel,
- à chaque appel,
affiche_chiffren'affiche qu'un seul chiffre hexadécimal sur l'afficheur 7 segments, - le premier paramètre de la fonction donne la position où afficher le chiffre (les nombres valides vont de 0 à 3),
- le second paramètre donne le code ASCII du chiffre à afficher (les valeurs valides vont des caractères 0 à 9, et des caractères A à F) ;
- la version améliorée doit s'appeller
- vous écrirez ensuite un programme affichant les nombres de 0 à 9999 (en base 10), un par seconde, puis cyclant en revenant à 0 :
- il vous est imposé d'utiliser une variable globale
char nombre[4];qui contiendra les valeurs ASCII des nombres qui seront affichés sur le 7 segments, - écrivez d'abord la fonction principale
main, initialisant ce qui est nécessaire, puis affichant à tour de rôle (et à l'infini) chaque chiffre sur le 7 segments, - donnez ensuite le code de l'ISR, incrémentant les valeurs contenues dans
nombre(attention ce sont des valeurs ASCII, pour rappel les valeurs sont contiguës de 0 à 9, et de A à F).
- il vous est imposé d'utiliser une variable globale
Matériel nécessaire
- Arduino Uno avec câble USB ;
- bouclier multi-fonctions.
Documents Rendus
Pour cette première étape , je me suis concentré sur la communication avec le 74HC595 du Multi-function Shield. J'ai repris la base de la fonction shift_set vue en TP pour créer une fonction plus robuste nommée affiche_chiffre.
1- Principe de Fonctionnement
Le système utilise un registre à décalage pour envoyer les données à l'afficheur. Trois signaux sont utilisés :
- SER (serial)
- CLK (clock)
- LTC (Latch)
Les données ne sont pas envoyées en parallèle, mais bit pas bit (communication série).
2- Description du programme
- Le programme configue les broches utilisées comme sorties :
- PB0 pour les données (SER) - PD7 pour l'horloge (CLK) - PD4 pour la validation (LTC)
- Un tableau nommé digits contien les codes binaires nécessaires pour afficher les chiffre et les lettres sur l'afficheur 7 segments.
- La fontion affiche_chiffre permet d'afficher un caractère à une position
- si le caractère est entre '0' et '9' on utilise directement l'index correspond. -si le caractère est entre 'A' et 'F' on utilise la formule (ascii - 'A' + 10 )
Cela permet de convertir la lettre en index dans le tableau .
- LA position de l'afficheur est sélectionnée à l'aide d'un masque binaire .
- Les données (motif +position) sont envoyées au regitre à décalage bit par bit et du bit de poinds fort au bit de poinds faible .
- une fois tous les bits envoyés , le signale LTC est activé pour afficher les données sur l'afficheur .
- Dans la fontion main une boucle infinie affiche en continu la lettre 'C' à la position 2 avec un petit délai de 5ms .