Corso di programmazione per microcontrollori PIC. Decima puntata – 2

Corso di programmazione per microcontrollori PIC

Prima di spiegare le operazioni di inizializzazione, vediamo come funziona la logica di controllo implementata tenendo presente che ogni display LCD dispone internamente di una memoria di impostazione dei caratteri denominata CG RAM e di una memoria dati denominata DD RAM.

Per i display a due righe, la DD RAM è allocata agli indirizzi che vanno da 00 a 0F esadecimale e da 40 a 4F sempre esadecimale; i caratteri scritti in queste 32 celle di memoria sono quelli che vengono effettivamente visualizzati sul display. Quindi per poter scrivere qualcosa sul display è sufficiente inserire dei dati in queste specifiche locazioni; quando si vuole scrivere una intera riga del display è sufficiente indirizzare il cursore alla prima cella della riga ed inviare i dati, in questo modo, ad ogni invio di un carattere, il cursore viene automaticamente posizionato alla cella successiva.

Occorre ora ricordare che il display è un dispositivo abbastanza lento e per questo motivo, nel programma che abbiamo realizzato, viene spesso inserita una routine di ritardo che permette di “rallentare” il flusso dei dati da visualizzare. Nella demoboard, per poter utilizzare il display è necessario chiudere JP2, abilitando in questo modo i due buffer che pilotano il display.

Tutta la porta B del PIC viene utilizzata per pilotare il bus dati DB0 ÷ DB7 mentre la porta A viene utilizzata per pilotare le linee E, R/W ed RS. Vediamo a questo punto il nostro programma dimostrativo (DEMO8.ASM) di cui riportiamo in queste pagine sia il listato che il relativo diagramma di flusso. Dopo aver inizializzato le due porte come uscite, vi è la parte relativa alla inizializzazione del display. Innanzitutto viene posta a 0 la linea R/W (BCF PORT_A,R_W) in quanto il display verrà sempre utilizzato in scrittura.

Viene poi posta a zero anche la linea RS perché quelle che stiamo inviando al display nell’inizializzazione sono delle istruzioni e non dei dati da visualizzare. Vengono a questo punto inviate una serie di istruzioni il cui significato può essere dedotto dalla tabella riportata in queste pagine che illustra il set di istruzioni dei display LCD. E’ da notare che ogni volta che viene posta sulla porta B del micro una certa istruzione viene poi fatta acquisire dal display attraverso un impulso sul piedino E; tale impulso si ottiene con le due istruzioni BSF PORT_A,E e con la successiva BCF PORT_A,E che provvedono ad alzare e poi ad abbassare la linea E.

Dopo aver inizializzato il display, si è pronti per scrivere le due righe; per fare questa operazione si è suddiviso il programma in diverse subroutine, che abbiamo denominato RIGA_1, RIGA_2 e CARATT.

Leave a Reply