Partie 3 Sorties parallèles - LCD Parallel data & Liquid Crystal Display

Documents pareils
ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Introduction au langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Le langage C. Séance n 4

Les structures. Chapitre 3

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Rappels Entrées -Sorties

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

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

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

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

Algorithmique et Programmation, IMA

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

Licence Sciences et Technologies Examen janvier 2010

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

Programmation système I Les entrées/sorties

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

V- Manipulations de nombres en binaire

Description du logiciel Modbus RTU


Date : Note /20 : EVALUATION Nom : Prénom : Classe : Traitement sur mots

Structure d un programme

MANUEL D INSTRUCTION

Evaluation. Partie Quelles sont les possibilités offertes par cette caméra d un point de vue utilisation?

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

Tuto pour connecter une source RVB RGB à un moniteur Commodore / Amiga

Conversion d un entier. Méthode par soustraction

Bien commencer avec un LaunchPad MSP430G et un Breadboard

Architecture matérielle des systèmes informatiques

Leçon 1 : Les principaux composants d un ordinateur

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

Manipulations du laboratoire

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

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

GESTION DES FICHIERS C/UNIX

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

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

CONFIGURATION ET UTILISATION

NanoSense. Protocole Modbus de la sonde Particules P4000. (Version 01F)

Dossier technique. Présentation du bus DMX et Utilisation des options EL13 / EL14 ERM AUTOMATISMES INDUSTRIELS 1 LE PROTOCOLE DMX 2

Compléments de documentation Scilab : affichage de texte et formatage de nombres

MANUEL DRIVELINK DRIVELINK

Système Electronique pour le Monitoring des Chaînes PV

ANALYSE TRAMEs LIAISON SERIE

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Programmation en langage C

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

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

ASR1 TD7 : Un microprocesseur RISC 16 bits

as Architecture des Systèmes d Information

Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS

Logiciel de Base. I. Représentation des nombres

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

PIC EVAL Dev Board PIC18F97J60

Contrôleur DMX 192 canaux avec joystick ET USB PILOT - 192PRO GUIDE DE L UTILISATEUR

Cours 1 : Qu est-ce que la programmation?

Suivant les windows, le signal pour indiquer l imprimante par défaut est un petit rond noir ou vers avec un V à l intérieur.

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

Notice d installation sur le véhicule

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Le prototype de la fonction main()

Représentation d un entier en base b

Architecture des ordinateurs

Chap III : Les tableaux

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

Séverine Marien Maxime Ringard. 2 ème année GEII. Régulateur de charge pour station de recharge photovoltaïque

Version beta. Station Météo 12/11/2012. Réalisation d un Station Météo avec Webserver composée de capteurs Grove et d un module Wifi Flyport.

IV- Comment fonctionne un ordinateur?

Cours Langage C/C++ Programmation modulaire

Configuration de TCPIPconfig.h

Les structures de données. Rajae El Ouazzani

Informatique Générale

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Programmation impérative

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Notions fondamentales du langage C# Version 1.0

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Architecture des ordinateurs Introduction à l informatique

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

GPA770 Microélectronique appliquée Exercices série A

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

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

Quelques éléments de compilation en C et makefiles

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

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

Programmation système de commandes en C

DIALOGUE RS4S232 AVEC TELESURVEILLANCE ET SUPERVISEURS

Cours 6 : Tubes anonymes et nommés

Conventions d écriture et outils de mise au point

Le multiplexage. Sommaire

ScoopFone. Prise en main rapide

Une carte pour vos projets

TD3: tableaux avancées, première classe et chaînes

Rappels d architecture

Guide d utilisation. séries NW-A1000 / séries A Sony Corporation (1)

Transcription:

Cours/TD d informatique embarquée Utilisation d un microcontrôleur MBED Partie 3 Sorties parallèles - LCD Parallel data & Liquid Crystal Display Plan du cours 3.1. Utilisation de sorties parallèles, notion de bus 3.2. Utilisation d'un LCD -Décomposition d'un projet en plusieurs fichiers 3.3. Utilisation de la bibliothèque TextLCD CV C/TD INFO2 - Partie 3 page 1

3.1. Utilisation de sorties parallèles, notion de bus Un bus est un ensemble de fils permettant le dialogue entre un/des composant(s) et un/des contrôleur(s), il peut être du type série ou du type parallèle. Les bus PCI, ATA, PCMCIA sont des bus. Les bus. Sur MBED, BusOut et BusIn permettent et de les traiter comme. L écriture et la lecture sont possibles. Sur le LPC1768, les quatre LEDs présentes sur la carte peuvent donc être manipulées simultanément. De même les 26 E/S numériques peuvent être configurées comme des BusIn ou des BusOut. Les méthodes associées à BusOut sont dans le tableau ci-dessous : BusOut / Fonctions Utilisation BusOut Crée une variable de type BusOut associée à plusieurs broches write Permet l écriture paramètre entier en décimal, binaire (0b...) ou hexa (0x...) read Renvoie la valeur actuellement écrite variable_busout= = est un raccourci de la fonction write() =variable_busout = est un raccourci de la fonction read() Le programme ci-dessous va faire clignoter les LEDs 0000 0101 => allumées pendant 200 ms, puis => allumées pendant 200ms #include "mbed.h" BusOut myleds(led4, LED3, LED2, LED1); int main() { char x; while(1) { x=5; // ou x=0b101; ou x=0x5; myleds.write(x); wait(0.2); x=10; myleds.write(x); wait(0.2); Les noms LED1, LED2 sont des alias équivalents au noms des broches CV C/TD INFO2 - Partie 3 page 2

Exercice 1 : a) Réaliser et tester le programme ci-dessus. b) Réaliser un programme permettant de déplacer la LED allumée de droite à gauche, puis de gauche à droite, puis de droite à gauche... 3.2. Utilisation d'un LCD Nous allons utiliser un LCD 2x16 caractères Circuit driver du type Brochage du LCD : La documentation du circuit driver nous donne le brochage ci-contre. Les broches 15 et 16 existent si le circuit a un rétroéclairage, nous ne nous y intéressons pas. Le circuit doit être alimenté en 5 V (sinon l'afficheur ne s'allume pas) mais les données (théoriquement '0' > 0V et '1' > 5V) peuvent être en 0 / 3.3V L'initialisation se fait en envoyant les instructions aux du LCD. Il faut mettre au niveau bas RS, R/W et E et envoyer alors les instructions sur les bits DB0-DB7. Nous utiliserons le LCD en mode de communication 4 bits (DB4-DB7) afin de limiter le nombre de fils. Après l envoi de chaque instruction, E doit être mis à 1 puis 0 pour valider l envoi de l instruction. Lorsque le LCD a été initialisé, les données à afficher peuvent être envoyées en utilisant DB4-DB7 (RS au niveau ), enfin E doit encore être mis à 1 puis 0 pour valider l envoi des données. CV C/TD INFO2 - Partie 3 page 3

Nous devons associer des sorties numériques du LPC1768 au LCD. Il faut : un bus de bits de données/instructions 2 sorties numériques pour RS et E LCD uniquement en écriture => R/W = 0V (pin 1 du mbed) NB : le brochage sur le mbed n'est pas figé, il a été choisi de façon arbitraire. Câblage et code ASCII des caractères MSB = = ; ex : pour 'T' = 0x54 le MSB vaut Quel programme faut-il réaliser pour piloter le LCD et afficher "HELLO"? Fichier d'en-tête de nos fonctions : LCD.h // LCD.h file #ifndef LCD_H #define LCD_H #include "mbed.h" void display_to_lcd(char value); //fonction d'affichage des carac. void toggle_enable(void); //fonction d'inversion du bit enable void LCD_init(void); // fonction d'initialisation du LCD #endif Fonctions : LCD.cpp // LCD.cpp file #include LCD.h" DigitalOut RS(p19); DigitalOut E(p20); BusOut data(p21, p22, p23, p24); void toggle_enable(void){ E.write(1); wait(0.001); E.write(0); wait(0.001); void LCD_init(void){ wait(0.02); RS.write(0); E.write(0); CV C/TD INFO2 - Partie 3 page 4

//function mode data.write(0x2); data.write(0x8); //display mode data.write(0x0); data.write(0xf); //clear display data.write(0x0); data.write(0x1); //display function void display_to_lcd(char value ){ RS.write(1); data.write(value>>4); data.write(value&0x0f); Progamme principal : main.cpp #include LCD.h" int main() { LCD_init(); display_to_lcd(0x48); // H display_to_lcd(0x45); // E display_to_lcd(0x4c); // L display_to_lcd(0x4c); // L display_to_lcd(0x4f); // O Exercice 2 : a) Réaliser et tester le projet ci-dessus (3 fichiers). b) Ajouter à ce projet une fonction permettant d'afficher sur le LCD une chaine de caractères passée en paramètre. Tester en écrivant le nom de votre professeur(e) préféré(e). c) En utilisant la documentation en annexe (doc. complète disponible sur le réseau), expliquer la succession des codes envoyés dans la fonction LCD_init(). Entourer sur la doc. les instructions de configurations utilisées et donner la valeur des différentes lettres ('0' ou '1'). d) A quoi correspond la mise à 0 ou à 1 de RS? e) Repérer sur le schéma synoptique le registre de données et le registre d'instruction. Par quel composant est réalisé un registre? CV C/TD INFO2 - Partie 3 page 5

3.3. Utilisation de la bibliothèque TextLCD.h Evidemment, il existe une beaucoup plus complète permettant d utiliser le LCD :. Il faut définir la variable MonLCD de type et son brochage simultanément : #include "TextLCD.h" TextLCD MonLCD(p19,p20,p21,p22,p23,p24) //broches associées à //rs,e,d4,d5,d6,d7 NB : le brochage sur le mbed n'est pas figé, il a été choisi de façon arbitraire. La méthode permettant d écrire est printf MonLCD.printf("Hello World!"); Les méthodes locate et cls permettent respectivement de déplacer le curseur et d effacer l écran MonLCD.cls(); // efface l écran MonLCD.locate(3,1); // déplace le curseur ligne 2, 4ème caractère Exercice 3 : Réaliser un programme permettant d'afficher sur deux lignes : "Hello " "World! " CV C/TD INFO2 - Partie 3 page 6

Exercice 4 : #include "mbed.h #include "TextLCD.h TextLCD lcd(p19, p20, p21, p22, p23, p24); // rs,e,d4,d5,d6,d7 int x=0; int main() { lcd.printf("lcd Counter"); while (1) { lcd.locate(5,1); lcd.printf("%i",x); wait(1); x++; Réaliser et tester le programme ci-dessus. Exercice 5 : Réaliser un programme permettant de lire la valeur d'un potentiomètre branché sur la broche 17 et d'afficher la valeur de la tension du potentiomètre en volts sur le LCD (avec 1 chiffre après la virgule). Vérifier la mesure avec un multimètre. CV C/TD INFO2 - Partie 3 page 7

Extrait de la datasheet du circuit driver de LCD HD44780U Schéma synoptique : Instructions de configuration (>> instruction register) : CV C/TD INFO2 - Partie 3 page 8