grafici - IE Cloud
Transcript
grafici - IE Cloud
progettare & · progettare & costruire di PAOLO ROGNONI dei display C-Experiences (terza parte) GESTIONE Nell’articolo precedente si è visto come gestire un display alfanumerico con un driver di tipo seriale realizzato mediante shift register. La demo board che è stata sviluppata, e presentata nel numero 308 di FARE ELETTRONICA, riporta però anche un display grafico e un touch panel. In queste pagine verrà illustrato come implementare e gestire un display grafico e nel prossimo articolo, il touch screen. GRAFICI I l mondo dei display grafici è abbastanza variegato: vi si trovano dispositivi monocromatici, TFT a colori e da qualche tempo anche gli OLED. Per applicazioni a microcontrollore a 8 bit si intende focalizzare l’attenzione su quelli di tipo monocromatici con risoluzioni fino a qualche centinaia di pixel per entrambi gli assi. Il grosso del mercato di questi LCD è stato “colonizzato” da Toshiba con il controller T6369C e da Samsung con i controller KS108/KS107. I compilatori di Mikroelektronika supportano entrambi i controller, con librerie ad hoc, studiate per permettere di interfacciare agevolmente display grafici. Anche MikroC PRO mette a disposizione una serie di librerie, ma in questa sede si vuole mostrare come funziona un display grafico, andando a scrivere delle proprie routine. I CONTROLLER KS108/KS107 Con questo articolo si vuole focalizzare l’attenzione su di un display grafico (vedi paragrafo dei riferimenti), con risoluzione 128x64 pixel, come quello di figura 1. Tale display monta il controller KS108B (vedi paragrafo dei riferimenti per il datasheet). In tabella 1 si riportano le connessioni del display grafico. Il controller KS108 va interfacciato con bus dati a 8 bit. Si presti attenzione al fatto che non tutti i display hanno il medesimo pin-out! Per maggiori informazioni ci si deve riferire al datasheet del proprio dispositivo. In tabella 1 è riportato il pinout del display e il significato dei singoli pin. Analogamente a quanto visto nell’articolo sui display alfanumerici, anche per quelli grafici vengono messi a disposizione 56 dei segnali di controllo: CS1, CS2, RS, R/W, E, RST. I tre segnali di controllo E, R/S, RW, permettono l’accesso al display per poter imporre comandi o disegnare dei punti. I segnali CS1 e CS2 sono due segnali di chip select che permettono l’accesso alla memoria grafica del display. RST è invece un segnale di RESET. Purtroppo, a differenza dei display alfanumerici, per quelli grafici non è possibile ridurre da 8 a 4 il numero dei bit del bus dati, pertanto le risorse impegnate del microcontrollore, in termini di pin liberi, diventano numerose. In figura 2 è mostrato come il controller gestisce il display: la struttura è costituita da due lati, ciascuno suddiviso in 8 pagine profonde ognuna 8 bit e larghe 64 bit. L’origine del display è fissata nello spigolo in alto a sinistra e il verso positivo degli assi è indicato chiaramente in figura. I pixel di ogni pagine sono organizzati a byte; per ciascuna pagina sono disponibili 64 byte (numerati da 0 a 63). I byte sono disposti in verticale, secondo quanto mostrato in figura 3, con il bit di peso minore in alto e quello di peso maggiore in basso. L’accesso ai pixel è pertanto vincolato alla struttura imposta dal controller. Benché sia possibile realizzare un driver per LCD dotati di controller KS108/107, si ritiene utile, in questa sede, utilizzare il driver messo a disposizione da Mikroelektronika, con il quale è possibile disegnare con estrema facilità punti, linee, curve e altro ancora. PRIMITIVE E BITMAP MikroC PRO mette a disposizione una libreria con la quale si possono disegnare facilmente punti, linee, curve, testi ed & costruire Figura 1: un tipico display grafico con risoluzione 128x64 pixel. anche gestire file bitmap con immagini disegnate off-line. Per poter disporre delle funzioni di libreria, è necessario selezionare la voce GLCD nell’albero delle librerie (strumento Library Manager). La libreria offre molte funzioni, alcune per l’accesso diretto al display: • Glcd_Init • Glcd_Set_Side • Glcd_Set_X • Glcd_Set_Page • Glcd_Read_Data • Glcd_Write_Data Figura 2: struttura del display grafico. Altre funzioni sono usate per disegnare e scrivere e gestire le immagini bitmap sul display: • Glcd_Fill • Glcd_Dot • Glcd_Line • Glcd_V_Line • Glcd_H_Line • Glcd_Rectangle • Glcd_Box • Glcd_Circle • Glcd_Set_Font • Glcd_Write_Char • Glcd_Write_Text • Glcd_Image LE IMMAGINI BITMAP Mediante l’utility GLCD Bitmap Editor, integrata nell’ambiente di sviluppo di MikroC PRO, è possibile caricare su display un file bitmap disegnato con un qualunque programma di grafica. I vincoli a cui sottostare sono: • risoluzione pari a 128x64 punti; Figura 3: Pixel della singola pagina. Figura 4: selezione della libreria grafica su Library Manager. 57 progettare & costruire · progettare & costruire Tabella 1 PIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Figura 5: caricare una bitmap sul display è facilissimo. Figura 6: schema elettrico. 58 NOME SIGNIFICATO CS1 Chip Select 1 CS2 Chip Select 2 GND Power supply (GND) Vcc Power supply (+5V) Vo Contrast adjust RS Register Select R/W Read/Write E Enable signal DB0 Data bus line 0 (LSB) DB1 Data bus line 1 DB2 Data bus line 2 DB3 Data bus line 3 DB4 Data bus line 4 DB5 Data bus line 5 DB6 Data bus line 6 DB7 Data bus line 7 (MSB) RST ReSeT Vee Contrast adjust power supply LED+ LED backlight anode LEDLED backlight cathode PER approfondire... - PILLOLE DI MICROCONTROLLORI PIC, Paolo Rognoni, Inware edizioni 2009: http://www.inwaredizioni.it/pic2/ - PIC EXPERIENCE: http://picexperience.altervista.org - Display LCD grafico: http://www.elettroshop.it/dettagli.asp?pid=765 - Datasheet LCD: http://www.elettroshop.it/files/prodotti/download/apex/RG128643YFHLYB-D.pdf - Datasheet controller KS108: http://www.elettroshop.it/files/prodotti/download/apex/ks0108b.pdf Figura 7: il display in funzione, connesso alla scheda. Figura 8: disegno di punti, retta e cerchio. Figura 9: scrittura di un testo su display grafico. • profondità di colore: 1 bit (in altre parole, immagine in bianco e nero). LIMITI DI COMPILAZIONE E ALTRI APPROFONDIMENTI In figura 5 è mostrato ciò che appare caricando un’immagine nel tool fornito da Mikroelektronika. Premendo il pulsante Copy Code To Clipboard, si ottiene il codice C (relativo all’immagine) da inserire nel proprio progetto. Per chi dispone solamente della versione gratuita di MikroC PRO, il codice proposto non è in grado di funzionare se compilato per esteso. Si rende necessaria la compilazione parziale, andando a selezionare quali effetti grafici si vogliono visualizzare. ScritturaTesto(); delay_ms(3000); #endif SULLA DEMO BOARD Per implementare un semplice esempio su demoboard, si utilizza lo schema elettrico di figura 6. Si faccia attenzione come, per ragioni legate alla programmazione incircuit, si sia reso necessario interporre due jumper sulle linee RB6 e RB7. I jumper vanno lasciati aperti in fase di programmazione (download del firmware) e richiusi per la visualizzazione delle immagini su LCD. Il progetto, scaricabile dal sito della rivista, è tale da generare alcuni effetti grafici, come mostrato in figura 7. void main(void) { ConfiguraPIC(); GLCD_Init(); Glcd_Fill(0x00); delay_ms(500); #ifdef ESEMPIO_1 PuntiRettaCerchio(); delay_ms(3000); #endif #ifdef ESEMPIO_2 Glcd_Fill(0x00); #ifdef ESEMPIO_3 Glcd_Fill(0x00); VisualizzaBitmap(); #endif while (1); } Nel caso di licenza completa è possibile compilare tutti gli esempi grafici, come illustrato nelle figure 7, 8, 9. Per approfondire l’argomento, si invita il lettore a consultare il libro PILLOLE DI MICROCONTROLLORI PIC (vedi paragrafo Riferimenti) con esempi dettagliati sull’uso dei display LCD grafici e tanto altro ancora. q CODICE MIP 2804530 59