title: HD44780
text: # HD44780
  
  L'HD44780 è un ASIC prodotto da Hitachi, in grado di controllare display LCD capaci di visualizzare solo caratteri. Vengono commercializzati display completi di controllore di varie dimensioni a partire da 8x1, costituito da una riga di 8 caratteri, fino a dimensioni più grandi tra cui 8x2, 16x2, 20x2, 16x4, 20x4, ecc.
  
  Per la sua diffusione l'HD44780 è considerato ormai uno standard de facto per il controllo di display LCD. Esso infatti viene usato soprattutto in ambito embedded per realizzare display di apparecchi elettrici e hobbystico a causa della larga versatilità e facilità di interfacciamento.
  
  Nonostante spesso si faccia riferimento a display LCD, un controller compatibile con l'HD44780 può essere montato anche in display OLED o VFD.
  
  ## Disposizione pin
  
  | Numero del pin | Funzione del pin |
  | - | - |
  | 1 | Vss (Massa) |
  | 2 | Vcc (Genericamente 5V) |
  | 3 | Vee (Controllo contrasto, da 2V a -3V secondo i tipi) |
  | 4 | R/S (0 per selezionare l'invio di un comando, 1 per i dati) |
  | 5 | R/W (0 per selezionare la scrittura di dati o comandi, 1 per la lettura dei dati o dello stato) |
  | 6 | E (inizia il ciclo di scrittura o lettura, secondo R/S e R/W) |
  | 7 | D0 (Bus dati) |
  | 8 | D1 (Bus dati) |
  | 9 | D2 (Bus dati) |
  | 10 | D3 (Bus dati) |
  | 11 | D4 (Bus dati) |
  | 12 | D5 (Bus dati) |
  | 13 | D6 (Bus dati) |
  | 14 | D7 (Bus dati) |
  | 15 | A (Vcc retroilluminazione, se presente) |
  | 16 | K (Vss retroilluminazione, se presente) |
  
  Notare che questa è la disposizione standard, ma la posizione dei pin, come anche altri valori, possono cambiare di modello in modello. I livelli logici 0 ed 1 utilizzati sono TTL compatibili.
  
  ## Modalità di trasferimento
  
  L'HD44780 supporta il trasferimento parallelo sia di 8 bit (quindi l'intero comando), che di 4 bit (nibble).
  
  Esempio: se è stata selezionata la modalità di trasferimento ad otto bit, il comando 10000001 verrà inviato per intero, quindi DB7 sarà pari a 1, DB6 uguale a 0, DB0 uguale a 1 e così via.
  
  Se è selezionata la modalità di trasferimento a 4 bit, saranno utilizzati solo i pin da DB7 a DB4, verranno quindi effettuati due trasferimenti, prima verranno inviati i primi quattro bit del dato (1000), poi gli ultimi (0001).
  
  ## Comandi supportati
  
  Tutti i comandi inviati al 44780 devono essere trasferiti con il pin R\S a zero.
  
  I comandi possono essere di vario tipo:
  
  * Inizializzazione: sono comandi genericamente eseguiti una sola volta, che indicano la modalità di visualizzazione, il verso di scorrimento del cursore, determinano se il cursore dovrà lampeggiare, la modalità di trasferimento (4/8 bit), la dimensione dei caratteri ecc.
  * Posizionamento: indicano al controller dove scrivere il prossimo carattere, genericamente vengono usati per cambiare riga del display.
  * Definizione di nuovi caratteri: l'HD44780 prevede la possibilità di definire fino a 8 caratteri personalizzati.
  
  Per ulteriori informazioni sui comandi è consigliata la lettura del datasheet del display a cui si è interessati.
  
  ## Scrittura di un carattere
  
  Per la scrittura di un carattere è necessario:
  
  * Accertarsi che il cursore si trovi nel punto in cui si desidera stampare il carattere;
  * impostare a 1 il pin R\S; a 0 il pin R\W;
  * inviare il codice ASCII del carattere
  * impostare a 1 il pin E per minimo 450 nanosecondi e riportarlo a 0
  