Gestione LCD con controllo di stato
Molti utenti lamentano il fatto che le routine di gestione degli LCD basati sui controller HD44780 e compatibili, spesso non funzionano. Abbiamo già visto che il problema deriva soprattutto dalla fase di inizializzazione. Capita difatti che, seppure i vari tipi di controller siano compatibili tra loro, potrebbero avere delle “tempistiche” differenti per cui ecco che il codice scritto per un modello non funziona su un altro a patto di piccole modifiche.
La libreria in oggetto apporta una modifica a quella che abbiamo trovato nella lezione 7 del corso di programmazione. Illustro brevemente la modifica effettuata: siamo abituati a tenere il pin R/W del display a massa, utilizzando quindi il display in sola lettura. Sfruttando anche questa linea di comunicazione è possibile leggere lo “stato” del display ovvero il flag Busy che ci permette di sapere se il display è ancora impegnato nelle sue operazione o è pronto a ricevere dati/comandi.
Per poter utilizzare il display anche in lettura è necessario, oltre a collegare anche il pin R/W ad un IO del picmicro, gestire anche le linee dati per poter essere configurate come ingressi anzichè come uscite: portando il pin R/W a livello alto, il display restituisce lo stato sulla linea dati D7, nelle funzioni di scrittura possiamo quindi rimanere in attesa fino al momento in cui il display si libera.
La libreria aggiornata fa tutto da sè, l’unica modifica circuitale necessaria è quella di collegare anche il pin R/W del display ad un IO del picmicro. Per evitare problemi sui PIC16 è conveniente collegare tutte le linee dati ai pin di un solo banco di porte.
Download
Libreria LCD con controllo del flag Busy (881 download)