Sunteți pe pagina 1din 17

MARZO – JULIO 2010

UNIVERSIDAD POLITÉCNICA
SALESIANA
SISTEMAS MICROPROCESADOS 1

INFORME PRÁCTICA #05


TEMA: Teclados.

DAVID ESPIN
ANDRÉS MOGRO

QUITO - ECUADOR
PRÁCTICA 05

OBJETIVO: Utilizar el microcontrolador con teclado matricial y PS2.

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


matricial.

Entradas:

El puerto C que se configurara para el teclado matricial.

Procesos:

• Configuro el LCD en el puerto B


• Leo la posición del teclado

Salidas:

La salida del puerto B hacia el LCD.

CÓDIGO.
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 DE FLUJOS.

INICIO

Configuro el puerto C
como entrada y el
puerto B como salida

Pulso en NO
el teclado

SI

Muestro en el LCD
ESQUEMÁTICO.

FOTOS.
2. Escribir un programa para realizar las siguientes operaciones suma, resta,
multiplicación, división, logaritmo base 10. Para escoger la operación utilizar la
operación case-select.

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


Suma 1 2
Resta 2 2
Multiplicación 3 2
División 4 2
Logo10 5 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 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

Entradas:

El puerto C que se configurara para el teclado matricial.

Procesos:

• Configuro el LCD en el puerto B


• Selecciono la operación a realizarse
• Suma, resta, multiplicación, división, o logaritmo base 10
• Ingreso los datos

Salidas:

La salida del puerto B hacia el LCD para visualizar el resultado de la


operación.

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

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:

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
ESQUEMÁTICO.

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

Entradas:

• Los datos que se van a guardar en el microcontrolador.


• Ingresar los valores del teclado Ps_2 a través del puerto c

Procesos:

• Habilitar el display mediante el puerto B como salida.


• Configurar la LCD mediante el puerto B y la lectura del teclado a
través del comando Ps2_Config(portC,1,0)
• Enviar datos al puerto B para posteriormente enviarlos hacia el
display.

Salidas:

• Salida del puerto B hacia el display alfanumérico.

CÓDIGO
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

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 DE FLUJO

INICIO

CONFIGURAR LCD
COMO SALIDA

DECLARAR VARIABLES Y
DESHABILITAR INTERRUPCIONES

LEER LOS DATOS DEL TECLADO


Y ENVIARLOS AL PUERTO B.

VISUALIZAR EN EL LCD
ESQUEMÁTICO Y SIMULACIÓN

FOTOS
BIBLIOGRAFÍA

• MICROCONTROLADORES PIC. Diseño práctico de aplicaciones SEGUNDA PARTE:


PIC 16F87X PIC 18FXXXX. Segunda edición. Segundo Angulo, Susana Romero,
Mc Graw Hill. España.
• Hojas guías de la práctica.
• Ayuda del software Mikrobasic.

S-ar putea să vă placă și