Home

PicExperience.it and ElectroYou.itI 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.

 

 

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.

 

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 graficoPer 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;

I pixel della singola pagina


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 scrittura, 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
Vo  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:

 Alimentazione, contrasto e retroilluminazione

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

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.

 

 Schema elettrico

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.

 

  Sintesi delle note legali (italiano)
Creative Common License 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

Licenza Creative Commons
Questa opera viene distribuita con licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 3.0 Unported.
ShoppingASEhandelASErhvervIndexDKServiceIndexDK