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:
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.