ESERCITAZIONE # 12
Esecuzione
Per verificare se il display è ok, una volta applicata tensione, senza
ancora attivare il programma, il display stesso dovrà aver effettuato il reset
hardware. Ruotando il contrasto verso 0 volt si visualizzerà la prima riga con
tutti i caratteri riempiti di un rettangolo scuro (o chiaro, a seconda della
presenza o meno della retro illuminazione); questo indica che il display,
almeno in via di massima, è funzionante. Qui
maggiori informazioni.
Nel nostro caso è stato usato un display NHD0216KHZ-NBW-BBW-L di Newhaven,
reperibile ad esempio da DigiKey.
Si tratta di un 2 righe da 16 caratteri, fondo blu con scritte in bianco, retro
illuminato.
Non corre la Rs perchè il costruttore l' ha già montata a bordo del circuito
stampato. La retro illuminazione richiede meno di 80 mA e quindi tutto il
circuito è alimentabile senza problemi attraverso il PICkit.
ovviamente si potrà utilizzare qualsiasi altro display che sia 2x16 o 2x20 e
HD44780 compatibile.
Una volta assemblato il sorgente e caricata la memoria del PIC, basta lanciare
il programma con
Run e, se tutto è a posto, il display visualizzerà il
messaggio di prompt.
Se questo non succede, dopo aver verificato con cura i collegamenti, provate
a regolare il contrasto: i caratteri dovranno apparire chiaramente.
E' possibile anche il funzionamento step by step, ma, data la complessa
ripetitività delle routines, è meglio utilizzare breakpoint da posizionare nei
punti in cui si vuole interrompere l' esecuzione.
Il programma di test effettua le seguenti operazioni:
- inizializza I/O per il display
- inizializza il display con il cursore visibile
- scrive un messaggio, cadenzando la presentazione delle lettere di 0.5
secondi una dall' altra, sulla prima e sulla seconda linea
- attesa di 2 secondi
- pulisce il display e riporta il cursore all' inizio
- attesa di 1 secondo
- ripresa dal punto 3
Il programma di prova utilizza la libreria di gestione dell' LCD,
richiamandola con un #include.
Questa semplice linea consente di richiamare gli entry point resi disponibili
dalla libreria ed utilizzarli in qualsiasi punto del programma.
Vengono richiamate come subroutines le seguenti funzioni:
- LCDioini : inizializzazione degli I/O di comando dell' LCD
- LCDswini : inizializzazione software del modulo LCD
- LCDWrDat : scrive sull' LCD un dato presente in WREG
- LCDWrCmd : scrive sull' LCD un comando presente in WREG
L' uso della libreria ci permette di impiegare le sue macro-funzioni senza
interessarci di come esse operino; ci interessano solo come blocchi logici che,
a fronte di un ingresso, generano una ben determinata uscita.
Da notare che la libreria non viene riscritta nel sorgente, ma viene viene
richiamata con la direttiva #include; questo
consente al testo della libreria di risiedere in qualsiasi cartella sul disco,
mentre qualsiasi sorgente potrà farne uso. E' compito dell' Assembler il
prelievo dei file e la loro giusta collocazione.
Sempre riguardo alle librerie, il programma di test utilizza anche la già
vista libreria per commutare le frequenze disponibili nel sistema di clock
interno dei PIC18F, viste nell' Esercitazione
5.
Sarà, invece, necessario inserire nel sorgente le assegnazioni dei pin di I/O
dedicati al controllo dell' LCD, secondo quanto indicato nel driver.
L' include della libreria, non essendoci nei 18F il problema delle pagine,
può essere posizionata come meglio si desidera. Nell' esempio è in fondo al
breve listato del programma principale.
|