|
ultimo aggiornamento 18 maggio 2014 |
|
Quella presentata in questa pagina è un'interfaccia che permette di pilotare un display LCD tramite un'interfaccia seriale. Il progetto originale è disponibile sul sito francese Kudelsko.
Le principali caratteristiche dell'interfaccia sono:
Gestione di display LCD del tipo: 2x16, 2x20 e 4x20 caratteri
Comunicazione di tipo seriale configurabile a : 2400, 4800, 9600, 19200 baud 8 bit, no parity, 1 bit stop
Interfaccia compatibile con display del tipo: HD44780.
Protocollo di trasferimento: stringa di caratteri ASCII.
Gestione semplificata del display LCD da un insieme predefinito di codici ASCII.
La velocità si varia modificando la posizione dei DIP. Il collegamento con la scheda avviene tramite un connettore analogo a quello dei servo (+5V, GND, Sig). La sintassi per l'invio dei comandi è molto semplice.
dove:
"&$" cancella il display
"1XXXXXXXXXXXXXXXX#$" scrive sulla prima riga del display
"2XXXXXXXXXXXXXXXX#$" scrive sulla seconda riga del display
Descrizione del circuito
Il circuito è molto semplice, il cuore di tutto è
IC1 un PIC16F628 (oppure PIC 16F628A) che risulta essere l'evoluzione del "vecchio" PIC16F84, avente
caratteristiche davvero notevoli. Questo microcontrollore dispone di un'area di
memoria programma di 2048 word, essendo in tecnologia Flash, quest'area di
programma può essere scritta/cancellata/riscritta fino a 10000 volte. L'area RAM
è di 224 byte mentre l'area dati EEPROM è di 128 byte.
La velocità di questo microcontrollore è data dal quarzo Q1 che è di 12MHz.
Dispone di 16 Linee di I/O, 3 timers digitali interni, Power-On-Reset,
Brown-Out-Detect e dispositivo seriale USART programmabile.
La tensione di alimentazione di 5 volt viene inviata
ai pin Vdd (pin 14) e Vss (pin 5) collegati rispettivamente al positivo ed alla
massa. Il condensatore C3 da 100nF è un condensatore di disaccoppiamento,
questi si mettono molto vicini ai pin di aumentazione di un integrato
(generalmente digitale) per evitare che a causa della resistenza della pista che
porta la corrente all'integrato in questione la tensione si abbassi a causa del
picco di corrente che viene generato in presenza di commutazioni dei livelli
logici, questo sopperisce all'abbassamento di tensione in quell'breve istante.
Il pin MCLR (pin 4) serve per poter effettuare il reset del PICmicro.
Normalmente viene mantenuto a 5 volt tramite la resistenza di pull up R1 e messo
a zero quando si desidera resettare il PICmicro.
Grazie alla circuiteria interna di reset di cui il PICmicro è dotato, non è
necessario collegare al pin MCLR pulsanti o circuiti RC per ottenere il reset
all'accensione.
I pin OSC1/CLKIN (pin 16) e OSC2/CLKOUT (pin 15)
sono collegati internamente al circuito per la generazione della frequenza di
clock utilizzata per temporizzare tutti i cicli di funzionamento interni al
chip.
Collegati al quarzo Q1 troviamo i condensatori di sfasamento C1-C2 (necessari
per generare l'oscillazione).
RB0 e RB1 sono connessi al dip-switch S1 e permettono di selezionare la velocità di trasmissione:
Velocità | RB0 | RB1 |
2400 | 0 | 0 |
4800 | 1 | 0 |
9600 | 0 | 1 |
19200 | 1 | 1 |
2400 |
4800 |
9600 |
19200 |
Nota: tutte le immagini tratte dal datasheet del PIC16F628 sono proprietà di Microchip
Il display a cristalli liquidi o LCD (dall'inglese Liquid Crystal
Display) utilizzato in questo modulo è dotato di 2 linee di 16 caratteri
ciascuna. I display LCD più comuni reperibili in commercio, hanno
un'interfaccia ideata da Hitachi che, nel tempo, è diventata uno
standard industriale utilizzato anche da altre case produttrici.
Dei 16 pin presenti se ne utilizzano
però solamente 7
RS
Register select signal
E
Enable signal
R/W
read/write selection
DB4
Data bit 4
DB5
Data bit 5
DB6
Data bit 6
DB7
Data bit 7
Il trimmer
P1
connesso al pin Vo permette di regolare il
contrasto del LCD.
|
PIC16F628 - FLASH-Based 8-Bit CMOS Microcontrollers | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
LCD 16x2 tipo C216L01YBW00 | ||
Piedinatura | Datasheet display C216L01YBW00 | Foto |
Display LCD - fasi di montaggio
Realizzazione pratica.
Per la costruzione della scheda si procederà
iniziando dalla realizzazione del circuito stampato il cui lato rame in scala
1:1 è riportato sotto.
Per la sua realizzazione si utilizzerà una basetta in
vetronite (monofaccia) di dimensioni 43x40 mm, il metodo potrà essere quello
della fotoincisione o del trasferimento termico utilizzando i cosiddetti fogli
blu (PRESS-N-PELL), in questo caso ricordo che l’immagine delle tracce del
circuito dovrà essere speculare.
Circuito stampato.
Una volta inciso il rame, si verificherà in controluce o mediante l’utilizzo di
un multimetro che non vi siano cortocircuiti soprattutto tra le piste più
vicine.
Si passerà quindi alla foratura della stessa, utilizzando principalmente una
punta da 0,8 mm, mentre si utilizzeranno una da 1mm per i connettori
In seguito si potrà passare al posizionamento e alla saldatura dei componenti
seguendo lo schema visibile sotto.
Per la saldatura si utilizzerà un piccolo
saldatore a punta fine, della potenza di circa 25 – 30 W.
S’inizierà dai ponticelli, proseguendo con le resistenze , i condensatori,
il quarzo, il dip switch, lo zoccolo dell'integrato.
Continuando con i pin-strip per il collegamento del modulo LCD
Terminato la saldatura si potrà inserire l'integrato (che sarà precedentemente
programmato) nello zoccolo facendo attenzione alla tacca di riferimento.
Programmazione del PIC16F628
Occorre prima di tutto scaricare il file esadecimale corrispondente al
modello di PIC utilizzato che potrà essere il modello 16F628-20/P (o
16F628-04/p) oppure
16F628A-I/P
Per la programmazione del
microcontrollore può essere utilizzato il
programmatore PICkit 2
prodotto dalla Microchip è
un programmatore rapido ed affidabile per scaricare il codice sviluppato
sui microcontrollori PIC che supportano la programmazione ICSP (In
Circuit Serial Programming).
Il programmatore viene fornito con il
suo Programma molto facile da utilizzare. Per
programmare il PIC può essere utile disporre di una
basetta con appositi zoccoli.
Programmazione del PIC16F628
Il
programma test è molto semplice e come è visibile la gestione
del modulo è ridotta al minimo, il programma è scaricabile da
questo link.
/*#################################################################### FILE: Test_lcd_seriale.ino VERSION: 2.0 Descrizione: Programma di prova per modulo LCD basato sul modello originale tratto dal sito francese http://kudelsko.free.fr/. Collegamenti * +5V -> 5V * GND -> GND * DATA -> 2 Ultima modifica il 16/5/2014 Applicazione realizzata da Adriano Gandolfo Blog http://it.emcelettronica.com/author/adrirobot/ This example code is in the public domain. #################################################################### */ #include <SoftwareSerial.h> SoftwareSerial LCD(3, 2); void setup() { LCD.begin(9600);// Apre la porta seriale e la setta a 9600 baud } void loop() { delay (500); LCD.print("&$"); // Cancella LCD delay (100); LCD.print("1 Test di prova#$"); // Scrive riga 1 delay (500); LCD.print("2LCD16x2caratteri#$"); // Scrive riga 2 delay (1000); LCD.print("&$"); // Cancella LCD delay (100); LCD.print("1Comando seriale#$"); // Scrive riga 1 delay (500); LCD.print("2www.adrirobot.it#$"); // Scrive riga 2 delay (2000); } |
Elenco revisioni | |
18/05/2014 | Inserito nuova versione stampato, inserito versione HEX per 16F628A |
08/04/2011 | Aggiornato |
21/03/2011 | Emissione preliminare |