Modulo LCD: interfacciamento e gestione

Documenti analoghi
Interfaccia seriale per LM709SW

CALCOLATORI ELETTRONICI II

Variabili e Istruzioni

Corso Base Arduino ed Elettronica

Corso di programmazione Arduino DI MALVEZZI DAVIDE

EEPROM SERIALI IN I2C BUS.

L'alfabeto di Arduino

Contatore asincrono esadecimale

I circuiti dei calcolatori, le memorie, i bus. I fondamenti della rappresentazione dell informazione e della sua trasmissione ed elaborazione.

File binari e file di testo

Tutorial Display LCD e PIC

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio.

Corso introduttivo sui microcontrollori A. S

Input/Output di numeri

I CARATTERI E LE STRINGHE

Esame di INFORMATICA Lezione 4

POLMONE PER AVVOLGITORE O SVOLGITORE A GRANDE ACCUMULO MANUALE ISTRUZIONI

INSEGUITORE SOLARE CON ARDUINO. Dispositivo che insegue il movimento solare realizzato con: 1. Arduino 2. 2 foto resistenze 3.

Foglio Elettronico Lezione 1

Davide Gennaretti, Matteo Nicolini

Riprendiamo l esercizio calcolatrice

Alimentatore master. Introduzione

Introduzione a Matlab

Memorie a semiconduttore

Primi passi col linguaggio C

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

Bus RS-232. Ing. Gianfranco Miele April 28, 2011

Sviluppare un programma in FORTRAN

Fortran in pillole : prima parte

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

Note su. Display a cristalli liquidi e il controller/driver HD44780

Caratteri e stringhe

Fogli Elettronici. Idoneità Informatica Prof. Mauro Gaspari

Università degli Studi di Cassino e del Lazio Meridionale

Tecnologie dei Sistemi di Automazione

Moduli combinatori Barbara Masucci

2. GENERALITÀ SUL PROGETTO

Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic.

ESERCIZI DEL CORSO DI INFORMATICA

Sistemi di Elaborazione delle Informazioni

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

La programmazione nel linguaggio C

Passare argomenti al programma

Programmazione modulare

Programmazione web lato client con JavaScript. Marco Camurri 1

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

L INTERFACCIA GRAFICA DI EXCEL

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M.

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232

Indice. Introduzione 15. L hardware 24. Il software 43. Introduzione al linguaggio di Arduino 60. Basi del linguaggio di Arduino 65

Come è fatto un computer

STRUTTURE DI CONTROLLO DEL C++

PSPICE simulazione di circuiti digitali Flip Flop M/S, Moltiplicatore parallelo, Memoria SRAM, sommatore, comparatore

LA FORMATTAZIONE Impostare la pagina, i paragrafi e il corpo del testo

Memorie elettroniche. 1. Parametri delle memorie

Capitolo Tavola e grafico

Perché il linguaggio C?

Circuiti di Indirizzamento della Memoria

Lezione 6 Introduzione al C++ Mauro Piccolo

4 GLI ARRAY E LE STRINGHE

I dispositivi di input/output: il mouse

Rappresentazione binaria delle variabili (int e char)

GENERAZIONE DI FUNZIONE LOGICA CON MULTIPLEXER

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

Componenti e connessioni. Capitolo 3

Il Sottosistema di Memoria

Alunna: Gennuso Ylenia classe VB a.s. 2014/2015

Linguaggio C Informatica Grafica

Qualsiasi programma in C++ segue lo schema:

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

ST11630 MANUALE UTENTE. 16 canali. Luglio rev ST1 16 ch. Hardware&Software 1

Relazione progetto Arduino

Microsoft Word (parte I) Mirko Gombia Università di Bologna

Introduzione al C++ (continua)

Struttura di programmi MAL Elementi lessicali

I Fogli Elettronici (Microsoft Excel)

Scheda Didattica di Sperimentazione.

1 Confezione. Guida di installazione. Monitor LCD per la gestione dei colori. Importante

PER UTILIZZARE LCC IN LAB

Reti logiche (2) Circuiti sequenziali

Capitolo 10 - Strutture

EXCEL: FORMATTAZIONE E FORMULE

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

I dispositivi di input/output

Gestione di files Motivazioni

Mini-dispensa sui puntatori in C

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Lo scanner. Informatica di Base A e B -- Rossano Gaeta 82

Applicazioni dei microcontrollori PIC

Struttura hw del computer

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Rappresentazione dell Informazione

Architettura di un calcolatore

Struttura dei programmi C

TERMINALE INTELLIGENTE

Il Sistema Operativo

UNA CERTIFICAZIONE PER IL FUTURO

CODIFICA DEL TESTO 0???????

Video Scrittura (MS Word) Prima Parte

Transcript:

Modulo LCD: interfacciamento e gestione Per visualizzare messaggi o i dati relativi a misure effettuate si puo usare un display LCD. In figura e rappresentato un LCD a 2 righe e 16 colonne. Il display a cristalli liquidi è, in realtà, solo la parte più appariscente di un Modulo LCD. Il Display LCD è assolutamente inutile senza un circuito elettronico in grado di gestirlo Bisogna acquistare un modulo LCD intelligente in cui, montato su un supporto in vetroresina (circuito stampato), da un lato è saldato il display vero e proprio e sul lato opposto sono presenti gli integrati necessari per la sua gestione. Il più importante tra questi integrati è il controller, quasi sempre il controller Hitachi HD44780,.un componente programmabile chiamato ad un duplice compito: gestire fino a 50 (10*5) pixel per ciascuno dei possibili caratteri alfanumerici (16, 20, 24, 32, 40,..) del display, organizzati su una o più righe assicurare l'interfaccia intelligente tra il visualizzatore e il processore o il microcontrollore (single-chip) cui il modulo è collegato. Nel data sheet del controller si possono trovare tutti i dettagli relativi alla piedinatura, alla struttura interna e al funzionamento del controller. Relativamente al modulo LCD ci limitiamo a studiare: la piedinatura del modulo (per il suo collegamento ad un sistema a microprocessore o a microcontrollore) la sua gestione ( le routine della libreria C18 ) Descriviamo i 16 piedini del connettore del Modulo: pin Nome I/O Descrizione 1 Vss Power Massa 2 Vcc Power +5V 3 Vo Analog Contrasto 4 RS Input Selezione 5 R/W Input Read/Write 6 E Input Abilitazione 7 D0 I/O Data LSB 8 D1 I/O Data 9 D2 I/O Data 10 D3 I/O Data 11 D4 I/O Data 12 D5 I/O Data 13 D6 I/O Data 14 D7 I/O Data MSD 15 A Retroilluminazione + 16 K Retroilluminazione i pin 1 e 2 servono per fornire alimentazione (5 volt); di solito l'assorbimento è contenuto, dell'ordine di pochi ma. il pin 3 è un ingresso analogico al quale si deve fornire una tensione compresa tra 0 e 5V al fine di regolare il contrasto del display, cioè la capacità di rendere più o meno scuri i pixel attivi, al fine di rendere migliore la visualizzazione, in funzione della luminosità dell ambiente; di solito la regolazione si ottiene con un potenziometro da 10 o 20 k.

gli 8 pin (da 7 a 14) del Data Bus sono il supporto per l'informazione bidirezionale tra il processore e il dispositivo, in base all operazione che si sta svolgendo. E possibile anche collegare solo 4 pin D0 D3 oppure D4 D7 avvisando via software il controller che l invio del dato avverra a rate sui 4 pin prescelti talvolta sono presenti 2 pin aggiuntivi (pin 15 e 16), mediante i quali è possibile alimentare l'eventuale luce di retro illuminazione. i pin 4 (RS), 5 (R/W) e 6 (E) servono per il controllo del dispositivo; rispettivamente: RS, detto Register Select indica la natura dell informazione presente sul bus dati: se viene forzato a 0 il byte in ingresso sarà interpretato come un comando da eseguire (istruzione), mentre con un 1 sarà ritenuto dato da interpretare. il livello logico di R/W (Read/Write) specifica la direzione dei bytes sul bus: se vale 0 si sta scrivendo nella memoria interna LCD, mentre con un 1 questa memoria è sottoposta a lettura. Il segnale E (Enable signal) è il segnale di sincronismo: quando passa da 0 a 1 costringe il controller a leggere le linee dato e a interpretare il valore su esse presente Collegamento del modulo ad un sistema a microcontrollore Nell esempio in figura il modulo LCD e collegato alla porta H del microcontrollore 18F8722 in dotazione alle board del Laboratorio. Per l invio dei dati e dei comandi sono stati scelti i 4 bit superiori della porta H (RH4 RH7) che sono stati collegati ai pin D4 D7 del display Per i segnali di controllo la disposizione scelta e stata la seguente: RS RH0 R/W RH1 E RH2

Gestione del modulo LCD Per la gestione del modulo LCD abbiamo utilizzato due files: lcd_4x20.h lcd_4x20.c Nel file h sono presenti le costanti necessarie alla gestione ed i prototipi delle funzioni contenute nel file con estensione.c Le funzioni fanno riferimento ad una disposizione hardware standard prescelta per l interfacciamento del modulo LCD, ma possono essere personalizzate in funzione dei collegamenti prescelti. Nel nostro caso non si è usato il collegamento standard e quindi bisogna modificare opportunamente le impostazioni delle costanti nel file h. Si tratta di modificare alcune costanti definite con la direttiva #define per specificare l associazione prescelta nella disposizione hardware Porta dati e tipo di collegamento ( 8 bit o 4 bit ) la porta usata per scambiare i dati con il PIC #define DATA_PORT #define TRIS_DATA_PORT PORTH TRISH PORTH che il collegamento è 4 bit si lascia commentata la riga /* #define BIT8 */ in modo che, non trovando definita la costante BIT8, viene assunto il collegamento a 4 bit che si usano i 4 bit superiori. Non ci deve essere il commento davanti alla definizione #define UPPER Collegamento delle linee di controllo Bisogna specificare la corrispondenza tra le seguenti linee del modulo LCD ed i bit delle porte del PIC usati nel nostro progetto ed i bit corrispondenti nel registro TRIS associato La linea Register Selector RS (pin 4 del modulo) Piedino H0 La linea Read/ Write R/W (pin 5 del modulo) Piedino H1 La linea di abilitazione E ( pin 6 del modulo) Piedino H2 #define RS_PIN #define TRIS_RS #define RW_PIN #define TRIS_RW #define E_PIN #define TRIS_E LATHbits.LATH0 TRISHbits.TRISH0 LATHbits.LATH1 TRISHbits.TRISH1 LATHbits.LATH2 TRISHbits.TRISH2

Inizializzazione LCD: Funzione OpenXLCD Prima del suo utilizzo il display va inizializzato La funzione OpenXLCD configura I pin di I/O del microcontrollore necessari alla gestione del display imposta il funzionamento del display in modalita 8 bit o 4 bit cancellatil display Prototipo: void OpenXLCD(unsigned char); Al momento della chiamata, avendo collegato il display nella modalita 4 bit, avendo il display piu di una linea (2 nel nostro caso) essendo i caratteri del formato 5x7 specificheremo: Le altre opzioni possibili sono: EIGHT_BIT OpenXLCD( FOUR_BIT& LINES_5X7 ); LINE_5X7 LINE_5X10 (Una sola linea con caratteri 5x7 o 5x10)) Comandi per il display Per evitare all utente: la memorizzazione delle costanti numeriche corrispondenti ai comandi del display l errore di non attendere che il controller sia disponibile a ricevere un comando sono gia definite in libreria le seguenti funzioni di gestione del display tutte del tipo void NomeFunzione (void) XLCDDisplayClear( ); XLCDDisplayOnCursorOff( ) ; XLCDCursorOnBlinkOn ( ) ; XLCDCursorOnBlinkOff ( ) ; XLCDDisplayOff ( ) ; XLCDCursorMoveLeft ( ) ; XLCDCursorMoveRight ( ) ; XLCDDisplayMoveLeft ( ) ; XLCDDisplayMoveRight ( ) ; // Cancella il display // Attiva il display Nasconde il cursore // Il cursore si vede e lampeggia // Il cursore si vede e non lampeggia // disattiva il display // Sposta di un carattere il cursore verso sinistra // Sposta di un carattere il cursore verso destra // Sposta il testo presente sul display di un carattere verso sinistra // Sposta il testo presente sul display di un carattere verso destra

Spostamento del cursore. Funzione XLCDGoto_xy Posizione il cursore sul display. Il testo verra poi visualizzato a partire dalla posizione in cui si e messo il cursore. La funzione non necessita di cicli di attesa prima della sua chiamata. La funzione ha due paramentri: Bisogna specificare nell ordine: in quale colonna desideriamo posizionare il cursore ( coordinata orizzontale 1 16 ) in quale riga si vuole posizionare il cursore (coordinata verticale 1-2) Esempio di posizionamento del cursore: XLCDGoto_xy ( 4, 1); Scrittura di una stringa. Funzione putrsxlcd Scrive sul display una costante stringa immagazzinata nella Rom (nel programma) cioe un insieme di caratteri racchiusi tra doppi apici Esempio: putrsxlcd( Ciao ); scrive ciao sul display. Dove? Dove e stato posizionato il cursore. Vogliamo scrivere al centro della riga 1. Ciao sono 4 caratteri. La riga e composta da 16 caratteri. 16-4 fa 12. lasciamo 6 caratteri vuoti davanti e dopo. Dobbiamo posizionare il cursore in colonna 7. XLCDGoto_xy ( 7, 1); putrsxlcd( Ciao ); Scrittura di una stringa in posizione desiderata. Funzione LCDWriteS Scrive sul display una costante stringa immagazzinata nella Rom Vogliamo scrivere Ciao al centro della riga 1, cioe in colonna 7 Si specifica: la costante da scrivere, la riga, lacolonna. LCDWriteS( Ciao,1,7); In alternativa. Si immagazzina in Rom (fuori dal main) la costante da visualizzare rom const char messaggio[ ]="Buona Sera"; Nel programma si specifica il nome della costante LCDWriteS (messaggio,1,4);

Scrittura di valori numerici Sono presenti in libreria le seguenti funzioni: LCDWriteU LCDWriteI LCDWriteF per la visualizzazione del contenuto di una variabile unsigned char per la visualizzazione del contenuto di una variabile int per la visualizzazione del contenuto di una variabile float Le funzioni richiedono 3 parametri: 1. la variabile da visualizzare 2. la riga a cui si desidera la visualizzazione 3. la colonna a cui si desidera la visualizzazione Se definiamo la variabile reale v float v = 34.567; e aggiungiamo la riga di codice LCDWriteF(v, 2, 7); Visualizzeremo sul display 34.56. La funzione che visualizza i numeri con la virgola mostra infatti solo due cifre decimali e non arrotonda. Le routines cancellano 5 caratteri prima di scrivere per evitare sovrapposizioni con precedenti scritte. Se il numero e piu lungo non funzionano bene e vanno opportunamente modificate. Come si imposta un progetto C18 che richiede la gestione di un modulo LCD 1. Copiare nella cartella del progetto i file lcd_4x20.h lcd_4x20.c 2. Aggiungere nella cartella Header Files il file lcd_4x20.h 3. Aggiungere nella cartella Other Files il file lcd_4x20.c Questo passaggio non e necessario in quanto sotto Other files si posizionano file con estensione pdf, bmp Serve solo per avere il file a portata di click in caso di eventuale consultazione. 4. Nel file sorgente aggiungere i seguenti righi di codice: #include "lcd_4x20.h" #include "lcd_4x20.c"