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.