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