Sei sulla pagina 1di 19

Arquitectura del

Teclado y Mouse
Arquitectura del teclado y Mouse

2014-II

UNIVERSIDAD NACIONAL DEL CALLAO


FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
ESCUELA PROFESIONAL DE INGENIERA DE
SISTEMAS

Arquitectura del Teclado y Mouse

CUBAS TORRES, JESUS

1115210055

QUISPE FLORES, GUSTAVO ITALO

1115220204

SANDOVAL OSCCO, STEFANY

1115220276

SINCE ALVAREZ, FERNANDO

111522

2014-II
1

INDICE
2.1
ASPECTOS GENERALES ................................................................................................... 3
2.1.1 TECLADO ................................................................................................................................ 3
2.1.2 CARACTERISTICAS ............................................................................................................. 5
2.1.2.1
EL TECLADO SE DIVIDE EN: .................................................................................... 5
2.1.2.2
LOS TECLADOS TAMBIEN SE DIVIDEN DEPENDE DE SU FORMA FISICA: 5
2.1.3 PUERTOS DE ENLACE DEL TECLADO ........................................................................... 7
2.1.4 FUNCIONAMIENTO DEL TECLADO .................................................................................. 7
2.1.5 CAMBIO DE MANJEADOR DE INTERRUPCIONY FIN DE INTERRUPCION ............ 8
2.1.6 PROTOCOLO ....................................................................................................................... 10
2.1.6.1
COMUNICACIN CON TECLADO PS/2 ................................................................ 10
2.1.6.2
GENERALIDADES: ....................................................... Error! Bookmark not defined.
2.1.6.3
PINES DEL TECLADO ............................................................................................... 11
2.1.6.4
ANALISIS DEL PROTOCOLO .................................................................................. 12
2.1.6.5
COMUINICACION DISPOSITIVO A HOST ............................................................ 13
2.1.7 DIAGRAMA DE FLUJO DEL CODIFICADOR .................................................................. 14
2.1.8 DRIVER .................................................................................................................................. 15
2.1.9 ENVIAR DATOS DESDE EL HOST AL DISPOSITIVO .................................................. 15
2.1.10
KEY CODES ..................................................................................................................... 16

I.

INTRODUCION

II.

MARCO TEORICO

2.1 ASPECTOS GENERALES


2.1.1 TECLADO
Es el perifrico de entrada por excelencia, que permite transmitir caracteres, palabras
o nmeros al ordenador. Aunque hay muchos tipos de teclados, el ms habitual es el
teclado expandido que se puede distinguir varias partes.

Debajo del teclado existe una matriz con pistas conductoras que puede pensarse en
forma rectangular, siendo en realidad de formato irregular. Si no hay teclas oprimidas,
no se toca ningn conductor horizontal con otro vertical. Las teclas estn sobre los
puntos de interseccin de las lneas conductoras horizontales y verticales. Cuando se
pulsa una tecla. Se establece un contacto elctrico entre la lnea conductora vertical y
horizontal que pasan por debajo de la misma.

En un teclado se puede distinguir a cuatro subconjuntos de teclas:

Teclado alfanumrico: con las teclas dispuestas como en una maquina de


escribir.

Teclado numrico: (ubicado a la derecha del anterior) con teclas dispuestas


como en una calculadora.

Teclado de funciones: (desde F1 hasta F12) son teclas cuya funcin depende
del programa en ejecucin.

Teclado de cursor: para ir con el cursor de un lugar a otro en un texto. El cursor


se mueve segn el sentido de las flechas de las teclas, ir al comienzo de un
prrafo (" HOME "), avanzar / retroceder una pagina ("PAGE UP/PAGE DOWN
"), eliminar caracteres ("delete"), etc.

Cada tecla tiene su contacto, que se encuentra debajo de ella, al oprimirla se " Cierra "
y al soltarla se " Abre ", de esta manera constituye una llave " si - no ".

Partes internas del Teclado

Esta imagen explicaremos las partes de un teclado.

1. empezaremos con la imagen izquierda

Que son las teclas

Placa impresa del circuito elctrico

La placa base

La membrana

2.1.2 CARACTERISTICAS
A) EL TECLADO SE DIVIDE EN:

Teclas alfanumricas: letras y nmeros.

Teclas de puntuacin: coma, punto, punto y coma, etc.

Teclas especiales: teclas de funciones, teclas de control, teclas de flecha, tecla


de maysculas, etc.

B) LOS TECLADOS TAMBIEN SE DIVIDEN DEPENDE DE SU FORMA


FISICA:

Teclado XT de 83 teclas: se usaba en el PC XT (8086/88).

Teclado AT de 83 teclas: usado con los PC AT (286/386).

Teclado expandido de 101/102 teclas: es el teclado actual, con un mayor


nmero de teclas.

Teclado Windows de 104/105 teclas: el teclado anterior con 3 teclas


adicionales para uso en Windows.

Teclado ergonmico: diseados para dar una mayor comodidad para el


usuario, ayudndole a tener una posicin ms relajada de los brazos.

Teclado multimedia: aade teclas especiales que llaman a algunos programas


en el computador, a modo de acceso directo, como pueden ser el programa de
correo electrnico, la calculadora, el reproductor multimedia, etc.

Teclado inalmbrico: suelen ser teclados comunes donde la comunicacin


entre el computador y el perifrico se realiza a travs de rayos infrarrojos,
ondas de radio o mediante bluetooth.

Teclado flexible: Estos teclados son de plstico suave o silicona que se puede
doblar sobre s mismo. Durante su uso, estos teclados pueden adaptarse a
superficies irregulares, y son ms resistentes a los lquidos que los teclados
estndar.

2.1.3 PUERTOS DE ENLACE DEL TECLADO

2.1.4 FUNCIONAMIENTO DEL TECLADO


El teclado de los PCs no esta hecho para generar directamente ASCII
sino un codigo de bu
squeda, en realidad dos: uno que se emite al pulsar
una tecla y otro al soltarla. Si el codigo de la pulsacion de una tecla es n,
al soltarla se emite el cdigo n + 128 o n + 0x80.
El controlador del teclado debe traducir el cdigo de cada pulsacion a su
correspondiente valor en ASCII. Las teclas de control deben ser tenidas en
cuenta porque modifican el caracter final obtenido. Ejemplo de como
obtener la letra A mayu
scula:
1. Pulse la tecla Mayus , con lo que se emite el codigo 0x2a.
2. Pulse la tecla A con lo que se emite el codigo 0x1e.
3. Suelte la tecla A y se emite 0x9e = 0x1e + 0x80.

4. Suelte la tecla Mayus y se emite el codigo 0xae = 0x2a + 0x80.


5. El controlador calcula el codigo ASCII de la A, 0x41.

2.1.5 CAMBIO DE MANJEADOR DE INTERRUPCIONY FIN DE


INTERRUPCION
Para cambiar el manejador de interrupcin hemos de cambiar la direccin
de salto almacenada en el vector de interrupcin. Recuerde que la tabla
se almacena al principio de la memoria. Primero el desplazamiento y
luego el segmento del manejador. La interrupcin de teclado es la 0x09.
cli

# deshabilitar

interrupciones

mov $0x09 , %bx

# interrupci on hardware

del teclado

shl $2 , %bx

# bx = bx * 4, direcci on del vector int .

movw $controlador , ( %bx) # cambiar el desplazamiento


movw

%ds , 2( %bx)

sti

la int . teclado

# cambiar el segmento de la int . teclado


# habilitar

interrupciones

MAKEFILE
1

SHELL = / bin / bash

2
3

ASM = $( wildcard *. s)

OBJ = $( ASM :. s=.o)

BIN = $( OBJ :. o=. bin )

6
7

all :

qemu

8
9
10

clean :
$(RM ) - rfv $( BIN ) $( OBJ ) core .* *~

11
12
13

qemu : $( BIN )
killall -q qemu - system - i386 || echo " nothing to kill "

qemu - system - i386 - fda $< -s &> / dev / null &

14
15
16

%.bin :

%.o

$(LD ) -- oformat binary - Ttext 0 x7c00 $< -o $@

17

EL MAS SENCILLO : BASICO.S I


1 . code16
2
3 . text
4

co digo

de

16 bits
# secci on

de

. globl _start co#digo


punto de entrada

5
6

_start :

xor

%ax , %ax

mov

%ax , %ds

# ds = 0

mov

%ax , %ss

# ss = 0

| pila en

mov $0x9c00 , %sp

# sp = 0 x09c00 = 0 x7c00 + 0 x2000 |

12

mov $0xb800 , %ax

# 0 xb800 --> ax |

13

mov

%ax , %es

# ax --> es

| video --> es:di = 0 xb8000

14

xor

%di , %di

# 0 --> di

10

ss:sp

11

15
16

cli

# deshabilitar

17

mov $0x09 , %bx

18

shl $2 , %bx

19

movw $controlador , ( %bx) # cambiar el desplazamiento

20

movw

21

sti

%ds , 2( %bx)

interrupciones

# interrupci on hardware

del teclado

# bx = bx * 4, direcci on del vector int .


la int . teclado

# cambiar el segmento de la int . teclado


# habilitar

interrupciones

22
23

stop :

24

hlt

# hace falta ?

25

jmp stop

# bucle vac o

26
#

27

##############################################################################
28
29

2.1.6

controlador :

PROTOCOLO

COMUNICACIN CON TECLADO PS/2


La idea de este post es exponer toda la informacin posible para poder comunicarse
con un teclado estndar de PC.

A)

GENERALIDADES:

Una de las ventajas de usar un teclado PS/2 es que son baratos y fciles de
conseguir, adems solo se necesitan 2 pines para tener comunicacin con ellos.
Algo muy interesante es que se pueden conseguir pads numricos por precios muy
razonables que son de menor tamao que los teclados convencionales y as poder
usarlos en casi cualquier proyecto que demande un teclado.

Las opciones ms comunes de teclados usados en proyectos son matrices de pines lo


que sin lugar a duda son casi imposible de conseguir armados, y requieren muchos
ms hilos para poder tener comunicacin con ellos, digamos que con 8 pines podes
formar 16 posibles teclas, contra 101 teclas de los teclados de PC por tan solo 2 hilos.

Otra opcin que escuche (me la dijo el "Grande" del NIKKO) Es usar un conversor
analgico digital y una red de teclas mediante un R2R. Se ve interesante esta opcin
pero tendras que fabricar tu propio teclado y de esa forma, y no le tendra mucha
confianza a menos que lo uses para pocas teclas. Pero esto requerira un pin de AD y
creo yo que tambin convendra poner un pin para lanzar la interrupcin cuando
cualquier tecla se presione para leer el conversor.

10

B) PINES DEL TECLADO

Los pines PS/2 son los mismos tanto para el teclado como para el mouse (quiza algn
da hablemos de esta otra opcin), y adems este mismo proyecto se puede realizar
con un teclado AT.

Conector hembra de frente

Pin 1 +DATA

Pin 2 Not connected

Pin 3 GND

Pin 4 Vcc +5 V DC at 275 mA

Pin 5 +CLK

Pin 6 Not connected

11

C) ANALISIS DEL PROTOCOLO

El teclado emite un dato a la vez, mediante 11 bits. Cada vez que el clock pasa de alto
a bajo debe leerse el estado de DATA.

Primero se envia un bit de inicio y despus 8 bits de datos, los datos se envian desde
el bit menos significativo al ms significativo. Un bit de paridad y un bit de stop.

1. 1 start bit. This is always 0.


2.

8 data bits, least significant bit first.

3.

1 parity bit (odd parity).

4.

1 stop bit. This is always 1.

5.

1 acknowledge bit (host-to-device communication only)

Resumen: Bus States


Data = high, Clock = high: Idle state.
Data = high, Clock = low: Communication Inhibited.
Data = low, Clock = high: Host Request-to-Send

12

D) COMUINICACION DISPOSITIVO A HOST


Los hilos de Data y Clock son ambos colector abierto. Hay que conectar una
resistencia entre cada hilo y +5V, as el estado del bus esta en alto. Cuanto el
dispositivo quiere enviar informacin, este primero checkea el estado del hilo del clock
para asegurarse que este en alto, de otra manera no envia nada y almacena el dato
hasta que el host libera el clock. La linea de clock debe mantenerse en alto al menos
50s antes de que el dispositivo puede transmitir sus datos.

C) 1 start bit. This is always 0.


D) 8 data bits, least significant bit first.
E) 1 parity bit (odd parity).
F) 1 stop bit. This is always 1.

El dispositivo escribe un bit en la linea de Data cuando el clock esta en alto y lee
cuando el clock esta en bajo.

La frecuencia del clock es de 10 a 16.7 khz.

Es posible inhibir los transmisin poniendo la linea de clock en bajo por 100 us. El
dispositivo cancela la transmisin y se prepara para enviar el paquete "chunk". Este
paquete contiene la informacin referida al teclado o dispositivo.

La imagen del osciloscopio muestra en el canal 2 (amarillo), la informacin del clock, y


en el canal 1 (rojo) la tecla A.

13

2.1.7 DIAGRAMA DE FLUJO DEL CODIFICADOR

14

2.1.8 DRIVER
Transcribo el driver, para que no tenga que copiarlo carcter por carcter. Quiz
pueda ser distinto que el de tu teclado, pero debera ser prcticamente igual.

const char decokey[144]={

0x00,0x01,0x00,0x03,0x04,0x05,0x06,0x07,0x00,0x09,0x0a,0x0b,0x0c,0x0d,'`' ,0x00,

0x00,0x11,0x12,0x00,0x14,'Q' ,'1' ,0x00,0x00,0x00,'Z' ,'S' ,'A' ,'W' ,'2' ,0x00,

0x00,'C' ,'X' ,'D' ,'E' ,'4' ,'3' ,0x00,0x00,' ', 'V' ,'F' ,'T' ,'R' ,'5' ,0x00,

0x00,'N' ,'B' ,'H' ,'G' ,'Y' ,'6' ,0x00,0x00,0x00,'M' ,'J' ,'U' ,'7' ,'8' ,0x00,

0x00,',' ,'K' ,'I' ,'O' ,'0' ,'9' ,0x00,0x00,'.' ,'/' ,'L' ,';' ,'P' ,'-' ,0x00,

0x00,0x00,0x00,0x00,'[' ,0x00,0x00,0x00,0x58,0x59,0x5a,']' ,0x00,'\\' ,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x69,0x00,0x6b,0x6c,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x77,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

2.1.9 ENVIAR DATOS DESDE EL HOST AL DISPOSITIVO

Si bien esto no es muy necesario para usar el teclado, y probablemente sea muy
necesario en muy pocas oportunidades, lo voy a explicar por si alguien lo necesita.

1) Poner la linea de clock en bajo por al menos 100 us.


2) Poner la linea de Data en bajo
3) Soltar la linea de clock.

15

4) Esperar que el dispositivo ponga el clock en bajo.


5) Poner el valor del primer bit de datos en Data
6) Esperar que el clock vuelva a alto.
7) Esperar que el clock vuelva a bajo.
8) Repetir los paso del 5 al 7 hasta enviar todos los datos, hasta el dato de paridad.
9) Soltar la linea de Data
10)

Esperar que el dispositivo ponga a linea de Data en bajo.

11)

Esperar que el clock vuelva a bajo

12)

Esperar que se suelten el clock y Data.

2.1.10 KEY CODES

KEY MAKE BREAK ----- KEY

MAKE

BREAK ----- KEY

MAKE BREAK

A
B
C
D
E
F
G

1C
32
21
23
24
2B
34

F0,1C
F0,32
F0,21
F0,23
F0,24
F0,2B
F0,34

9
`
=
\
BKSP
SPACE

46
0E
4E
55
5D
66
29

F0,46
F0,0E
F0,4E
FO,55
F0,5D
F0,66
F0,29

54
E0,70
E0,6C
E0,7D
E0,71
E0,69
E0,7A

33

F0,33

TAB

0D

F0,0D

43

F0,43

CAPS

58

F0,58

3B

F0,3B

L SHFT 12

FO,12

42

F0,42

L CTRL 14

FO,14

L
M
N
O
P
Q
R
S
T
U
V
W

4B
3A
31
44
4D
15
2D
1B
2C
3C
2A
1D

F0,4B
F0,3A
F0,31
F0,44
F0,4D
F0,15
F0,2D
F0,1B
F0,2C
F0,3C
F0,2A
F0,1D

L GUI
L ALT
R SHFT
R CTRL
R GUI
R ALT
APPS
ENTER
ESC
F1
F2
F3

E0,F0,1F
F0,11
F0,59
E0,F0,14
E0,F0,27
E0,F0,11
E0,F0,2F
F0,5A
F0,76
F0,05
F0,06
F0,04

E0,1F
11
59
E0,14
E0,27
E0,11
E0,2F
5A
76
05
06
04

[
INSERT
HOME
PG UP
DELETE
END
PG DN
U
ARROW
L
ARROW
D
ARROW
R
ARROW
NUM
KP /
KP *
KP KP +
KP EN
KP .
KP 0
KP 1
KP 2
KP 3
KP 4

FO,54
E0,F0,70
E0,F0,6C
E0,F0,7D
E0,F0,71
E0,F0,69
E0,F0,7A

E0,75 E0,F0,75
E0,6B E0,F0,6B
E0,72 E0,F0,72
E0,74 E0,F0,74
77
E0,4A
7C
7B
79
E0,5A
71
70
69
72
7A
6B

F0,77
E0,F0,4A
F0,7C
F0,7B
F0,79
E0,F0,5A
F0,71
F0,70
F0,69
F0,72
F0,7A
F0,6B

16

X
Y
Z
0
1
2
3
4
5

22
35
1A
45
16
1E
26
25
2E

F0,22
F0,35
F0,1A
F0,45
F0,16
F0,1E
F0,26
F0,25
F0,2E

36

F0,36

F4
F5
F6
F7
F8
F9
F10
F11
F12

0C
03
0B
83
0A
01
09
78
07

PRNT

E0,12,

SCRN

F0,0C
F0,03
F0,0B
F0,83
F0,0A
F0,01
F0,09
F0,78
F0,07
E0,F0,

KP
KP
KP
KP
KP
]
;
'
,

7C,E0,
F0,12
F0,7E
E1,14,77, -NONE-

5
6
7
8
9

73
74
6C
75
7D
5B
4C
52
41

F0,73
F0,74
F0,6C
F0,75
F0,7D
F0,5B
F0,4C
F0,52
F0,41

49

F0,49

4A

F0,4A

E0,7C

3D

F0,3D

SCROLL 7E

3E

F0,3E

PAUSE E1,F0,14,
F0,77

17

BIBLIOGRAFIA:

Fuentes: Hardware:
o

http://www.seasip.info/VintagePC/ibm_1391406.html

Software: http://wiki.osdev.org/Babystep5

Recursos x86: Arquitectura


o

Lenguaje ensamblador

http://es.scribd.com/doc/31047054/40120-Evi-59-Arquitectura-Del-Teclado

http://es.slideshare.net/LuzMayerly/estructuras-internas

http://comparqui01.wordpress.com/teclado-3/

http://adcame.blogspot.com/2013/05/teclado.html

http://geneura.ugr.es/~gustavo/as/teoria/practica-03/practica-03.pdf

http://www.sebest.com.ar/?q=node/42

18