Está en la página 1de 19

08

Septiembre-Febrero
10

SISTEMAS MICROPROCESADOS I
INFORME 5
TECLADO

DOCENTE:
Ing. Electrónico.
Luis Oñate

ESTUDIANTES:

 Fernando Pazmiño
 Juan Suasnavas
 Gustavo Caiza
15-Dic-2010

UNIVERSIDAD POLITÉCNICA SALESIANA


UNIVERSIDAD POLITÉCNICA SALESIANA

DESARROLLO
 OBJETIVO: Utilizar el microcontrolador con teclados matricial.

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

ALGORITMO

Entrada:
Ingresar datos por medio de un teclado matricial

Proceso:
Configurar la salida del LCD en el Puerto B
Configura el Teclado en el Puerto C
Leer el Ingreso del teclado matricial
Escribir en el LCD el valor de la posición del botón en la matriz colocado en el teclado
matricial

Salida:
Visualizar en un LCD el valor de la posición de la matriz correspondiente a cada
pulsador

DIAGRAMA DE FLUJO

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

CODIGO

program teclado1
dim a as byte
dim b as string[6]
main:
lcd_config(portb,7,6,5,4,portb,0,1,2)
lcd_cmd(lcd_cursor_off)
keypad_init(portc)
while true
a=keypad_read
wordtostr(a,b)
lcd_out(1,1,b)
wend
end.

DIAGRAMA ESQUEMATICO

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

SIMULACION

FOTOS TOMADAS EN LA PRACTICA

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

Ejercicio 2.
Problema:
Escribir un programa para realizar las siguientes operaciones suma, resta, multiplicación,
división y Log base 10 de dos números o un número según sea el caso.
Para escoger la operación utilizar la opción case-select

Operación Símbolo de la operación Números de la


operación
Suma 1 2
Resta 2 2
Multiplicación 3 2
División 4 2
Log10 5 1

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


Al ingresar por ejemplo el numero 1
En el LCD aparece el mensaje ingrese N1
Luego de ingresar el número aparece el mensaje ingrese el N2
Luego aparece el mensaje 3+2=5

ALGORITMO

Entrada:
Ingreso de datos por medio de un teclado matricial

Proceso:
Configuro el LCD en el Puerto B
Configuro la entrada del teclado matricial en el Puerto C
Comparo el valor 1 Ingresado para determinar que operación debe realizar
Realizar la operación de Suma si es 1
Realizar la operación de Resta si es 2
Realizar la operación de Multiplicación si es 3
Realizar la operación de División si es 4
2

Realizar la operación de Log10 si es 5


Desplegar en el LCD el resultado de cada operación

Salida:
Visualizar en el LCD el resultado de cada operación

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

DIAGRAMA DE FLUJO

INICIO

Configurar Puerto B LCD

Puerto C Teclado

Definir variables a y b

Leer datos del teclado


A=keypad_read

If A

A=1 A=2 A=3 A=4 A=5

Ingresar N1 y N2 Ingresar N1 y N2 Ingresar N1 y N2 Ingresar N1 y N2 Ingresar N1

Res= N1+N2 Res= N1-N2 Res= N1*N2 Res= N1/N2 Res= Log10 N1

Resultado=R Resultado=R Resultado=R Resultado=R Resultado=R

Visualizar en el LCD Resultado


2

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

CODIGO

program calculadorateklado
dim x1 as byte
dim juanita,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)
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(1000)
end sub
sub procedure juan
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(1000)
end sub
sub procedure displayres
lcd_cmd(lcd_clear)
2

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)
Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

lcd_out(1,1,sn1)
lcd_out_cp(op)
lcd_out_cp("=")
floatTostr(resf,sr)
lcd_out(2,1,sr)
delay_ms(800)
lcd_cmd(lcd_clear)
end sub
sub procedure operaciones
select case juanita
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="/"
resultado=n1f/n2f
displayres
case 5
lcd_cmd(lcd_clear)
juan op="log10"
resf=log10(n1f)
displayresf
case else
lcd_cmd(lcd_clear)
lcd_out(1,1,"No hay operacio-")
lcd_out(2,1,"nes asignadas")
delay_ms(1000)
lcd_cmd(lcd_clear)
end select
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 (juanita=0)
lcd_out(1,1,"Ingrese su")
lcd_out(2,1,"opcion: ")
juanita=keypad_released wordtostr(juanita,b)
wend
Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

lcd_out(2,8,b)
delay_ms(1000)
operaciones
n1=0
n2=0
juanita=0
goto
lazo
end.

DIAGRAMA ESQUEMATICO

SIMULACIONES
2

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

FOTOGRAFIA TOMADAS EN LA PRACTICA


2

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

Ejercicio 3.
Problema:
2

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

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

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
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
2

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.

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

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.

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
2

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

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

ALGORITMO

Entrada:
Ingresar los datos por medio de un teclado PS2

Proceso:
Configurar el LCD en el Puerto B
Configurar el teclado PS2 en el Puerto C
Deshabilito todas las interrupciones
Retardo para que estabilice el teclado
Configuro en Enter y backspace
Despliego datos en el LCD

Salida:
Visualizar en el LCD los datos ingresados por medio del teclado PS2
2

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

DIAGRAMA DE FLUJO

CODIGO

program practicateclado2
dim
keydata as byte
special as byte
down as byte
txt as string[20]
main:
INTCON = 0 ' deshabilita todas la interrupciones
lcd_config(portb,3,2,1,0,portb,4,6,5) 'Configura lcd

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

Ps2_Config(PortC,1,0) 'inicia teclado ps/2


‘en el puerto c
'clock=portc.1
'data= portc.2
delay_ms(100) 'retardo para que finalice de
‘estabilizar teclado
txt= " "
while true
if Ps2_Key_Read(keydata, special, down) <> 0 then
if (down = 1) and (keydata = 16)<>0 then 'backspace
lcd_Cmd(LCD_move_cursor_left)
else if((down=1) and (keydata=13)) <>0 then 'enter
else if((down=1) and (special=0)and (keydata<>0)) <>0 then
lcd_chr_CP(keydata)
end if
end if
end if
end if
delay_ms(10) ' abtirebote
wend
end.

DIAGRAMA ESQUEMATICO

CONCLUSIONES
 Aprendimos la utilización de los teclados matriciales como para poder realizar un
calculadora con las operaciones básicas

Ing. Electrónica
Sistemas Microprocesados I
UNIVERSIDAD POLITÉCNICA SALESIANA

 Conocimos la programación para poder habilitar el ingreso de datos a través de


teclado PS2 en el cual solo utilizamos los pines de Clock y data para poder ingresar y
visualizar los datos en el LCD

 Debemos darnos cuenta de la configuración del Teclado PS2 que vayamos a conectar
para conectar los pines que deben ser conectados al microcontrolador (Clock y data)
pin RC0 y RC1 respectivamente

BIBLIOGRAFIA

 Datasheet PIC18F452

 Sistemasmicroprocesadosi.nin.com

 Angulo Usategui José María, Microcontroladores PIC. Diseño práctico de


aplicaciones. Segunda Parte: PIC16F87x,PIC18F7x
 Hojas guías de Prácticas de Laboratorio, Ing. Luis Oñate, UPS 2010-2011

Ing. Electrónica
Sistemas Microprocesados I

También podría gustarte