Sie sind auf Seite 1von 10

UNIVERSIDAD POLITÉCNICA SALESIANA

DEPARTAMENTO DE ELECTRÓNICA
LABORATORIO DE SISTEMAS
MICROPROCESADOS i

PRACTICA No. 5

TECLADOS

SEXTO ELECTRÓNICA – GRUPO #1

Integrantes:

DIEGO DUQUE
JONATHAN ECHEVERRÍA
LENIN VELASQUEZ
OBJETIVOS:

1. Comunicarnos mediante teclados ya sean numéricos o PS-2, entenderlo mediante su


programación.

2. Utilizar los pines del puerto tanto como entrada como salida para tener una
comunicación continua por medio de comunicación teclado pic.

3. Observar el funcionamiento del nuestro circuito para así poder al final obtener los
resultados que esperamos.

MARCO TEÓRICO:

Las características del pic 16f877A podemos encontrar como ya sabemos en los datasheet para
poder saber las diferentes conexiones de este micro y los limites que tiene el mismo.
A continuación mostraremos los circuitos realizados a los circuitos ya funcionando.

Podremos observar algún margen de error que es muy común en prácticas de laboratorio.
PROCEDIMIENTO:

Problemas:

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

Programa:

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.

Fotos:

Simulación:
Flujograma:

Inicio

Configurar puerto B y C como


salida y entrada
respectivamente

Ingreso por
teclado

Muestrear
en display.

Fin
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 dos números o un número según sea el caso. Para escoger la operación
utilizar la opción case – select.

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 número aparece el mensaje ingrese el N2=3
Luego aparece el mensaje 3+2=5

Programa:

program calculadora lcd_cmd(lcd_clear)


dim x1 as byte lcd_out(1,1,sn1)
dim luis,j as byte lcd_out_cp(op)
dim n1,n2,resultado as integer lcd_out_cp(sn2)
dim n1f,n2f,resf as float lcd_out_cp("=")
dim op as string[6] intTostr(resultado,sr)
dim sn1 as String[6] lcd_out(2,1,sr)
dim sn2 as String[6] delay_ms(1500)
dim sr as String[12] lcd_cmd(lcd_clear)
dim b as string[6] end sub
sub procedure leer sub procedure displayresf
while (n1=0) lcd_cmd(lcd_clear)
lcd_out(1,1,"valor 1:") lcd_out(1,1,sn1)
n1=keypad_released lcd_out_cp(op)
n1f=n1 'lcd_out_cp(sn2)
intTostr(n1,sn1) lcd_out_cp("=")
wend floatTostr(resf,sr)
lcd_out(1,10,sn1) lcd_out(2,1,sr)
while (n2=0) delay_ms(3000)
lcd_out(2,1,"valor 2:") lcd_cmd(lcd_clear)
n2=keypad_released end sub
n2f=n2 sub procedure operaciones
intTostr(n2,sn2) select case luis
wend case 1
lcd_out(2,10,sn2) lcd_cmd(lcd_clear)
delay_ms(500) leer op="+"
end sub resultado=n1+n2
sub procedure david displayres
while (n1=0) case 2
lcd_out(1,1,"valor 1:") lcd_cmd(lcd_clear)
n1=keypad_released leer op="-"
n1f=n1 resultado=n1-n2
intTostr(n1,sn1) displayres
wend case 3
lcd_out(1,10,sn1) lcd_cmd(lcd_clear)
delay_ms(500) leer op="*"
end sub resultado=n1*n2
sub procedure displayres displayres
case 4 lcd_config(portb,7,6,5,4,portb,0,1,2)
lcd_cmd(lcd_clear) lcd_cmd(lcd_cursor_off)
leer op="/" keypad_init(portc)
resultado=n1f/n2f lazo:
displayres while (luis=0)
case 5 lcd_out(1,1,"Ingrese su")
lcd_cmd(lcd_clear) lcd_out(2,1,"opcion: ")
david op="log10" luis=keypad_released wordtostr(luis,b)
resf=log10(n1f) wend
displayresf lcd_out(2,8,b)
case else delay_ms(500)
lcd_cmd(lcd_clear) operaciones
lcd_out(1,1,"No hay operacio-") n1=0
lcd_out(2,1,"nes asignadas") n2=0
delay_ms(500) luis=0
lcd_cmd(lcd_clear) goto
end select lazo
end sub end.
main:

Fotos:
Simulación:

Flujograma:

Inicio

Configurar
puerto c

Ingreso de Datos

Ingreso por
teclado

Símbolo ‘1’ Símbolo ‘5’

Símbolo ‘3’
Símbolo ‘2’ Símbolo ‘4’
Muestrear
en display.

Fin

3. Elaborar un programa para mostrar los caracteres ingresados desde un teclado PS - 2.

Programa:

program practicateclado2 while true


dim if Ps2_Key_Read(keydata, special, down) <> 0 then
keydata as byte if (down = 1) and (keydata = 16)<>0 then 'backspace
special as byte lcd_Cmd(LCD_move_cursor_left)
down as byte else if((down=1) and (keydata=13)) <>0 then 'enter
txt as string[20] else if((down=1) and (special=0)and (keydata<>0))
main: <>0 then
INTCON = 0 ' deshabilita todas la interrupciones lcd_chr_CP(keydata)
lcd_config(portb,3,2,1,0,portb,4,6,5) 'Configura lcd end if
Ps2_Config(PortC,1,0) 'inicia teclado ps/2 end if
‘en el puerto c end if
'clock=portc.1 end if
'data= portc.2 delay_ms(10) ' abtirebote
delay_ms(100) 'retardo para que finalice de wend
‘estabilizar teclado end.
txt= " "

Simulación:
CONCLUSIONES:

1. Pudimos trabajar con el micro 16f877A ya que con este realizamos la práctica, la
misma que para poderse llevar a cabo tuvimos que ver las configuraciones en los
datasheet.

2. Al obtener los resultados de nuestros circuitos pudimos darnos cuenta que que
necesitamos cambiar algunas partes de los circuitos y que al mismo tiempo ya estamos
aptos para realizar nuestros propios programas según criterios grupales e individuales.

3. Pudimos controlar el ingreso que dábamos mediante los teclados ya sean numéricos o
PS-2.

BIBLIOGRAFÍA:

Internet:

 Enlace realizado desde la página “DatashitCatalog.com”, FairChild Semiconductor,


fecha de enlace: 10/Noviembre/2010, enlace: http://www.datasheetcatalog.com/

 Enlace realizado desde Google: “16f877a”, fecha de enlace: 10/Noviembre/2010,


enlace web: http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

 Enlace realizado desde Google: “16f877a”, fecha de enlace: 10/Noviembre/2010,


enlace web: http://www.zator.com/Hardware/H7_1_1.htm

http://www.scribd.com/doc/3238689/Funcionamiento-y-Arquitectura-del-Teclado

Das könnte Ihnen auch gefallen