Está en la página 1de 12

UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

UNIVERSIDAD POLITÉCNICA SALESIANA

INTEGRANTES:

OSCAR AYALA

CRISTIAN IBARRA

ANDRÉS VALDIVIESO

1
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

PRACTICA Nº5
TEMA: TECLADOS.

OBJETIVOS: Utilizar el microcontrolador con teclados matricial y PS2.

MATERIALES:

PIC 16F877A.

Figura 1. PIC 16F877A


TECLADO MATRICIAL

Figura 2. Teclado Matricial


LCD

Figura 3. LCD

2
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

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


 Algoritmo
Entrada: Ingresar los valores al teclado a través del puerto C.

Proceso: Configurar la LCD mediante el puerto B y la lectura del teclado a


través del comando Keypad_init (portc).

Salida: Visualizo en el LCD los datos valores ingresados en el teclado.

 Diagrama de flujo:

INICIO

Definir las variables internas

Configurar el LCD
y el Teclado

Leer los valores del teclado

SALIDA

 Código

program practica4lcd1
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_red
wordTostr(a,b)
lcd_out(1,1,b)
wend
end.

3
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

 Esquemático:

 Grafico anexo:

4
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

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


resta, multiplicación, división. Log10, de dos números o un numero según
sea el caso. Para escoger la operación utilizar la opción case-select.

OPERACIÓN SIMBOLO PARA NÚMEROS DE LA


OPERACIÓN OPERACION
SUMA 1 2
RESTA 2 2
MULTIPLICACION 3 2
DIVISIÓN 4 2
LOG 10 5 1

 PROBLEMA: 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 el LCD aparece el mensaje ingrese N1=2
-Luego de ingresar el numero aparece el mensaje ingrese N2=3
-Luego aparece el mensaje 3+2=5

 ALGORITMO

Entrada: Datos hacia el microcontrolador

Proceso:
* Defino las operaciones a realizar
* Inicializo y configuro el LCD
* Configuro la opción para teclado
* Realizo las operaciones por casos
* Despliego datos en el LCD

Salida: Visualizo en el LCD las opciones y operaciones.

5
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

 Código:

program calculadora
dim x1 as byte
dim luis,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(500)
end sub
sub procedure david
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

6
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

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(3000)
lcd_cmd(lcd_clear)
end sub
sub procedure operaciones
select case luis
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)
david 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(500)
lcd_cmd(lcd_clear)
end select
end sub
main:
lcd_config(portb,7,6,5,4,portb,0,1,2)
lcd_cmd(lcd_cursor_off)
keypad_init(portc)
lazo:

7
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

while (luis=0)
lcd_out(1,1,"Ingrese su")
lcd_out(2,1,"opcion: ")
luis=keypad_released wordtostr(luis,b)
wend
lcd_out(2,8,b)
delay_ms(500)
operaciones
n1=0
n2=0
luis=0
goto
lazo
end.

 DIAGRAMA DE FLUJO:

8
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

 Esquemáticos

 Grafico Anexo

9
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

3. Elaborar un programa para mostrar los caracteres ingresados desde un


teclado PS-2

 Algoritmo:

Entrada: Ingresar los valores del teclado Ps_2 a través del puerto c
Proceso: Configurar la LCD mediante el puerto B y la lectura del teclado a través
del comando Ps2_Config(portC,1,0)

Salida: Visualizo en el display LCD los caracteres pulsados del teclado.

 Diagrama de flujos:

10
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

 Código fuente
program tecladops2
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
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.

 Esquemático:

11
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA Nº5

 Grafico anexo:

4. CONCLUSIONES:

 Pudimos observar mediante un LCD cualquier tipo de texto ingresado a través


de un teclado matricial o un PS-2.
 Verificamos la capacidad de un microcontrolador con el cual podemos
implementar las distintas operaciones matemáticas.
 Pudimos verificar la funcionalidad de un microcontrolador al controlar un
periférico de la PC el cual es el PC-2.

5. BIBLIOGRAFIA

 Manual de ayuda de microbasic ds.


 Hojas de prácticas “teclados” de Sistemas Microprocesados.

12

También podría gustarte