TP 3 Microcontrôleur. Afficheurs 7 segments

Documents pareils
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire


USTL - Licence ST-A 1ère année Codage de l information TP 1 :

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Introduction au langage C

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Rappels Entrées -Sorties

Quelques éléments de compilation en C et makefiles

Le langage C. Séance n 4

La programmation des PIC en C. Les fonctions, les interruptions.

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Représentation d un entier en base b

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Flowcode - Mode d'emploi

Projet audio. Analyse des Signaux ELE2700

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

La mémoire. Un ordinateur. L'octet. Le bit

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

PIC EVAL Dev Board PIC18F97J60

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

V- Manipulations de nombres en binaire

Bases de programmation. Cours 5. Structurer les données

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Conventions d écriture et outils de mise au point

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Configuration de TCPIPconfig.h

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

as Architecture des Systèmes d Information

Initiation. àl algorithmique et à la programmation. en C

Plan du cours. Historique du langage Nouveautés de Java 7

Série D65/D75/D72 Afficheurs digitaux modulaires

Algorithmique I. Algorithmique I p.1/??

Programmation C. Apprendre à développer des programmes simples dans le langage C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Informatique Générale

BIRT (Business Intelligence and Reporting Tools)

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

UE Programmation Impérative Licence 2ème Année

Outils pour la pratique

Conversion d un entier. Méthode par soustraction

Communication technique TC1552 Ed 01 Date: 22/11/2011

Logiciel de Base. I. Représentation des nombres

SIN-FPGA DESCRIPTION PAR SCHEMA

Codage d information. Codage d information : -Définition-

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Claude Delannoy. 3 e édition C++

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

Analyse de sécurité de logiciels système par typage statique

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Chapitre 1 I:\ Soyez courageux!

Le multiplexage. Sommaire

Programmation en langage C

UE C avancé cours 1: introduction et révisions

Débuter avec PsoC ou PsoC niveau 0

Cours 1 : Qu est-ce que la programmation?

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Introduction à Eclipse

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Algorithmique et Programmation, IMA

À la une Présentation

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Cours 1 : La compilation

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Architecture des ordinateurs

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programmation impérative

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Solutions du chapitre 4

Architecture des ordinateurs Introduction à l informatique

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Programme Compte bancaire (code)

Harp - Basculement des élèves en début d année

ANALYSE TRAMEs LIAISON SERIE

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Description du logiciel Modbus RTU

Mise à jour de la base de données des marques nationales du tourisme

Carte Relais GSM (Manuel Utilisateur)

MAC-TC: programmation d un plate forme DSP-FPGA

PROGRAMMATION D'UN MICROCONTRÔLEUR

Introduction à l algorithmique et à la programmation M1102 CM n 3

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

Langages et Concepts de Programmation Introduction à la programmation en langage C

Génération de code binaire pour application multimedia : une approche au vol

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Programmation système I Les entrées/sorties

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

Les structures. Chapitre 3

_ PARAMETRE DU COMPTE _ ACCEUIL. 1 ere Etape «Créer un compte principal» Créer un compte secondaire. Ouvrir un compte principal

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Transcription:

TP 3 Microcontrôleur Afficheurs 7 segments TAYARI LASSAAD MAITRE TECHNOLOGUE ISET GABES e-mail :lassaad.tayari@isetn.rnu.tn site web :http://systemesembarques.e-monsite.com LE31 Année 2014/2015

1. Objectifs Manipuler les 4 afficheurs 7 segments de la platine EasyPic7. Dans un premier temps, vous mettrez en œuvre un seul afficheur afin de maitriser uniquement la gestion des segments et l'utilisation d'un fichier de définition (.h 1 ). Ensuite, vous devrez multiplexer deux afficheurs. 2. Les afficheurs 7 segments de la carte Easypic7 Un afficheur est constitué de 7 segments identifiés par les lettres de A à G et du point décimal DP. Chaque segment est rattaché à l'une des broches du µc. Pour les activer, vous écrirez dans le registre LATx correspondant au port x, une valeur hexadécimale (mais on pourrait également donner une valeur binaire ou octale) à l'instar de ce que vous aviez fait avec les LEDs au TP précédent. En vous aidant du schéma de l'afficheur, complétez le tableau suivant : Affichage bit7 DP bit6 G bit5 F bit4 E bit3 D bit2 C bit1 B bit0 A Hexa 0 0 0 1 1 1 1 1 1 0x3F 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 Ce tableau représente une opération de masquage qui sera mise en œuvre dans un fichier de définition (.h). Autrement dit, chaque symbole (0, 1, 2 etc.) est remplacé par un mot binaire. Par exemple, le symbole 8 (0000 1000 b ) est remplacé par le mot binaire 0111 1111 b. Mais on pourrait s y prendre autrement et utiliser un tableau de 10 cases pour mémoriser les valeurs hexadécimales. Vous pouvez facilement contrôler les valeurs hexadécimales obtenues grâce à l un des utilitaires de mikroc. Pour l afficher : Tools > Seven Segment Editor. 1 h pour header file ou fichier d'en tête en français TP3 Microcontrôleurs Page 2

Le schéma des connections des afficheurs est rappelé ci-dessous : Questions : 1. Quel port permet de sélectionner l'afficheur actif? 2. Quelles valeurs faut-il envoyer pour sélectionner : a. l'afficheur DIS0?... b. L'afficheur DIS1?... c. L'afficheur DIS2?... d. L'afficheur DIS3?... 3. Quel port permet d'afficher les segments? 4. Est-il possible d'activer 2 segments en même temps? 5. Est-il possible d'afficher 2 symboles en même temps? 6. Quelle est l'utilité du multiplexage? TP3 Microcontrôleurs Page 3

3. Exercice 1 : Gestion de l'afficheur DIS0 seul Votre projet sera ici constitué de 2 fichiers, un fichier principal (.c) et un fichier de définition opérant le masquage (.h). Afin que le compilateur puisse lier le fichier.h au fichier.c, la directive #include sera utilisée. 1. Grâce au tableau que vous avez rempli en page 2, compléter le fichier suivant (fonction mask): // Fichier Display_utils.h unsigned short mask(unsigned short num) { switch (num) { Remarques : case 0 : return 0x3F; case 1 : return... ; case 2 : return... ; case 3 : return... ; case 4 : return... ; case 5 : return... ; case 6 : return... ; case 7 : return... ; case 8 : return... ; case 9 : return... ; - Utilisation du format unsigned short, sur 8 bits (de 0 à 255), ce qui est largement suffisant ici - il est également possible de n'indiquer que le prototype de la fonction dans le fichier.h (càd. seulement la ligne " unsigned short mask(unsigned short num); ") et de coder la fonction dans un autre fichier.c. 2. Remplacer les lettres x et y par les bons ports dans fichier principal suivant : // Fichier principal (DIS0.c) #include "Display_utils.h" void main () { unsigned short i; RCON. IPEN = 0; // Disable priority levels on interrupts INTCON.GIE = 0; // Disable all interrupts TRISx = 0; // Configure Portx as output LATx = 0; // Turn off all 7seg displays TRISy = 0; // Configure Porty as output LATy = 0; // Clear port y while (1) { for (i = 0; i <= 9u; i++) { LATx = 0; // Turn off all 7seg displays LATy = mask(i); // bring appropriate value to PORTy LATx = 1; // turn on appropriate 7seg. display Delay_ms (1000); Remarque : dans la boucle for, la lettre u accolée au chiffre 9 signifie unsigned TP3 Microcontrôleurs Page 4

Avant d aller plus loin, analyser le code. Selon vous, que va faire l afficheur DIS0? 3. Configurer le switch SW4 pour permettre l'activation de l'afficheur DIS0 (SW4.1 on). 4. Créer un nouveau projet (TP3/DIS0), fréquence 32 MHz 5. Dans le Project > Edit Project, ne pas oublier d activer la PLL (8 4 = 32 MHz) 6. Recopier le contenu du fichier DIS0.c et enregistrer 7. Ouvrir une page blanche : File > New > New Unit 8. Recopiez le contenu du fichier Display_utils.h 9. Sauvegarder ce fichier : File > Save As. Sélectionner le type Header File (*.h) 10. Allumer la platine EasyPic7 11. Compiler et programmer (built+program) le µc 12. Vérifier le bon fonctionnement de votre code Modifier le programme afin d utiliser l afficheur DIS1, puis DIS2 et finalement DIS3. 4. Exercice 2 : Gestion de 2 afficheurs - Multiplexage Vous allez maintenant mettre en œuvre 2 afficheurs (DIS0 et DIS1) afin d afficher une valeur qui s incrémentera de 00 à 99. Etant donné qu il n est pas possible de valider simultanément plusieurs afficheurs (en raison du câblage de la carte EasyPic7), il vous faudra basculer de l un à l autre (multiplexage). Si le multiplexage fonctionne bien, le basculement ne doit pas être visible. Dans cet exercice, il sera indispensable de basculer entre les 2 afficheurs en passant par l algorithme suivant : Faire plusieurs fois ( boucle for : for (j = 1; j <= 50; j++) { activer DIS0 afficher le chiffre de poids faible tempo (10 ms par exemple) activer DIS1 afficher le chiffre de poids fort tempo (10 ms par exemple) 1. Autoriser l utilisation des afficheurs DIS0 et DIS1 (switch SW4.1 et.2 on) 2. Créer un répertoire TP3/DISO1/ 3. Coller le fichier Display_utils.h dans ce répertoire 4. Créer un nouveau projet (TP3/DIS01), fréquence 32 MHz 5. Dans la seconde fenêtre du New Project Wizard, ajouter le fichier Display_utils.h 6. Ne pas oublier dans Project > Edit Project de valider la PLL 7. En s appuyant sur l algorithme donné, écrire et tester un programme qui affiche un compteur de 00 à 99 sur les deux afficheurs. Vous utiliserez les opérateurs / (division) et % (modulo reste de la division) : a. Pour extraire le chiffre des dizaines d un nombre «number» : digit = (number / 10u) % 10u. b. Pour extraire le chiffre des unités : digit = number % 10u; 8. Modifier la valeur des temporisations (100 ms) 9. Que constatez-vous? Donnez une explication. 10. Même si la valeur de la temporisation est faible (10 ms ou moins), cette manière de programmer est-elle viable? BON COURAGE TP3 Microcontrôleurs Page 5

ANNEXE S //----------------------------------------------------------------------- // Fichier Display_utils.h (a compléter) //----------------------------------------------------------------------- unsigned short mask(unsigned short num) { switch (num) { case 0 : return 0x3F; case 1 : return 0x..; case 2 : return 0x..; case 3 : return 0x..; case 4 : return 0x..; case 5 : return 0x..; case 6 : return 0x..; case 7 : return 0x..; case 8 : return 0x..; case 9 : return 0x..; unsigned short maskdp(unsigned short num) { switch (num) { case 0 : return 0xBF; case 1 : return 0x..; case 2 : return 0x..; case 3 : return 0x..; case 4 : return 0x..; case 5 : return 0x..; case 6 : return 0x..; case 7 : return 0x..; case 8 : return 0x..; case 9 : return 0x..; TP3 Microcontrôleurs Page 6