2. GENERALITÀ SUL PROGETTO
Il terminale è composto principalmente da un display grafico LCD e da una tastiera per
l’immissione dei dati. In questa versione del progetto il terminale dovrà essere in grado di
emulare gli standard VT52 e VT100, per cui è risultato sufficiente farlo lavorare nella sola
modalità TESTO, ossia sarà permessa la sola visualizzazione dei caratteri appartenenti alla
tabella ASCII. In futuro sarà possibile con sole modifiche del software poter far lavorare il
terminale in modalità grafica potendo visualizzare grafici, icone e testi di varie altezze,
estendendone così l’utilizzo ad applicazioni particolari.
Il terminale da realizzare deve possedere così le seguenti caratteristiche:
• Display grafico Hitachi LMG7400 retro-illuminato risoluzione 128 x 240 pixel
• Regolazione del contrasto del display, sia via software che tramite potenziometro esterno
• Compensazione termica del contrasto
• Tastiera configurazione QWERTY
• Interfaccia seriale RS232
• Unica alimentazione di 24 Vdc +20% - 10%
Da un punto di vista di schema a blocchi, come si osserva da figura 2-1, il sistema che realizza il
terminale è costituito da una unità centrale a microcontrollore, la quale ha come interfacce la
tastiera, il Display LCD, e la seriale RS232, come ingressi riceve il sensore per la temperatura
NTC, il potenziometro per la regolazione manuale del contrasto, possiede inoltre un’uscita di
tipo PWM per realizzare la tensione per la regolazione del contrasto del display. Per quanto
riguarda la memoria sia la EPROM per il software, che la RAM per i dati sono state realizzate
esternamente al MCU per necessità di spazio.
Il sistema è alimentato con un alimentatore switching; il blocco PWM ha la funzione di
convertire in analogico, ossia di integrare, il segnale PWM generato dal micro.
5
RAM EPROM
INTERFACCIA
LCD
CPU
RS232
INTERFACCIA
TASTIERA
TASTIERA
T
SENSORE
TEMPERATURA
ALIMENTATORE
SWITCHING
PWM
VinVcc
REG. MANUALE
CONTRASTO
TX-RX
DISPLAY
LCD
Figura 2-A
CPU:
La necessità di un interfaccia seriale e la presenza di un grosso numero di periferiche esterne, ha
portato alla scelta del microcontrollore 68HC11 della Motorola, il quale avendo la possibilità di
fornire esternamente BUS dati a 8 bit e BUS indirizzi ,capace di indirizzare 64Kbyte, ha
permesso con la tecnica Memory mapped I/O di implementare l’interfaccia LCD, la tastiera e
chiaramente RAM ed EPROM tutti sullo stesso BUS.
Il 68HC11 contiene al suo interno un Timer utilizzato in questo caso per generare il segnale
PWM. Possiede un convertitore A/D utilizzato per acquisire i segnali analogici del
potenziometro e del sensore di temperatura; rimangono inoltre disponibili ingressi e uscite
digitali e l’interfaccia seriale SPI per futuri ampliamenti del sistema, il 68HC11 è così risultato il
controllore più appropriato.
DISPLAY LCD:
Il display HITACHI LMG7400 utilizzato in questa applicazione è un 240 dot x 128 dot,
permette di lavorare sia in modalità testo che modalità grafica, nel primo caso è sufficiente
inviare il codice ASCII di un carattere per poterlo visualizzare, sfruttando il set di caratteri
interno, altrimenti in modalità grafica occorre lavorare pixel per pixel.
Dato che il terminale deve visualizzare solo caratteri ASCII si è fatto lavorare il display in modo
testo, lo schermo LCD è in grado di visualizzare in questa modalità 16 righe da 30 caratteri.
6
L’interfaccia LCD è risultata necessaria per accoppiare il microcontrollore al display, infatti
benché esso possa essere interfacciato direttamente sul Bus tramite un proprio controller
integrato, il MCU è risultato troppo veloce rispetto al display per cui è stata necessaria
un’operazione di mantenimento dei dati tramite questa interfaccia.
Per quanto riguarda la regolazione del contrasto il display necessita anche di una compensazione
termica per cui il segnale PWM che dovrà generare l’MCU dovrà dipendere oltre che dal
potenziometro anche dal sensore di temperatura realizzato tramite un termoresistore NTC.
Sul display è anche inglobata una lampada CFL per l’illuminazione ed è compreso anche
l’elevatore di tensione che però necessita di apposita alimentazione da 12 V.
TASTIERA:
La tastiera utilizzata dal terminale è del tipo QWERTY comprendente oltre ai tasti standard
anche tasti funzione, è necessario inoltre che vengano lette anche pressioni contemporanee di 2 o
più tasti.
La tastiera è costituita da una matrice di tasti ognuno dei quali premuto effettua un corto circuito
fra la riga e la colonna associate ad esso, la lettura viene effettuata attivando una riga alla volta e
leggendo la colonna corrispondente, l’interfaccia tastiera assolve così la funzione di utilizzare il
Bus dati una volta per la decodifica delle righe e successivamente per la lettura delle colonne.
PWM:
Il blocco PWM è in realtà un semplice integratore che ha la funzione di fare la media del segnale
PWM generato dal MCU, infatti variando via software il Duty-cicle si ottiene all’uscita di tale
integratore una tensione continua variabile nel range necessario al display per la regolazione del
contrasto.
RS232:
Il 68HC11 contiene al suo interno la SCI (Seriale Communication Interface), ossia un ricevitore
e trasmettitore seriale universale, via software è possibile settare i vari parametri, fra cui il Baud
rate, il n° di bit della trama e gli interventi sui vari tipi di errore. Per cui il formato dei dati
seriale viene gestito interamente dal MCU, a livello fisico però per rispettare la standard RS232
occorre generare una tensione compresa fra +5 e +15 V per lo stato 0, e una tensione fra -5 e -15
V per lo stato 1, per realizzare tali tensioni si è dovuto così utilizzare l’interfaccia RS232 che
non è altro che un integrato apposito accoppiato con alcuni condensatori in grado così di fornire
tali livelli.
7
3. PROGETTAZIONE HARDWARE
3.1 Interfacciamento del microcontrollore al BUS dati e BUS indirizzi
Il microcontrollore 68HC11 per fornire il bus dati e bus indirizzi esternamente lavora in modalità
Extended Multiplexed ossia le linee di indirizzo alte A8-15 vengono fornite separatamente
mentre quelle basse A0-A7 vengono multiplexate con i dati, è necessario per cui congelare gli
indirizzi mentre il bus dell’MCU è utilizzato per i dati, per fare questo si utilizza un Trasparent-
Latch
74HC373 abilitato direttamente dall’MCU con il segnale AS (Address Strobe), come da figura.
Figura 3-1
3.2 Definizione dello spazio di memoria
PA0
34
PA1
33
PA2
32
PA3
31
PA4
30
PA5
29
PA6
28
PD0
20
PD1
21
PD2
22
PD3
23
PD4
24
A8
42
A9
41
A10
40
A11
39
A12
38
A13
37
A14
36
AD0
9
AD1
10
AD2
11
AD3
12
AD4
13
AD5
14
AD6
15
AD7
16
A15
35
PA7
27
PD5
25
PE1
45
PE2
47
PE3
49
PE4
44
PE5
46
PE6
48
PE7
50
EXTAL
7
XTAL
8
AS
4
RESET
17
R/W
6
5
VRL
51
VRH
52
PE0
43
A8
A9
A10
A11
A12
A13
D0 D0
D0
3
Q0
2
D1
4
Q1
5
D2
7
Q2
6
D3
8
Q3
9
D4
13
Q4
12
D5
14
Q5
15
D6
17
Q6
16
D7
18
Q7
19
OC
1
G
11
U1
74HC373
A0
A14
A15
A1
A2
A3
A4
A5
D1
D2
D3
D4
D5
D1
D2
D3
D4
D5
D6
D7
D6
D7
C2
22pF
A6
A7
C1
22pF
Y1
8MHz
R6
10M
U4
68HC11A1
DATA BUS ADDRESS BUS
Occorre adesso definire lo spazio di memoria con cui lavora il microcontrollore 68HC11, il
quale è in grado di indirizzare 64 Kbyte, in questo spazio devono risiedere la RAM, la EPROM,
e le porte mappate in memoria, ossia l’interfaccia LCD e l’interfaccia tastiera. L’accesso
all’interfaccia del display avviene in due modi o per scrivere istruzioni o per leggere o scrivere
dati, per cui occorre dedicare due Byte uno per l’INSTRUCTION register e l’altro per il DATA
register lo stesso per l’interfaccia tastiera per la quale occorre riservare un byte per il Latch-
decoder di scrittura delle righe ROW keyboard ed un altro byte per il Buffer tree-state di lettura
delle colonne COL keyboard. Per le porte mappate in memoria è stato lasciato libero 1Kbyte
anziché soli 4 Byte per ridurre il numero di linee di indirizzo necessarie alla decodifica, questo
8
spazio è stato tolto nella parte dedicata alla EPROM riducendo così il suo spazio a 31Kbyte più
che sufficiente per contenere il programma, questo spazio superiore al necessario inoltre può
permettere in futuro di aumentare il numero di porte mappate in memoria. Lo spazio memoria
sarà mappato come in figura 3-2.
Le linee di indirizzo necessarie per selezionare lo spazio I/O sono le A15-A10 per individuare il
KByte e poi le A1 ed A0 per selezionare le quattro possibile porte; poiché non si sono utilizzate
tutte le linee di indirizzo le quattro porte si troveranno ripetute in tutto l’intervallo del Kbyte ma
questo non crea nessun problema dato che considerando tale spazio riservato non verranno mai
generati gli indirizzi consecutivi.
$0000
$8000
$8400
$FFFF
$8000
$8001
$8002
$8003
Memory Mapped I/O
Instruction Register LCD
Data register LCD
Col Keyboard
Row Keyboard
$8400
RAM
EPROM32 K
32 K
1 K
A15 A14 A13 A12 A11 A10 .... A1 A0
1 0 0 0 0 0
1 0 0 0 0 0 .... 0 0
1 0 0 0 0 0 .... 0 1
1 0 0 0 0 0 .... 1 0
1 0 0 0 0 0 .... 1 1
LINEE DI INDIRIZZO PER LO SPAZIO I/O
Figura 3-B
Per realizzare la logica combinatoria necessaria a decodificare gli indirizzi ed attivare così la
RAM l’EPROM o le porte I/O la scelta migliore è stato utilizzare una logica programmabile
ossia una PAL riducendo così lo spazio su stampato ma soprattutto riducendo il tempo di
propagazione, dato che questo rimane invariato qualunque sia la complessità delle equazioni
logiche, la PALCE16V8 della AMD è risultata sufficiente offrendo 10 ingressi e 8 uscite con un
tempo di propagazione ingressi-uscite pari a 25 ns.
Oltre alle linee di indirizzo sopra citate la PAL dovrà avere in ingresso il Clock E e il segnale
R/W generati dal MCU per sincronizzare così i segnali di abilitazione al ciclo di Bus del
microcontrollore.
9