You are on page 1of 60

UNIVERSIDAD POLITECNICA

SALESIANA

SISTEMAS MICROPROCESADOS I

PRACTICA Nº5

ERIKA ABRIL
VINICIO DAVILA
REMIN ZAMBRANO

SEXTO SEMESTRE
TEMA: Teclados

1
OBJETIVO: Utilizar el microcontrolador con teclados
matricial y P2P.

ELEMENTOS: RP1 es un pack de resistencias de 10 Kohms.

EJERCICIO 1:

Visualizar en el LCD el valor ingresado por un teclado


matricial.

ALGORITMO:

ENTRADAS:

1. Datos ingresados por el teclado.

SALIDAS:

2. Datos que serán observados en el LCD.

PROCESOS:

1. Definir variables una tipo byte y una tipo string.

2. Configurar LCD.

3. Apagar el cursor del LCD.

4. Inicializar el teclado en el puerto C.

5. Comparación.

6. Mientras sea verdadero mostrar en el LCD los datos


ingresados desde el teclado y q estarán almacenados
en las variables.

7. En el LCD se mostraran los dataos ingresados desde


teclado matricial.

8. De ser falso, entonces terminar el programa.

2
EJERCICIO 2:

Escribir un
programa para
realizar las
N siguientes
operaciones: suma,
Si resta,
multiplicación,
división, potencia
de tres, raíz
cuadrada, seno,
tangente,
logaritmo base 10.
De dos números
según sea el caso.
Para escoger al
operador utilizar la
opción case-select.
OPERACION SIMBOLO P
OPERA
Suma 1
Resta 2
Multiplicación 3
División 4
Potencia 5
Raíz cuadrada 6

3
Seno 7 1
Tangente 8 1
Log10 9 1

El LCD debe mostrar el siguiente mensaje ingrese el numero


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 el


N2=3

Luego aparece el mensaje 3+2=5

PROGRAMA:

program calculadora

dim x as byte

dim x1 as byte

dim x2 as byte

dim x3 as byte

dim y as byte

dim resta as integer

dim division as float

dim potencia as float

dim raiz as float

dim seno as float

dim tangente as float

dim logaritmo as float

dim b as string[6]

4
dim b1 as string[6]

dim b3 as string[6]

main:

Lcd_config(portb,7,6,5,4,portb,0,1,2)

lcd_cmd(lcd_cursor_off)

keypad_init(portc)

lcd_out(1,1,"Operaciones")

lcd_out(2,1,"Matematicas")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"1)Suma")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"2)Resta")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"3)Multiplicación")

5
delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"4)División")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"5)Potencia")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"6)Raiz")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"7)Seno")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"8)Tangente")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"9)Log10")

6
delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Elige el numero")

lcd_out(2,1,"de la operacion")

delay_ms(1000)

while true

x=keypad_read

select case x

case 1 '........................suma................................................

lcd_cmd(lcd_clear)

lcd_out(1,1,"La Suma")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n1=")

delay_ms(500)

while true

x1=keypad_read

7
select case x1

case 1

x1=1

wordtostr(x1,b)

lcd_out(1,7,b)

goto lazo

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,7,b)

goto lazo

case 3

x1=7

wordtostr(x1,b)

lcd_out(1,11,b)

goto lazo

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,11,b)

8
goto lazo

case 6

x1=5

wordtostr(x1,b)

lcd_out(1,11,b)

goto lazo

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,11,b)

goto lazo

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,11,b)

goto lazo

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,11,b)

goto lazo

case 10

x1=6

wordtostr(x1,b)

9
lcd_out(1,11,b)

goto lazo

case 11

x1=9

wordtostr(x1,b)

lcd_out(1,11,b)

goto lazo

end select

wend

lazo: '......................................

delay_ms(1000)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n2=")

delay_ms(500)

while true

x2=Keypad_Released

select case x2

case 1

x2=1

wordtostr(x2,b1)

10
lcd_out(1,12,b1)

goto lazo1

case 2

x2=4

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo1

case 3

x2=7

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo1

case 4

lcd_out(1,12,"Esc")

goto lazo1

case 5

x2=2

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo1

case 6

x2=5

wordtostr(x2,b1)

11
lcd_out(1,12,b1)

goto lazo1

case 7

x2=8

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo1

case 8

x2=0

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo1

case 9

x2=3

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo1

case 10

x2=6

wordtostr(x2,b)

lcd_out(1,12,b)

goto lazo1

12
case 11

x2=9

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo1

end select

wend

lazo1:

delay_ms(1000)

lcd_cmd(lcd_clear)

x3=x1+x2

wordtostr(x3,b3)

lcd_out(1,-4 ,b)

delay_ms(500)

lcd_out(1,2,"+")

delay_ms(500)

lcd_out(1,3,b1)

delay_ms(500)

lcd_out(1,8,"=")

13
delay_ms(500)

lcd_out(1,6,b3)

goto lazo1

'---------------------------------
resta---------------------------------------------

case 5

lcd_cmd(lcd_clear)

lcd_out(1,1,"La Resta")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n1=")

delay_ms(500)

while true

x1=keypad_read

select case x1

case 1

x1=1

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 2

14
x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 3

x1=7

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 4

lcd_out(1,12,"Esc")

goto lazo2

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 6

x1=5

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 7

15
x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

case 11

x1=9

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo2

16
end select

wend

lazo2: '......................................

delay_ms(1000)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n2=")

delay_ms(500)

while true

x2=keypad_read

select case x2

case 1

x2=1

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

case 2

x2=4

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

17
case 3

x2=7

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

case 4

lcd_out(1,12,"Esc")

goto lazo3

case 5

x2=2

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

case 6

x2=5

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

case 7

x2=8

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

18
case 8

x2=0

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

case 9

x2=3

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

case 10

x2=6

wordtostr(x2,b)

lcd_out(1,12,b)

goto lazo3

case 11

x2=9

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo3

end select

wend

19
lazo3:

delay_ms(1000)

lcd_cmd(lcd_clear)

resta=integer (x1) - integer (x2)

inttostr(resta,b3)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,6,"-")

delay_ms(500)

lcd_out(1,3,b1)

delay_ms(500)

lcd_out(1,8,"=")

delay_ms(500)

lcd_out(1,7,b3)

goto lazo3

'-----------------------------
multiplicacion-------------------------------------------------

case 9

lcd_cmd(lcd_clear)

lcd_out(1,1,"Multiplicacion")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n1=")

delay_ms(500)

while true

20
x1=keypad_read

select case x1

case 1

x1=1

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 3

x1=7

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 4

lcd_out(1,12,"Esc")

goto lazo4

case 5

21
x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 6

x1=5

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

22
case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

case 11

x1=9

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo4

end select

wend

lazo4:

delay_ms(1000)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n2=")

delay_ms(500)

while true

x2=keypad_read

select case x2

23
case 1

x2=1

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

case 2

x2=4

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

case 3

x2=7

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

case 4

lcd_out(1,12,"Esc")

goto lazo5

case 5

x2=2

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

24
case 6

x2=5

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

case 7

x2=8

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

case 8

x2=0

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

case 9

x2=3

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

case 10

x2=6

wordtostr(x2,b)

25
lcd_out(1,12,b)

goto lazo5

case 11

x2=9

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo5

end select

wend

lazo5:

delay_ms(1000)

lcd_cmd(lcd_clear)

x3=x1*x2

wordtostr(x3,b3)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,6,"x")

delay_ms(500)

26
lcd_out(1,3,b1)

delay_ms(500)

lcd_out(1,8,"=")

delay_ms(500)

lcd_out(1,7,b3)

goto lazo5

'--------------------------------
division----------------------------------------------

case 2

lcd_cmd(lcd_clear)

lcd_out(1,1,"La Division")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n1=")

delay_ms(500)

while true

x1=keypad_read

select case x1

case 1

x1=1

wordtostr(x1,b)

lcd_out(1,12,b)

27
goto lazo6

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo6

case 3

x1=7

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo6

case 4

lcd_out(1,12,"Esc")

goto lazo6

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo6

case 6

x1=5

wordtostr(x1,b)

lcd_out(1,12,b)

28
goto lazo6

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo6

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo6

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo6

case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo6

case 11

x1=9

wordtostr(x1,b)

29
lcd_out(1,12,b)

goto lazo6

end select

wend

lazo6: '......................................

delay_ms(1000)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n2>0=")

delay_ms(500)

while true

x2=keypad_read

select case x2

case 1

x2=1

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo7

case 2

x2=4

wordtostr(x2,b1)

30
lcd_out(1,12,b1)

goto lazo7

case 3

x2=7

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo7

case 4

lcd_out(1,12,"Esc")

goto lazo7

case 5

x2=2

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo7

case 6

x2=5

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo7

case 7

x2=8

wordtostr(x2,b1)

31
lcd_out(1,12,b1)

goto lazo7

case 8

x2=0

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo7

case 9

x2=3

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo7

case 10

x2=6

wordtostr(x2,b)

lcd_out(1,12,b)

goto lazo7

case 11

x2=9

wordtostr(x2,b1)

lcd_out(1,12,b1)

goto lazo7

32
end select

wend

lazo7:

delay_ms(1000)

lcd_cmd(lcd_clear)

division=float(x1)/float(x2)

floattostr(division,b3)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,6,"/")

delay_ms(500)

lcd_out(1,3,b1)

delay_ms(500)

lcd_out(1,8,"=")

delay_ms(500)

lcd_out(1,7,b3)

goto lazo7

case 6 '........................potencia de
3................................................

lcd_cmd(lcd_clear)

33
lcd_out(1,1,"Potencia de 3")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n=")

delay_ms(500)

while true

x1=keypad_read

select case x1

case 1

x1=1

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 3

x1=7

34
wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 6

x1=5

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

35
goto lazo8

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

case 11

x1=9

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo8

end select

wend

lazo8:

delay_ms(1000)

lcd_cmd(lcd_clear)

potencia=(pow(x1,3))+1

36
wordtostr(potencia,b3)

lcd_out(1,1,"pot3")

delay_ms(500)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,8,"=")

delay_ms(500)

lcd_out(1,8,b3)

goto lazo8

case 10 '........................raiz
cuatrada................................................

lcd_cmd(lcd_clear)

lcd_out(1,1,"Raiz cuadrada")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n=")

delay_ms(500)

while true

x1=keypad_read

select case x1

case 1

x1=1

37
wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 3

x1=7

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 6

x1=5

38
wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

case 11

39
x1=9

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo9

end select

wend

lazo9:

delay_ms(1000)

lcd_cmd(lcd_clear)

raiz=sqrt(float(x1))

floattostr(raiz,b3)

lcd_out(1,1,"raiz")

delay_ms(500)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,7,"=")

delay_ms(500)

lcd_out(1,5,b3)

goto lazo9

case 3 '........................seno................................................

lcd_cmd(lcd_clear)

40
lcd_out(1,1,"seno(n)")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n=")

delay_ms(500)

while true

x1=keypad_read

select case x1

case 1

x1=1

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 3

x1=7

41
wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 6

x1=5

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

42
goto lazo10

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

case 11

x1=9

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo10

end select

wend

lazo10:

delay_ms(1000)

lcd_cmd(lcd_clear)

seno=sin(float(x1))

43
floattostr(seno,b3)

lcd_out(1,1,"sin")

delay_ms(500)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,7,"=")

delay_ms(500)

lcd_out(1,5,b3)

goto lazo10

case 7
'........................tangente................................................

lcd_cmd(lcd_clear)

lcd_out(1,1,"tangente")

delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n1=")

delay_ms(500)

while true

x1=keypad_read

select case x1

case 1

x1=1

44
wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 3

x1=7

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 6

x1=5

45
wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

case 11

46
x1=9

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo11

end select

wend

lazo11:

delay_ms(1000)

lcd_cmd(lcd_clear)

tangente=tan(float(x1))

floattostr(tangente,b3)

lcd_out(1,1,"tan")

delay_ms(500)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,7,"=")

delay_ms(500)

lcd_out(1,5,b3)

goto lazo11

case 11
'........................logaritmo................................................

lcd_cmd(lcd_clear)

lcd_out(1,1,"log10")

47
delay_ms(500)

lcd_cmd(lcd_clear)

lcd_out(1,1,"Ingrese n1=")

delay_ms(500)

while true

x1=keypad_read

select case x1

case 1

x1=1

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

case 2

x1=4

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

case 3

x1=7

wordtostr(x1,b)

48
lcd_out(1,12,b)

goto lazo12

case 5

x1=2

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

case 6

x1=5

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

case 7

x1=8

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

case 8

x1=0

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

49
case 9

x1=3

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

case 10

x1=6

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

case 11

x1=9

wordtostr(x1,b)

lcd_out(1,12,b)

goto lazo12

end select

wend

lazo12:

delay_ms(1000)

lcd_cmd(lcd_clear)

logaritmo=log10(float (x1))

floattostr(logaritmo,b3)

50
lcd_out(1,1,"Log10")

delay_ms(500)

lcd_out(1,1,b)

delay_ms(500)

lcd_out(1,7,"=")

delay_ms(500)

lcd_out(1,5,b3)

goto lazo12

end select

wend

end.

ALGORITMO:

ENTRADAS:

1. Datos que ingresan desde el teclado PS2.

SALIDAS:

2. Operaciones realizadas y desplegadas en el LCD.

PROCESOS:

1. Definir las variables tipo byte, string, float, integer.

2. Configurar el LCD.

3. Apagar el cursor.

4. Inicializo el teclado PS2 en el puerto C.

5. Despliego en el LCD los mensajes que necesite, cada


uno con los números respectivos de la operación.

6. Realizar un retraso de 500ms.

7. Limpiar el LCD.

51
8. Una comparación.

9. Mientras sea verdadero

10. Guardar en una variable los datos de los números que


seleccionaran la operación a realizarse, estos ingresan
desde el teclado PS2.

11. Cada operación tendrá asignado un valor el cual


una vez seleccionado realizara el proceso de cada
case.

12. Cada case tendrá una comparación en la cual de


ser verdadera, irá a un lazo.

13. Crear un lazo.

14. Cada case debe programarse para que el LCD


despliegue la cantidad de números que hay que
ingresar para realizar la operación.

15. Seleccione la operación y el número sea desplegado


en el LCD.

16. Programar cada case para realizar la operación


correspondiente.

17. Desplegar el resultado de la operación en el LCD.

18. Regresar al inicio del programa.

19. En caso de que la primera comparación sea falsa


el programa finaliza.

52
NO

SI

Desplieg
a el
resultado
en LCD

NO

SI

Desplieg
a el
resultado
en LCD

NO

53
SI
Desplieg
a el
resultado
en LCD
NO

Desplieg SI
a el
resultado
en LCD

NO

Desplieg SI
a el
resultado
en LCD

NO

Desplieg SI
a el
resultado
en LCD

NO
SI
Desplieg
a el
resultado
en LCD

NO
SI
Desplieg
a el
resultado
en LCD

NO
SI
Desplieg
a el
resultado
en LCD

54
EJERCICIO 3:

Elaborar un programa para mostrar los caracteres


ingresados desde un teclado PS2.

program ps2

dim

keydata as byte

special as byte

down as byte

txt as string[20]

main:

INTCON=0

Lcd_Config(PORTB, 3,2,1,0,PORTB,4,5,6)

Ps2_Config(PORTC,1,0)

‘clock=portc.1

‘data=port.0

Delay_ms(100)

txt=” “

while true

if (Ps2_Key_Read(keydata, special, down))<>0 then

if((down=1) and(keydata=16))<>0 then

Lcd_Cmd(LCD_MOVE_CURSOR_LEFT)

else if((down=1) and (keydata=13))<>0 then

else if((down=1)and (special=0) and(keydata<>0))


then

Lcd_Chr_CP(keydata)

55
End if

End if

End if

Delay_ms(10)

Wend

End.

ALGORITMO:

ENTRADAS:

1. Datos que ingresan por el teclado ps2.

SALIDAS:

1. Datos que serán visualizados en el LCD.

PROCESOS:

1. Crear variables del tipo necesario.

2. Deshabilitar todas las interrupciones.

3. Configurar el LCD.

4. Inicializar el teclado PS2 en el puerto C.

5. Configurar el puerto C, al pin 1 ira clock (pin4 del


conectorps2) al pin 0 ira data (pin1 del conector).

6. Retardo del 100ms para terminar de estabilizar el


teclado.

7. Lazo while.

8. Comandos de PS2 que leerán los caracteres que


ingresan.

9. Configurar la tecla espaciadora.

10. Configurar enter

56
11. Mostrar datos que hayan sido ingresados por
teclado en el LCD.

12. Retardo anti rebote.

13. Fin de lazo.

14. Fin de programa.

57
58
59
60

You might also like