Informe 5 Teclado PS/2

13
Universidad Politécnica Salesiana Ingeniería Electrónica Sistemas Microprocesados INFORME DE LABORATORIO V UTILIZACIÓN DE DECLARACIONES CON MICROCONTROLADOR ATMEGA16 Integrantes: Juan Villacís S. Gabriela Chicaiza Darío Valarezo Ing. Luis Oñate Periodo Sept./2009-feb/2010

description

manejo de teclado con pic16F877A

Transcript of Informe 5 Teclado PS/2

Page 1: Informe 5 Teclado PS/2

Universidad Politécnica Salesiana

Ingeniería Electrónica

Sistemas Microprocesados

INFORME DE LABORATORIO V

UTILIZACIÓN DE DECLARACIONES CON MICROCONTROLADOR ATMEGA16

Integrantes:

Juan Villacís S.

Gabriela Chicaiza

Darío Valarezo

Ing. Luis Oñate

Periodo

Sept./2009-feb/2010

Page 2: Informe 5 Teclado PS/2

Tema: Teclados

Objetivo: Utilizar el microcontrolador con teclados matricial y PS2

Elementos:Rp1 es un pack de resistencias de 10 Kohms

Desarrollo de las Prácticas del laboratorio de Sistemas Microprocesador.

Ejercicio 1

Visualizar en un display LCD el valor ingresado por el teclado matricial.

Desarrollo del ejercicio

Determinar:

Entradas:

Datos por teclado

Salidas:

Display LCD

Procesos:

o Definir variables

o Configuro mi LCD

o Configuro mi teclado

o Lee mis datos por teclado

o Displiega datos en el LCD

Diagrama de Flujo

INICIO

Configuro teclado.LCD

Defino variables A, B

Ingreso datos por teclado

Leo A=keypad_read

Visualizo # en el LCD

Fin

Page 3: Informe 5 Teclado PS/2

Codificación:

Esquemático

Simulación

Page 4: Informe 5 Teclado PS/2

2.- Escribir un programa para realizar las siguientes operaciones: suma resta ,

multiplicación ,división ,potencia de tres ,raíz cuadrada ,seno , tangente ,

logaritmo base 10, de los números o un números según sea el caso, Para

escoger al operador utilizar la opción case-select

Operación Simbología para operación Números de la Operación.

Suma 1 2

Resta 2 2

Multiplicación 3 2

División 4 2

Potencia 5 1

Raíz cuadrada 6 1

Seno 7 1

Tangente 8 1

Log10 9 1

El LCD debe mostrar el siguiente mensaje ingrese el número de la operación a

realizar:

Al ingresar el número por ejemplo 1

En e l LCD aparece el mensaje ingrese N1=2

Luego de ingresar el número aparece el mensaje ingrese el N2=3

Luego aparece el mensaje 3+2=5

Desarrollo del ejercicio

Determinar:

Entradas: Selección de Operacion por teclado

Ingresar dos Número o Uno para realizar operaciones

Salidas: resultado de la Operación en el LCD.

Procesos:

o Definir variables para las Operaciones.

o Configuro mi LCD

o Configuro mi teclado

o Lee mis datos por teclado

o Selección de Opcion

o Operación a Realizar Suma Resta Multimplicación Ver Tabla.

o Displiega datos en el LCD

o Repeticion Ciclica del Programa.

Page 5: Informe 5 Teclado PS/2

Diagrama de Flujo

Calculadora.

Codificación:

program Practica5_2calculadora dim a,j as byte dim n1,n2,resultado as integer dim n1f,n2f,resf as float dim op as string[6] dim sn1 as String[6] dim sn2 as String[6] dim sr as String[12] dim b as string[6] sub procedure leer while (n1=0) lcd_out(1,1,"valor 1:") n1=keypad_released n1f=n1 intTostr(n1,sn1)

Page 6: Informe 5 Teclado PS/2

wend lcd_out(1,10,sn1) while (n2=0) lcd_out(2,1,"valor 2:") n2=keypad_released n2f=n2 intTostr(n2,sn2) wend lcd_out(2,10,sn2) delay_ms(500) end sub sub procedure leer1 while (n1=0) lcd_out(1,1,"valor 1:") n1=keypad_released n1f=n1 intTostr(n1,sn1) wend lcd_out(1,10,sn1) delay_ms(500) end sub sub procedure displayres lcd_cmd(lcd_clear) lcd_out(1,1,sn1) lcd_out_cp(op) lcd_out_cp(sn2) lcd_out_cp("=") intTostr(resultado,sr) lcd_out(2,1,sr) delay_ms(1500) lcd_cmd(lcd_clear) end sub

sub procedure displayresf lcd_cmd(lcd_clear) lcd_out(1,1,sn1) lcd_out_cp(op) lcd_out_cp(sn2) lcd_out_cp("=") floatTostr(resf,sr) lcd_out(2,1,sr) delay_ms(1500) lcd_cmd(lcd_clear) end sub sub procedure displayresf1 lcd_cmd(lcd_clear) lcd_out(1,1,op) lcd_out_cp(" de") lcd_out_cp(sn1) lcd_out_cp("=") floatTostr(resf,sr) lcd_out(2,1,sr) delay_ms(1500)

Page 7: Informe 5 Teclado PS/2

lcd_cmd(lcd_clear) end sub sub procedure operaciones select case a case 1 lcd_cmd(lcd_clear) leer op="+" resultado=n1+n2 displayres case 2 lcd_cmd(lcd_clear) leer op="-" resultado=n1-n2 displayres case 3 lcd_cmd(lcd_clear) leer op="*" resultado=n1*n2 displayres case 4 lcd_cmd(lcd_clear) leer op="/" resf=n1f/n2f displayresf case 5 lcd_cmd(lcd_clear) leer op="^" resf=1.0 for j=1 to n2 resf=resf*n1f next j displayresf case 6 lcd_cmd(lcd_clear) leer1 op="raiz" resf=sqrt(n1) displayresf1 case else lcd_cmd(lcd_clear) lcd_out(1,1,"No hay operacio-") lcd_out(2,1,"nes asignadas") delay_ms(500) lcd_cmd(lcd_clear) end select

Page 8: Informe 5 Teclado PS/2

end sub main: lcd_config(portb,7,6,5,4,portb,0,1,2) lcd_cmd(lcd_cursor_off) keypad_init(portc) lazo: while (a=0) lcd_out(1,1,"Ingrese su") lcd_out(2,1,"opcion: ") a=keypad_released wordtostr(a,b) wend lcd_out(2,8,b) delay_ms(500) operaciones n1=0 n2=0 a=0 goto lazo end.

Esquemático

Page 9: Informe 5 Teclado PS/2

Simulación

Ejercicio 3.-

Elaborar un programa para mostrar los caracteres ingresados desde un teclado PS2

Descripción y funcionamiento a “alto nivel”

Un teclado PS/2 de 104 teclas para PC es un dispositivo razonablemente inteligente.

Esto quiere decir que él mismo se encarga de la parte hardware del rastreo de teclas,

evitar los insufribles rebotes y de trasmitirnos, mediante una trama perfectamente

establecida, de los resultados, de los resultados de nuestras manipulaciones sobre sus

teclas.

El teclado PS/2 tiene un mapa de teclas a las que se las asigna un código, de uno o

dos bytes, para cada una de ellas y que son los códigos que nos va a trasmitir para

indicarnos que se está pulsando un tecla determinada. A estos códigos les vamos a

llamar códigos de rastreo de teclado. Más abajo se muestra una imagen de un

teclado estándar donde se muestra los códigos de rastreo de todas y cada una de las

teclas:

El teclado PS/2 envía el código de rastreo asociado a una tecla al ser ésta pulsada,

tantas veces como sea necesario si se mantiene pulsada con una cadencia tal como

Page 10: Informe 5 Teclado PS/2

indique su tiempo de repetición, que es programable, y el mismo código de rastreo con

el prefijo del byte F0h al ser soltada, también conocido como break code.

Por ejemplo: Para conseguir la letra G Mayúscula debemos pulsar la tecla shift y

mientras la mantenemos pulsada, pulsada, pulsar la tecla G, soltar la tecla G y soltar la

tecla shift. Esa secuencia de pulsaciones nos va a hacer que el teclado trasmita la

siguiente secuencia de Bytes:

Pulsar Shift-> 12h

Pulsar “G” -> 34h

Soltar “G” -> F0h 34h

Y soltar Shift -> F0h 12h

O escribiendo solo los bytes que vamos a recibir:

1h, 34h , f0h ,f0h ,12h.

Nuestro cometido va a ser recibir e implementar esta secuencia de bytes a actuar en

consecuencia

El teclado PS/2 también admite comandos. Dispone de funciones Build-in que

podemos disparar mediante el envió del comando correspondiente. Abajo muestra una

tabla con los comandos disponibles que podemos enviar a nuestro teclado. (Nosotros,

en este proyecto no vamos a utilizarlos, pero ahí quedan por si alguno de mis

amables visitantes desea ampliar la funcionalidad.

COMMANDº Hex Value

Set/reset Status Indicators ED

Echo EE

Invalid command EF

Select Alternate Scan Codes F0

Invalid Command F1

Read ID F2

Set Typematic rate/Delay F3

Enable F4

Default Disable F5

Set Default F6

Set All keys

Typematic

Make/Break

Make

Typematic/Make/break

F7 F8 F9 FA

Set Key Type

Typematic

Make/break

Make

FB FC FF

Resend FE

Reset FF

Page 11: Informe 5 Teclado PS/2

Conexionado eléctrico

El teclado PS/2 se conecta mediante cuatro hilos. Dos de ellos son para alimentación

Vcc a 5V y GND y otros dos para las señales Data y Clock. El pinout de los conectores

Midi-Din PS/2 tanto hembra, los del PC, como machos los del teclado, es tal como se

muestra en la imagen inferior

Keyboard 6 pin (PS/2)

(6p Midi-Din male at cable7 Keyboard)

1-2

3-4

5-6

(6p Mini-Din Female (PS/2) at PC)

2-1

4-3

6-5

Pin Name Dir. Description 1 DATA <<<<>>>> Key Data

2 N7c Not connected

3 GND ------ Gnd

4 Vcc >>>> Power, +5 Vdc

5 CLK >>>>> Clock

6 N7c Not connected

Determinar:

Entradas:

datos por Teclado PS/2

Salidas:

Mostrar letras en el LCD.

Procesos:

Declarar mis variables

Deshabilito todas las interupciones

Configuro el LCd

Inicio teclado PS/2 en el puerto C

Clock=portc.1

Data =portC.0

Page 12: Informe 5 Teclado PS/2

Retardo para que estabilice el teclado

Configuto en Enter y backspace

Despligo datos en el LCD

Diagrama de Flujo

INICIO

Defino mis variables kD, S, D, Txt

Txt =“ “

Configuro LCD

Configurar Puertos

Var<>0

Var=16

Move Cursor

Var<>0

Var=<>0

0

enter

Dato LCD

Retardo 10 ms

Page 13: Informe 5 Teclado PS/2

Codificación:

Conclusiones:

Es necesario conocer y entender la configuración interna del teclado q vamos a

utilizar porque es necesario ubicar de manera correcta cada una de sus teclas

para manejar datos reales y visibles.

La configuración del teclado debe ser correcta porque podemos obtener datos

equívocos al momento de ejecutar y simular los datos.

Recomendaciones:

Tener un teclado fácil de configurarlo

Se necesita un PIC de mayor capacidad para poder cargar todas las

aplicaciones de la calculadora porque el pic16f877A tiene muy poca memoria

Obtener el Crack del programa para poder copilar el programa.