| 
    
      
        | Caratteri CGRAM nei display
          LCDa matrice
 |  
 Come funziona la CGRAMIl funzionamento del generatore di caratteri in RAM è del tutto analogo a
  quello del generatore in ROM.  Il codice del carattere viene passato alla CGRAM, dalla quale si genera la
  matrice che sarà trasferita alla DDRAM ed al display. Quindi la CGRAM avrà la stessa struttura logica della CGROM;
  semplicemente, il contenuto della CGROM è fisso e immutabile e quello della
  CGRAM viene determinato dall' utente. Come abbiamo visto prima, un carattere si compone di 8 linee da 5 bit
  ciascuna, ovvero occupa 8 locazioni consecutive nella memoria CG. La CGRAM tipicamente è costituita da 64 celle da 1 byte ciascuna e un gruppo di 8 celle consecutive determina un simbolo.
 Se vogliamo ottenere la visualizzazione di una freccia verso l' alto,
  occorrerà questa matrice:
 
    
    
      
        | Locazione | Punti | Contenuto |  
        | binario | hex |  
        | 1 | 0 | 0 | 1 | 0 | 0 | 00100 | 04h |  
        | 2 | 0 | 1 | 1 | 1 | 0 | 01110 | 0Eh |  
        | 3 | 1 | 0 | 1 | 0 | 1 | 10001 | 11h |  
        | 4 | 0 | 0 | 1 | 0 | 0 | 00100 | 04h |  
        | 5 | 0 | 0 | 1 | 0 | 0 | 00100 | 04h |  
        | 6 | 0 | 0 | 1 | 0 | 0 | 00100 | 04h |  
        | 7 | 0 | 0 | 1 | 0 | 0 | 00100 | 04h |  
        | 8 | 0 | 0 | 0 | 0 | 0 | 00000 | 00h |  Quindi, per la freccia vista sopra, si dovrà scrivere la sequenza di bytes
  04h, 0Eh, 11h, 04h, 04h, 04h, 04h, 04h, 00h in 8 locazioni consecutive della
  CGRAM. Il meccanismo che consente la selezione della matrice in ROM o in RAM
  dipende dal valore del byte passato in ingresso come indirizzo. 
    
      
        |  | Torniamo ad osservare un tipico set di caratteri: questo a lato è il set di caratteri
          A00 del controller HD44780. I codici di ingresso da 10h a 7Fh corrispondono a
          lettere, numeri e simboli ASCII. L' area tra A0h e FFh è occupata dai caratteri del giapponese
          semplificato, da lettere dell' alfabeto greco ed altri simboli. L' area di indirizzi tra 80h e 9Fh è inutilizzata e da origine
          alla visualizzazione di uno spazio vuoto sul display. Anche l' area
          tra 10h e 1Fh è inutilizzata in questa tabella.. Ma se inviamo come dato un valore compreso tra 00h e FFh ? |  Nella tabella, questi valori non hanno alcun carattere
          corrispondente,  dato che essi vengono deviati alla tabella
          della CGRAM, dove corrispondono ai caratteri introdotti dall' utente. In altre parole, i simboli definiti dall' utente vanno ad occupare le prime
  8 caselle della tabella: i simboli pre fissati in ROM risponderanno agli
  indirizzi da 10h a FFh e quelli programmati dall' utente saranno richiamate dai codici tra 00h e 07h. Questo consente comunque una corrispondenza della prima parte della tabella CG
  con la tabella ASCII
  standard, dato che i suoi primi valori non sono simboli stampabili, ma
  caratteri di controllo.
 Quindi, dal punto di vista dell' uso del carattere speciale programmato in
  CGRAM non esiste alcuna differenza rispetto a quello di un carattere in CGROM:
  la scrittura di un dato verso la DDRAM darà origine alla visualizzazione
  del simbolo corrispondente al dato stesso, a seconda si trovi
  in CGRAM o CGROM. Di conseguenza: movlw  0x41call   senddatatolcd
 produce la presentazione del carattere A mentre movlw  0x02call   senddatatolcd
 produce la presentazione del carattere che l' utente ha programmato nella
  locazione 02h della CGRAM. 
 
    
    
      
        |  1. - All' accensione del display, il controller provvede, tra le
          altre cose, all' azzeramento del contenuto della RAM. Solitamente essa
          viene riempita con il carattere 20h, che corrisponde nella tabella
          ASCII ad uno spazio.
 Questo serve a presentare il display inizialmente vuoto e pronto per
          ricevere i caratteri dall' host.
 L' azzeramento della RAM riguarda anche la CGRAM, per cui essa,
          dopo l' arrivo della tensione di alimentazione, è vuota. Quindi, nell' esempio precedente, alla
  casella 02h non ci sarà alcun carattere visualizzabile.  Prima di usare i caratteri in CGRAM occorrerà scriverli ! 2. - E  occorrerà scriverli ogni volta che al controller viene a mancare l'
  alimentazione, dato che una caduta della tensione di alimentazione cancella il
  contenuto della RAM. 3. - Da osservare che, trattandosi di una RAM, qualsiasi locazione può essere
  scritta, sovrascritta o letta a piacere. Quindi, volendo utilizzare solamente
  il carattere al codice 02h, si potrà scrivere la corrispondente CGRAM
  lasciando inutilizzato tutto il rimanente.Per contro, avendo a disposizione solo 8 caratteri nel formato 5x8, se,
  durante il lavoro, ne occorrono altri, sarà necessario scrivere quelli da
          utilizzare, cancellando
  uno o più dei precedenti.
   |  |