Você está na página 1de 16

SEPTIEMBRE - FEBRERO 2011

INFORME #05

ERICK PEÑAHERRERA
JOSE BUCHELI
XAVIER MUÑOZ
DATASHEETS
 PIC16F877A

 LCD 16x2
DESARROLLO PRÁCTICO
OBJETIVO: Utilizar el microcontrolador con teclado matricial y PS2
1. EJERCICIO 1
PROBLEMA:
Visualizar en un display LCD el valor ingresado por un teclado matricial.

ALGORITMO:
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 FLUJO

INICIO

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

Pulso en
el teclado

Muestro en el LCD

ESQUEMÁTICO
S
I
M
U
L
A
C
I
Ó
N

FOTOS
2. EJERCICIO 2

PROBLEMA:

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

ALGORITMO:

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

S
I
M
U
L
A
C
I
Ó
N
FOTOS
3. EJERCICIO 3

PROBLEMA:
Elaborar un programa para mostrar los caracteres ingresados desde un
teclado PS-2.
ALGORITMO:
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

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

CONCLUSIONES

 El lenguaje de programación cargado en los microcontroladores PIC se lo realizó a través


del Compilador microBasic, debido a que es un lenguaje fácil y rápido de programar, para
principiantes en microcontroladores.

 Que la elaboración de esta práctica nos sirve para comprender un poco más la teoría de los
microcontroladores y su aplicación; de ahí la importancia del mismo, pues a través de él se
puede apreciar lo interesante que es la programación en nuestra vida cotidiana.

 Que el microcontrolador utilizado en esta práctica el 16f877A, tienen una capacidad muy
grande para control de procesos básicos y complejos, aunque en algunos programas
ocupan extenso espacio de memoria es suficiente para la práctica para empezar a conocer
sobre microcontroladores.

 La utilización del pic16f877a y teclado podemos realizar cualquier tipo de necesidad que en
este caso es una calculadora básica pero para hacer cálculos el pic18f452 reacciona mejor
a cálculos matematicos.
BIBLIOGRAFIA

http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf, Microchip, datasheet PIC16F877A, fecha de


revisión: 25/09/2010.
http://www.thailabresearch.com/default.asp?content=project&pID=24 , Fairchild, datasheet LCD
16x2, fecha de revisión: 21/11/2010.
http://www.micropik.com/PDF/BT136-600.pdf, Micropik, datasheet bt136, fecha de revisión: 18/10/2010.

Você também pode gostar