LIBRERIA per PIC:

Display TFT 2,4 e 2,8 inc collegamento seriale



La libreria per TFT da 2,4 e 2,8 pollici seriale (testata su tutti e due i modelli da 2,4 e 2,8 inc) è stata modificata da quella da 2,4 pollici con collegamento da 8 bit parallelo e ci consete di risparmiare Byte e adattarla al funzionamento di vari PIC con poca memoria.

La differenza principale tra i due modelli è essenzialmente la velocità necessaria per aggiornare una pagina del display. Nel modelo seriale la velocità è molto più lenta.

Il vantaggio principale del modello seriale è la richiesta di un numero inferiore di piedini di collegameto dal PIC, se non viene usato il touch, altrimenti i piedini richiesti dal TFT e touch seriali sono quasi quanto quelli del modello parallelo.

E' stata creata una variante della libreria per gestire dei piedini in comune tra il display TFT e il touch screen (TFT_PIC18F4520_Spi_2).

Volendo risparmiare al massimo, possiamo collegare al +Vcc sia il pin del LED per retroillumunazione che il pin di RESET. Sono sufficienti 5 pins collegati al PIC, più i due di alimentazione.

ATTENZIONE! collegare il pin T_SDO del touch al pin RC1 del PIC con resistenza da 2K7 in serie!

Il TFT utilizza il ILI9341 e il touch screen e gestito da un circuito integrato, il XPT2046, che controlla gli assi con un convertitore analogco/digitale (ADC) da 12 bit.

Il funzionamento del XPT2046 è molto semplice, viene interrogato serialmente per ottenere in uscita seriale il valore di un asse per volta. E' necessario inviare il comando dell'asse X (0xD0) e otteniamo immediatamente la risposta, richiedere il comando dell'asse Y /0x90) seguito dalla risposta.

La libreria del touch screen si trva nel file TS_XPT2046_Lib.c ed è semplicemente composta da 4 funzioni, solo due sono utilizzabili dall'esterno.

touch_Init ();

Semplice inizializazione dei piedini del PIC. Va richiamato solo una volta dopo l'inizializazione del PIC.

T_CS ===> LATD0_bit
T_CLK
==> LATD1_bit;
T_SDI
==> LATD3_bit;

T_SDO ==> RC6_bit;

WriteCharTo7843 (unsigned char num); e ReadFromCharFrom7843 ();

sono funzioni interne

touch_GetAdXY ();

La funziona usata spesso. Aggiorna le variabili TP_x e TP_y per ottenere le coordinate precise del punto toccato sugli assi X e Y.

ATTENZIONE: i modelli reperibili sul mercato non sono tutti uguali! Gli assi non sono collegati all'ingresso del XPT2046 nello stesso modo in tutti i modelli di TFT.

Potrebbe essere necessario commentare o decomentare uno o due righe di programma nella funzione "touch_Get_AdXY ();":

TP_x = 242- TP_x;

TP_y = 332- TP_y;

Per quanto riguarda la libreria del display TFT, è uguale a quella del TFT parallelo.

LCD_init ();

La funzione principale è la più importante del programma e opera principalmente con il collegamento tra il TFT e il PIC.
TFT_CS ===> LATC0_bit
TFT_RS
===> LATC1_bit
TFT_SDA
==> LATC2_bit
TFT_SCL
==> LATC7_bit
TFT_RST
==> LATD4_bit
LED_LCD => LATD.F5

Nel comando "0x36" è possibile cambiare la direzione di visualizzazione del display. Con il dato "0x88" la scelta è caduta su display posizionato con il pulsante a Sx e il lato da 320 pixel orizzontale.

LCD_clear (0x0C);

Pulisce il TFT con il colore di fondo azzurro.

Display_string (char *str);

Funzione molto utile. E' possibile selezionare la grandezza del fonts con la variabile "F_SIZE = 1;", con il valore più piccolo indicato e il massimo da testare sul TFT. Se selezioniamo un valore molto grande, riusciamo a visualizzare solo pochi caratteri contemporaneamente sul display.

E' importante inserire le variabili che definiscono il punto di partenza della stringa da visualizzare.

P_COL = 0; (colonne X)
P_ROW = 50; (righe Y)

e il colore della stringa.

F_COLOR = RED;

Display_integer (int n);

Visualizza un intero sul TFT. Seguire le stesse istruzioni riportate per visualizzare una stringa.

Draw_BMP (unsigned int x_pos1, unsigned int y_pos1, unsigned int x_pos2, unsigned int y_pos2, const unsigned int *bitmap);

ATTENZIONE: NON USARE LA FUNZIONE CON IL PIC16: OGNI BYTE DELL'IMMAGINE OCCUPA UNA WORD DEL PIC. OGNI PAGINA DI MEMORIA DEL PIC CONTIENE 2048 WORD! DIFFICILE MEMORIZZARE UN'IMMAGINE!

Per esempio, in una pagina è possibile memorizzare 1004 Word. Significa visualizzare una figura da 32x31 pixel, davvero piccola!

Stampa sul display una figura. In origine la figura è un "*.BMP" che va modificata dal programma "bitmaptoarray.exe" che trovate nella directory "BITMAP ARRAY CONVERTER" e salvata in un file e incluso nel sorgente dalla direttiva "#include".

x_pos1 e y_pos1 sono i punti di partenza della figura, x_pos2 e y_pos2 sono i punti finali. *bitmap è il nome del file che contiene il codice per visualizzare l'immagine.

Ogni intero (2 Byte) del "*bitmap" contiene il colore di un singolo pixel.

LCD_rect (int col, int row, int width, int height, int color);

Disegna un semplice rettangolo pieno. Generalmente utilizzato per creare dei pulsanti touch.

col e row sono il punto di partenza (X, Y),

width e height sono rispettivamente la lunghezza e l'altezza del rettangolo,

color il colore.

Nel main è stato inserito un piccolo esempio di due pagine semplici ognuna delle quali contine una scritta (page 1, page 2) e un pulsante. E' sufficiente toccare il pulsante per cambiare pagina.


SCARICA LA LIBRERIA PER MIKROC PRO PIC18.

SCARICA LA LIBRERIA PER MIKROC PRO PIC16.

SCARICA LA LIBRERIA PER MIKROC PRO PIC18 VERSIONE 2

SCARICA IL PROGRAMMA "bitmaptoarray.exe" PER MODIFICARE IL FILE *.BMP E CARICARLO NEL PIC.

RITORNA ALLA MAIN PAGE