LIBRERIA per PIC:

Display TFT 2,4 inc (parallela 8 bit)


 


La libreria per TFT da 2,4 pollici è stata modificata da quelle per Arduino e, alcune funzioni, modificate per risparmiare Byte e adattarla al funzionamento di vari PIC con poca memoria.

Il TFT utilizza il ILI9341 e il touch screen è seplicemente collegato tra due piedini:

LCD_RS e LCD_D6 (assi X1 e X2)

LCD_WR e LCD_D7 (assi Y1 e Y2).

Giusto per capire che sole scritte e un rettangolo richiedono poco più di 2700 Byte, gestendo anche il touch screen la richiesta di memoria aumenta a 5000 Byte. Ovviamente l'immagine da visualizzare richiede molta memoria proporzionale alla grandezza dell'immagine stessa.

Se vogliamo gestire le stesse funzioni con la libreria di MikroC (presente solo per il PIC18 e non per la serie PIC16!) la richiesta di memoria varia da 11000 a 14000 Byte e senza la gestione del touch!

Vediamo in particolare gli elementi principali della libreria.

LCD_init ();

La funzione principale è la più importante del programma e opera principalmente con il collegamento tra il TFT e il PIC. E' importante capire che se intediamo usare il touch screen, 2 piedini del TFT vanno collegati ai pins del PIC che fanno parte del Convertitore Analogico Digitale (ADC) interno. Si tratta di:

LCD_RS ==> Y1

LCD_WR ==> X1

Il collegamento include una porte completa per lo scambio dei dati/comandi.

// TFT module connections
char TFT_DataPort at PORTC; // Data 8 bit
char TFT_DataPort_Direction at TRISC;
//
sbit TFT_RST at LATD0_bit; // Reset
sbit TFT_CS at LATD3_bit; // CS
sbit TFT_RS at LATA0_bit; // RS (ADC)
sbit TFT_RD at LATD1_bit; // RD
sbit TFT_WR at LATA1_bit; // WR (ADC)
//
sbit TFT_RST_Direction at TRISD0_bit;
sbit TFT_CS_Direction at TRISD3_bit;
sbit TFT_RS_Direction at TRISA0_bit;
sbit TFT_RD_Direction at TRISD1_bit;
sbit TFT_WR_Direction at TRISA1_bit;
// End TFT module connections

Attenzione: controllate la posizione dei dati (8 bit) non sono allineati dal PB0 al PB7 (vedi foto). In origine il TFT è progettato per funzionare con arduino, in particolare con "arduino uno".

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.

 

ReadTouch ();

La funzione richiede molta memoria, circa 2400 Byte. Può risultare molto utile per gestire altre funzioni e/o parametri.

E' possibile vedere i valori rilevati dal ADC del PIC, utili durante il collaudo, da eliminare nella fase operativa.

Quando avete dei dubbi su i piedini dove sono collegati gli assi del touch, vi consiglio di testare ogni piedino di contollo (da LCD_RST a LCD_RD) con i piedini dei dati, usando un tester in ohm. Nel display presentato in questa pagina, l'asse X è collegato tra i pins

LCD_RS e LCD_D6 e presenta una resistenza di 298 ohms, l'asse Y è collegato tra

LCD_WR e LCD_D7 e presenta un resistenza di 575 ohms.

Se tocchiamo con una punta fine il lato sinistro del TFT, troviamo un valore ADC in bit di circa 84 ohms per X (col) e 99 ohms per Y (row).

Toccando in basso misuriamo un valore di 641 ohms (row) e toccando a destra un valore di 680 ohms circa (col).

Se trovate valori diversi dovete ricorrere alla calibrazione del touch screen.

Calibration_touch ();

Per calibrare il touch, dovete premere in centro del displat per circa 10/15 secondi. Il display si reseta e vi chiede di toccare il punto estremo alto a sinistra, quello estremo alto a destra e, infine quello in basso a sinistra.

I valori rilevati vengono memorizzati in EEPROM.

 


SCARICA LA LIBRERIA PER MIKROC PRO PIC18.

SCARICA LA LIBRERIA PER MIKROC PRO PIC16.

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

 

RITORNA ALLA MAIN PAGE