Tutorials - Elettronica

 
 

Caratteri CGRAM nei display LCD
 a matrice


Una breve nota

Per quanto detto potrebbe sorgere una qualche incertezza tra gli indirizzi della DDRAM, il contenuto della DDRAM e i simboli visualizzati sul pannello LCD.

Il controller consente di effettuare due operazioni distinte di scrittura in DDRAM:

  • scrivere un indirizzo di DDRAM

  • scrivere un dato in DDRAM

Le due cose sono diverse ed hanno diversa funzione. 

Quando scriviamo un indirizzo in DDRAM, forziamo il contatore interno a posizionarsi sulla cella di DDRAM a cui vogliamo accedere.
Dopo il reset dovuto all' arrivo della tensione, il contatore di indirizzi è a 0 e punta quindi alla locazione 0 della DDRAM, che corrisponde alla prima matrice del display, la posizione di home.
Se, a questo punto scrivo un dato verso la DDRAM, questo dato si posiziona nella cella all' indirizzo 0.

Un meccanismo automatico del controller avanzerà il contatore di un passo dopo ogni operazione di scrittura diretta alla DDRAM e una ulteriore scrittura posizionerà il dato alla cella numero1 e così via.
Una serie di caratteri inviati al display sarà visualizzata di seguito senza la necessità di comandare un nuovo indirizzo in RAM, che viene incrementato automaticamente dal contatore.
Qui, ad esempio, partendo dall' indirizzo 00h, il primo carattere sarà inviato a questa locazione; quello successivo non richiede alcuna manipolazione dell' indirizzo, dato che sarà posizionato automaticamente a 01h e il successivo a 02h e così via. Questo meccanismo è indispensabile per la scrittura normale di messaggi.
Dal punto di vista del codice:

movlw   0x00           ; indirizzo DDRAM 00h  
call    setddramaddr   ; invio il comando al modulo
movlw   'H'            ; carattere ASCII H  
call    writechar      ; scrivo il carattere sul display
movlw   'i'            ; carattere ASCII i
call    writechar      ; scrivo il carattere sul display 

produrrà sul display la scritta 'Hi' a partire dalla locazione di home.

Può, però, essere necessario posizionare un carattere in una determinata posizione sul pannello LCD. Questa posizione corrisponde ad una cella di DDRAM. Quindi, scrivendo quella cella, sul display apparirà il carattere voluto in quella data posizione.

Per fare questo devo forzare il contatore dalla posizione attuale a quella voluta, con una oprazione di scrittura di indirizzo di DDRAM.
Quindi, ad esempio, se l' indirizzo a cui si trova il contatore è 00h, il carattere inviato andrà in quella locazione e il contatore interno si posizionerà su 01h in attesa del successivo carattere. Se voglio, però, scrivere questo secondo carattere alla posizione 05h, basterà inviare un comando di set dell' indirizzo della DDRAM al valore 5 e quindi scrivere il dato da presentare. Così è possibile inserire o modificare caratteri in qualsiasi posizione del display.
Dal punto di vista del codice:

movlw   0x00           ; indirizzo DDRAM 00h  
call    setddramaddr   ; invio il comando al modulo
movlw   'H'            ; carattere ASCII H  
call    writechar      ; scrivo il carattere sul display
movlw   0x05           ; indirizzo DDRAM 05h 
call    setddramaddr   ; invio il comando al modulo
movlw   'i'            ; carattere ASCII i
call    writechar      ; scrivo il carattere sul display 

produrrà sul display la scritta 'H    i' a partire dalla locazione di home.

Dovrebbe essere ora ben chiaro la funzione che ha la scrittura di un indirizzo oppure di un dato in DDRAM.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 03/12/12.