Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricerca personalizzata
24
voti

LO HAI MAI REALIZZATO CON UN PIC? - I PICMicro e i display grafici (prima parte)

Nelle applicazioni a microcontrollore sono sempre più presenti i display grafici. Li si trovano un po' ovunque e, data la loro flessibilità e i costi decisamente abbordabili, stanno soppiantando in diversi casi i display alfanumerici. La scelta offerta dal mercato è ampia sia in termini di controller, quanto di dimensioni dei pannelli LCD, tanto per quanto concerne gli aspetti cromatici. Ad oggi, molti compilatori offrono librerie di interfacciamento con display ma per meglio capire come funzionano e tentare una nuova sfida, si vuole proporre un modo per la realizzazione di proprie routine per la gestione dei display grafici, senza utilizzare tool "preconfezionati". Obiettivo, tra gli altri, è anche quello di permettere la portabilità tra compilatori, così da poter conservare buona parte del lavoro svolto qualora si decida di migrare di piattaforma. Chi fosse interessato ai display alfanumerici, può trovare in questo articolo e quest'altro articolo le informazioni in merito a come pilotare quel tipo di LCD.

Indice

I controller grafici: una rapida panoramica

Tra i controller grafici per display monocromatici, si annoverano due famiglie di controller che storicamente hanno fatto incetta del mercato dei display: il KS0108/KS0107 di Samsung e il T6963C di Toshiba. Il primo è ottimo per display relativamente piccoli, mentre il secondo può pilotare pannelli di dimensioni maggiori. Questo articolo tratterà il solo KS0108, non è escluso che prossimamente venga pubblicato un articolo su T6963C. Fatte salve le differenze nelle modalità di interfacciamento, le routine grafiche invece possono avere elementi in comune.

PicExperience ed ElectroYou su display grafico

PicExperience ed ElectroYou su display grafico

Display grafico 128x64 con controller KS0108

Per capire come funziona il KS0108, si prende in considerazione un display grafico abbastanza comune, con risluzione 128x64, come quello di figura.Il controller è connesso al pannello LCD in modo tale che il display viene suddiviso in due lati, destro e sinistro, e ciascun lato è ulteriormente suddiviso in settori, chiamati pagine. Ciascuna lato ha dimensione orizzontale pari alla metà della dimensione orizzontale del pannello, cioè 64 pixel; ciascuna pagina ha invece dimensione verticale pari a 8 pixel.

Schematizzazione del display grafico

Schematizzazione del display grafico

Per accedere al singolo pixel del display è necessario pertanto stabilire:

  • a quale lato appartiene il pixel (sinistro o destro);
  • a quale pagina appartiene il pixel (0,...,7);
  • quale pixel della pagina è quello che si vuole accendere o spegnere;

Tutte queste informazioni sono passate al controller per mezzo del bus parallelo e di segnali di controllo del display. Il pinout di un tipico display è quello riportato in tabella:

Pin Simbolo Funzione svolta
1 CS1 Chip select per il lato sinistro
2 CS2 Chip select per il lato destro
3 Vss GND
4 Vdd Alimentazione per la logica (+5V)
5 V0 Regolazione contrasto
6 RS Dati o comandi (istruzioni)
7 R/W Lettura o scrittura
8 E Chip Enable
9 DB0 Bus parallelo - bit 0
10 DB1 Bus parallelo - bit 1
11 DB2 Bus parallelo - bit 2
12 DB3 Bus parallelo - bit 3
13 DB4 Bus parallelo - bit 4
14 DB5 Bus parallelo - bit 5
15 DB6 Bus parallelo - bit 6
16 DB7 Bus parallelo - bit 7
17 RST Reset (attivo basso)
18 Vout Uscita in tensione negativa (-10V)
19 LED_A Retroilluminazione: anodo
20 LED_K Retroilluminazione: catodo

Il significato dei pin è il seguente.

Bus parallelo

Si tratta di un bus bidirezionale, impiegato per trasferire dati e istruzioni (comandi) dal microcontrollore al controller del display e per trasferire dati e status dal display al micrcontrollore. I pin DB0, .., DB7 rappresentano gli 8 bit del bus parallelo.


Segnali di controllo

Sono cinque segnali con i quali è possibile svolgere diverse funzioni:

  • CS1, CS2: da impiegarsi per accedere al lato sinistro e al lato destro del display, secondo la tabella:
CS1 CS2
Lato sinistro 0 1
Lato destro 1 0
  • RS: se posto a 1 sul bus parallelo transitano dati, se posto a 0 transitano istruzioni
  • R/W: se posto a 1 si accede al controller in lettura, se posto a 0 vi si accede in scrittura
RS R/W Funzione svolta
0 0 Scrittura di istruzioni
0 1 Lettura dello stato
1 0 Scrittura di dati (dal microcontrollore alla RAM del display)
1 1 Lettura di dati (dallla RAM del display al microcontrollore)


  • E: il segnale di Chip Enable deve seguire una transizione positiva (da 0 a 1) o negativa (da 1 a 0) a seconda che si voglia trasferire i dati dal microcontrollore al display o viceversa.

Alimentazione, contrasto e retroilluminazione

I pin rimanenti sono relativi all'alimentazione dei circuiti logici, alla regolazione del contrasto e all'alimentazione della retroilluminazione:

Vdd Alimentazione per la logica (+5V)
Vss GND
V0 Regolazione contrasto
Vout Uscita in tensione negativa (-10V)
RST Reset
LED_A Retroilluminazione: anodo (+5V)
LED_K Retroilluminazione: catodo (GND)

Lo schema di collegamento dell'alimentazione, regolazione del contrasto della retroilluminazione è il seguente:

Uno schema per iniziare

Eccoci giunti alla messa in pratica. Prima di iniziare è doveroso tracciare uno schema elettrico, così da disporre di una base dalla quale partire. Come si nota, il microcontrollore impiegato è un PIC18F4550, ma è possibilie impiegare un qualunque altro PIC che sia a 40 pin e che abbia una struttura analoga a quella del micro in oggetto, come ad esempio il PIC18F4620 ma anche il PIC16F877.

Pinout del PIC18F4550

Pinout del PIC18F4550

Lo schema proposto sfrutta l'oscillatore interno del PIC, permettendo quindi l'utilizzo di due pin per eventuali altre funzionalità. Si noti che, per semplicità, non è stata riportata la connessione ICSP per la programmazione.

La lista dei componenti è facilmente deducibile, ma la ripropongo qui per completezza:

IC1: 7805

IC2: PIC18F4550

Display: grafico 128x64, con controller KS0108

C1: 100nF

C2: 100uF, 25V

C3: 100nF

R1: 10k trimmer

A questo punto non resta che procurarsi il materiale e iniziare a montare il tutto. Consiglio vivamente di realizzare una scheda, anche su millefori (non è necessario un PCB), ma sconsiglio l'utilizzo di una bread-board. Per quanto riguarda il display, si veda il link in bibliografia.

Nella prossima puntata...

Nel secondo appuntamento, che verrà pubblicato a breve, saranno illustrati i comandi che il PICMicro dovrà impartire al display per le fasi di inizializzazione e di accesso alle aree grafiche.


Licenza

Questo articolo rientra nell'ambito della licenza CREATIVE COMMONS BY-NC-ND Italia 3.0, secondo quanto indicato nelle note legali qui riportate.

Licenza Creative Commons

Licenza Creative Commons

Sintesi delle note legali (italiano)

Note legali (italiano)

Legal code (international)

Commons deed (international)

Ogni riferimento a marchi di terze parti si è reso necessario esclusivamente per dare senso a questo articolo. I marchi citati appartengono alle aziende proprietarie.

Biblografia

18

Commenti e note

Inserisci un commento

di ,

Grazie Danieleitis94: hai beccato un refuso. Lo correggo subito.

Rispondi

di ,

Articolo interessante,che mi ha lasciato perplesso in un punto: "R/W: se posto a 1 si accede al controller in scrittura, se posto a 0 vi si accede in scrittura" però poi nella tabella sottostante leggo che se posto a 1 si accede in lettura??

Rispondi

di ,

Too good, Kirkegaard :-)

Rispondi

di ,

un vero globetrotter del PIC... ;)

Rispondi

di ,

Ciao demos81. Grazie per l'apprezzamento. Sono contento che i contributi che portiamo qui su ElectroYou siano di aiuto a tanti!

Rispondi

di ,

Grande Paolino!! aspettavo da un pò qualcosa del genere!!! non l'ho ancora letto ma a pausa pranzo non mancherò! Un profondo grazie affettuoso da parte di tutti i neofiti. (è grazie a te e tardofreak se son riuscito a gestire i display alfanumerici, a controllare la porta seriale ecc..)

Rispondi

di ,

Grazie carlomariamanenti. Ora viene il bello :-)

Rispondi

di ,

Grazie, DADO91! Stay tuned!

Rispondi

di ,

Complimenti Paolino! Mi avevi anticipato che sarebbe stato un gran lavoro, ma non mi avevi detto che sarebbe stato anche così interessante. Adesso non resta che aspettare la seconda e la terza parte. ;-)

Rispondi

di ,

Complimenti Paolino! Attendevo questo articolo da quando pubblicasti quello sui display LCD alfanumerici! Come sempre una garanzia! Grande!

Rispondi

di ,

@rusty: grazie. Seguiranno gli altri "episodi" con i quali affronterò nel dettaglio i comandi da impartire al display per generare le primitive geometriche.

@Marcohm: Volendo, un PIC più sobrio va benone, con solo due vincoli: la limitazione della memoria FLASH ed il ridotto numero di pin fanno sì che si possa creare un'applicazione grafica senza far fare null'altro al PIC. Se hai 40 pin a disposizione e 14 li utilizzi per il display e 4 sono per le alimentazioni, te ne restano 22 per farci altro (pulsanti, ADC, I2C, UART, ecc).

Rispondi

di ,

Paolino,non so se possibilmente dirò una boiata (chi non si fa domande non va avanti), ma volevo porti un altra domanda: come mai usi un pic a 40 pin quando ad essere usate sono solo 14 porte? Per dire, un PIC16f627 non sarebbe, ad esempio, in grado di ricoprire la stessa mansione?

Rispondi

di ,

Bravo Paolino, aspettavo da tempo l'argomento GLCD! Hai posto delle ottime basi per sviluppare una bella serie di articoli in merito, e forse leggendo mi verra' la voglia di cercare di capire come far funzionare il maledetto UC1601, http://www.artronic.pl/o_produkcie.php?id=1078, controller a basso costo ma sconosciuto... Attendo con ansia il seguito ;)

Rispondi

di ,

@mir: grazie, spero di non deluderti! @Marcohm: Grazie per l'apprezzamento. Non dispongo del Nokia 3330, quindi dovrei mettermi a studiarlo, montare una scheda, scrivere qualche routine... Insomma, per ora concludo con il KS0108, poi si vedrà.

Rispondi

di ,

Veramente un bell'articolo! Ma allo stesso modo è possibile pilotare display del Nokia 3330?

Rispondi

di ,

perdere le prossime uscite ? ...non se ne parla nemmeno lo sai che sono un fans dei tuoi articoli.. .;)

Rispondi

di ,

Grazie mir. Seguirà seconda (e forse terza) parte: non perderti le uscite successive :-)

Rispondi

di ,

Complimenti Paolino la rassegna di articoli sui PIC si fa sempre più interessante ed utile. ;)

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.