Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Pilotare display lcd tft con Arduino Due

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Pilotare display lcd tft con Arduino Due

Messaggioda Foto UtenteHammondx » 3 ago 2015, 10:52

Salve a tutti :D
Tempo fa ho recuperato un display lcd da un portatile rotto (il display è uno Sharp lm64p10) e ora vorrei
utilizzarlo per un progettino che mi è venuto in mente con Arduino Due.
Ho scaricato il datasheet dello schermo ma non mi è chiaro come pilotarlo, in particolare non capisco come accendere la retroilluminazione e il significato dei 4 bit che dovrei inviare al display per ogni riga (se io mando un certo numero cosa viene fuori sullo schermo?).
Metto in allegato il datasheet del display, grazie in anticipo per l'aiuto :D
Allegati
display lcd sharp.pdf
(743.95 KiB) Scaricato 311 volte
Avatar utente
Foto UtenteHammondx
478 2 11
Frequentatore
Frequentatore
 
Messaggi: 200
Iscritto il: 25 ago 2011, 14:36

2
voti

[2] Re: Pilotare display lcd tft

Messaggioda Foto UtenteIlGuru » 3 ago 2015, 16:28

Se ho capito bene, leggendo le pagine 6 e 7 del datasheet, il display va ridisegnato ogni volta che devi cambiare anche un solo punto.
I segnali che permettono di ridisegnare il display sono CP1, CP2, S, DU0-3 e DL0-3.
Il display è 480 righe per 640 colonne, con origine delle coordinate in alto a sinistra.

DU0-3 servono alla metà superiore del display, quindi per le linee da 0 a 239
DL0-3 servono alla metà inferiore del display, quindi per le linee da 240 a 479

Pagina 7 ci dice che disegni le due metà del display una riga e 4 punti alla volta.

Si inizia con con la transizione alto-basso di CP1 che incrementa il valore dell'indirizzo della memoria interna ed così si può iniziare a programmare il latch.

Imposti i valori di DU0-3 e DL0-3 per disegnare i primi 4 punti della prima riga nella metà superiore e nella metà inferiore, quindi i punti 0-3 della riga 0. Con una transizione alto-basso di CP2 scrivi i valori nel latch.

Poi imposti i valori di DU0-3 e DL0-3 per disegnare i secondi 4 punti della prima riga, quindi i punti 4-7 della riga 0, e lo scrivi con CP2. Quando arrivi a 160, hai disegnato i 640 punti della prima riga e riparti da capo, con CP1.

A questo punto lo stesso procedimento ti serve per disegnare la seconda riga.

Quando ne hai fatti 160 hai disegnato 4*160=640 punti della riga 1, ancora CP1 e ricominci con la terza riga ecc...

Alla fine hai disegnato tutto il display.

A questo punto con il segnale S gli dici che hai finito e lui può visualizzare quello che ha in memoria.

Per la retroilluminazione non saprei, non credo che sia comandata via software ma dal circuito elettrico che colleghi a qualche pin.
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

0
voti

[3] Re: Pilotare display lcd tft

Messaggioda Foto UtenteHammondx » 3 ago 2015, 19:27

Grazie per la risposta :D credo di aver capito come devo comportarmi, il datasheet parla di una frequenza di 85 Hz, questa è la frequenza del segnale S?
Per la retroilluminazione sono riuscito a risolvere, alla fine ho capito come riutilizzare l'inverter che era presente nel portatile. :)
Avatar utente
Foto UtenteHammondx
478 2 11
Frequentatore
Frequentatore
 
Messaggi: 200
Iscritto il: 25 ago 2011, 14:36

2
voti

[4] Re: Pilotare display lcd tft

Messaggioda Foto UtenteIlGuru » 4 ago 2015, 10:44

Per questo e tutti gli altri dispositivi da comandare con delle temporizzazioni di vari segnali, non credo che ti serva molto ragionare sulla frequenza, quanto piuttosto sulle ampiezze degli impulsi.

Qui ciò che comanda tutto è CP2, il clock, che memorizza 4 punti alla volta.
Pagina 8 ci dice l'ampiezza dello stato alto (tCWH) e dello stato basso (tCWL) del segnale deve essere MINIMO 65 nano secondi ciascuno e ci fornisce anche il periodo minimo di CP2 (TCP2) che deve essere di 150 ns, un po' più di 65+65 ns.
Magari se stai sotto funziona lo stesso, però non è garantito. Con questo periodo di 150ns per CP2 siamo circa a 6600 kilo hertz.

Una riga è fatta da 640 punti, siccome ne memorizziamo 4 alla volta, c'è un impulso di CP1 ogni 640/4=160 impulsi di CP2, cioè circa 41 kilo Hz per ogni impulso di CP1, che nello stato alto deve durare minimo (TLWH) 70 nano secondi.

Poiché le righe da disegnare sono 240 in quanto disegnamo contemporaneamente la metà superiore ed inferiore, c'è un impulso di S ogni 240 impulsi di CP1 quindi 173 Hz, nello stato alto S deve durare minimo TSSU+TSH=200 nano secondi.

Al microcontroller che usi, fa fare esattamente quello che vedi nelle pagine 7 e 8 del datasheet e non ci saranno problemi, anche perché con un PIC o un AVR non portai scendere sotto il micro secondo come delay quindi tutti quei timing saranno ampiamente rispettati.

Con l'arduino uno, comandando direttamente le porte senza usare writeDigital riesci ad arrivare anche a quei timing ed a tirare il display un per il collo:

Immagine

Tutto questo in via teorica, infatti questo frame rate di 173 Hz è il doppio di quello che dice il datasheet di 85Hz che è comunque molto di più di quello che l'occhio umano può percepire come tempi di persistenza dell'immagine sulla retina.

Tutto questo ci dice che hai tempo anche di far fare dei calcoli al microcontroller mentre invii i vari segnali al display :)
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

0
voti

[5] Re: Pilotare display lcd tft

Messaggioda Foto UtenteHammondx » 6 ago 2015, 16:37

Grazie per la risposta, molto completa ed esauriente :D
Avrei solo un'ultima domanda: supponiamo che io ad ogni ciclo del void loop aggiorni l'immagine del display, può creare problemi il fatto che il tempo di esecuzione di un ciclo non sia costante o basta tenersi sopra i tempi indicati nei datasheet? In pratica la costanza della frequenza di cp2 è fondamentale?
Perché la mia idea era proprio quella di eseguire le istruzioni del ciclo e poi alla fine aggiornare l'immagine del display in base ai risultati ottenuti.

PS: per dare tutte le informazioni del caso vorrei specificare che utilizzo Arduino Due.
Avatar utente
Foto UtenteHammondx
478 2 11
Frequentatore
Frequentatore
 
Messaggi: 200
Iscritto il: 25 ago 2011, 14:36

2
voti

[6] Re: Pilotare display lcd tft

Messaggioda Foto UtenteIlGuru » 6 ago 2015, 22:27

il ciclo serve solo a programmare la memoria con quello che devi visualizzare, se non devi cambiare l'immagine non lo devi eseguire per forza. i tempi sono l'indicazione su quali sono i tempi minimi perché il dispositivo possa memorizzare e visualizzare qualcosa, se per qualche motivo assurdo vuoi metterci un'ora per scrivere l'immagine da visualizzare sei liberissimo di farlo. non lo devi pensare come un televisore che deve avere un frame rate di 25 immagini al secondo, ne può fare 85 ma anche tenerne una fino a che non lo spegni diciamo.
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

1
voti

[7] Re: Pilotare display lcd tft con Arduino Due

Messaggioda Foto UtenteHammondx » 7 ago 2015, 8:16

ah ok, grazie difatti io ero partito con l'idea che fosse necessario "revitalizzare" l'immagine ogni tot.
Grazie ancora per l'aiuto :D
Avatar utente
Foto UtenteHammondx
478 2 11
Frequentatore
Frequentatore
 
Messaggi: 200
Iscritto il: 25 ago 2011, 14:36

0
voti

[8] Re: Pilotare display lcd tft con Arduino Due

Messaggioda Foto UtenteIlGuru » 7 ago 2015, 10:09

Se puoi posta un video del display funzionante :)
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

0
voti

[9] Re: Pilotare display lcd tft con Arduino Due

Messaggioda Foto UtenteHammondx » 7 ago 2015, 17:13

Beh per quello ci vorrà un po', adesso sto sviluppando su PC una prima rozza interfaccia testuale a "pagine" per vedere se il concetto che ho in mente funziona.
Più avanti trasporterò l'idea su Arduino ma prima dovrò scrivere delle funzioni per controllare il display :-)
Avatar utente
Foto UtenteHammondx
478 2 11
Frequentatore
Frequentatore
 
Messaggi: 200
Iscritto il: 25 ago 2011, 14:36

0
voti

[10] Re: Pilotare display lcd tft con Arduino Due

Messaggioda Foto UtenteIlGuru » 7 ago 2015, 20:44

Sono curioso di sapere quale algoritmo userai, perché per inviare al display tutti i dati, immagino che li immagazzinerai prima in un buffer all'interno del microcontroller in modo da avere una corrispondenza bit del buffer->punto della metrice lcd su cui operare con varie funzioni che creerai, e questo buffer dovrebbe assere almeno di 640*480/8=38400 byte.
Arduino 2 essendo equipaggiato con l' AT91SAM3X8E di memoria ne ha abbastanza, ma io con l' atmega328 non ce la farei :)
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti