Descrição

O objectivo desta montagem é enviar para um LCD 16X2, os caracteres introduzidos via teclado PS2.
Não se impelmetarão funções mais complexas como combinações de teclas, por isso, os caracteres alfanuméricos apenas serão implementados em maiúsculas. Deverá ser possível apagar um caracter recorrendo á tecla "back space", e a tecla "Enter" (ou "return") deverá mudar da 1ª para a 2ª linha do LCD, para que se possa continuar a escrever nesta.

PS2 - ficha fêmea
Pino nº
Sinal
1
Data
2
NC
3
GND
4
Vcc (+5v)
5
Clock
6
NC

Para estabelecer a comunicação entre o teclado PS2 e o microcontrolador, apenas são nessárias duas linhas, a de dados (Data) e a de sinal de relógio (clock) para sincronizar a transferência de dados entre o teclado e o microcontrolador. O sinal de clock depende do teclado e poderá variar entre 10 a 16KHz, efectuando-se a comunicação de acordo com o seguinte diagrama temporal (transmissão no sentido teclado -> microcontrolador):

Como se desconhece a frequência de clock do teclado, usa-se uma interrupção externa para o mesmo, activa por transição, e desta forma, assim que se der uma transição na linha de clock, o microcontrolador poderá dar início á recepção dos caracteres enviados pelo teclado. O teclado usado é do tipo "multi functional, versão 2", que gera um código make para tecla premida e quando esta é libertada, envia o correspondente código break, que é composto na maior parte dos casos pelo envio do caracter F0, seguido novamente do código da tecla. Temos portanto que, para cada tecla premida (e imediatamente libertada), o teclado envia 3 conjuntos de caracteres (incluindo em cada um os start, parity e stop bits):


Scan Codes do teclado PS2, versão 2

KEY
MAKE
BREAK
-
KEY
MAKE
BREAK
-
KEY
MAKE
BREAK
A
1C
F0,1C
 
9
46
F0,46
 
[
54
F0,54
B
32
F0,32
 
`
0E
F0,0E
 
INSERT
E0,70
E0,F0,70
C
21
F0,21
 
-
4E
F0,4E
 
HOME
E0,6C
E0,F0,6C
D
23
F0,23
 
=
55
F0,55
 
PG UP
E0,7D
E0,F0,7D
E
24
F0,24
 
\
5D
F0,5D
 
DELETE
E0,71
E0,F0,71
F
2B
F0,2B
 
BKSP
66
F0,66
 
END
E0,69
E0,F0,69
G
34
F0,34
 
SPACE
29
F0,29
 
PG DN
E0,7A
E0,F0,7A
H
33
F0,33
 
TAB
0D
F0,0D
 
U ARROW
E0,75
E0,F0,75
I
43
F0,43
 
CAPS
58
F0,58
 
L ARROW
E0,6B
E0,F0,6B
J
3B
F0,3B
 
L SHFT
12
F0,12
 
D ARROW
E0,72
E0,F0,72
K
42
F0,42
 
L CTRL
14
F0,14
 
R ARROW
E0,74
E0,F0,74
L
4B
F0,4B
 
L GUI
E0,1F
E0,F0,1F
 
NUM
77
F0,77
M
3A
F0,3A
 
L ALT
11
F0,11
 
KP /
E0,4A
E0,F0,4A
N
31
F0,31
 
R SHFT
59
F0,59
 
KP *
7C
F0,7C
O
44
F0,44
 
R CTRL
E0,14
E0,F0,14
 
KP -
7B
F0,7B
P
4D
F0,4D
 
R GUI
E0,27
E0,F0,27
 
KP +
79
F0,79
Q
15
F0,15
 
R ALT
E0,11
E0,F0,11
 
KP EN
E0,5A
E0,F0,5A
R
2D
F0,2D
 
APPS
E0,2F
E0,F0,2F
 
KP .
71
F0,71
S
1B
F0,1B
 
ENTER
5A
F0,5A
 
KP 0
70
F0,70
T
2C
F0,2C
 
ESC
76
F0,76
 
KP 1
69
F0,69
U
3C
F0,3C
 
F1
05
F0,05
 
KP 2
72
F0,72
V
2A
F0,2A
 
F2
06
F0,06
 
KP 3
7A
F0,7A
W
1D
F0,1D
 
F3
04
F0,04
 
KP 4
6B
F0,6B
X
22
F0,22
 
F4
0C
F0,0C
 
KP 5
73
F0,73
Y
35
F0,35
 
F5
03
F0,03
 
KP 6
74
F0,74
Z
1A
F0,1A
 
F6
0B
F0,0B
 
KP 7
6C
F0,6C
0
45
F0,45
 
F7
83
F0,83
 
KP 8
75
F0,75
1
16
F0,16
 
F8
0A
F0,0A
 
KP 9
7D
F0,7D
2
1E
F0,1E
 
F9
01
F0,01
 
]
5B
F0,5B
3
26
F0,26
 
F10
09
F0,09
 
;
4C
F0,4C
4
25
F0,25
 
F11
78
F0,78
 
'
52
F0,52
5
2E
F0,2E
 
F12
07
F0,07
 
,
41
F0,41
6
36
F0,36
 
PRNT
SCRN
E0,12,
E0,7C 
E0,F0,
7C,E0,
F0,12 
 
.
49
F0,49
7
3D
F0,3D
 
SCROLL
7E
F0,7E
 
/
4A
F0,4A
8
3E
F0,3E
 
PAUSE
E1,14,77,
E1,F0,14,
F0,77

-NONE-