Esercitazioni ASM - PIC18

 


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:

  1. inizializza I/O per il display
  2. inizializza il display con il cursore visibile
  3. scrive un messaggio, cadenzando la presentazione delle lettere di 0.5 secondi una dall' altra, sulla prima e sulla seconda linea
  4. attesa di 2 secondi
  5. pulisce il display e riporta il cursore all' inizio
  6. attesa di 1 secondo
  7. 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.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 17/11/11.