Acumular datos de entrada de un teclado y mostrarlos por LCD

Buenas noches, les anexo el siguiente código:


Código:
;Programa que registra el numero de cedula de la persona
;y si es el numero indicado, parpadea la pantalla
;de lo contrario, se borra

TRISB = %00000011
TRISA = %10000

DEFINE LCD_DREG PORTB 'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS
DEFINE LCD_DBIT 4     'DESDE EL BIT B.4 AL BIT B.7
DEFINE LCD_RSREG PORTB'UTILIZAR EL REGISTRO  DE CONTROL/DATOS EN EL PUERTO B
DEFINE LCD_RSBIT 2    'EN EL BIT B.1
DEFINE LCD_EREG PORTB 'UTILIZAR EL ENABLE EN EL PUERTO B
DEFINE LCD_EBIT 3     'EN EL BIT B.2
PAUSE 500 ' PAUSE DE MEDIO SEGUNDO
 
LCDOUT $FE, 1 ' LIMPIAR VISOR
LCDOUT $FE, 1, "Escribir"   'ESCRIBIR EN LA PRIMER LÍNEA
LCDOUT $FE, $C0, "Cedula"        'ESCRIBIR EN LA SEGUNDA LÍNEA
LCDOUT $FE, $0C   
pause 1000

cola    var porta.0
colb    var porta.1
colc    var porta.2
cold    var porta.3
fil1    var porta.4
fil2    var portb.0
fil3    var portb.1

cola = 0
colb = 0
colc = 0
cold = 0
fil1 = 0
fil2 = 0
fil3 = 0

x var word

lcdout $FE, 1

ciclo:
cola = 1
if cola=fil1 then  
goto saca1
endif
if cola=fil2 then
goto saca2
endif
if cola=fil3    then
goto saca3
endif
pause 10
cola = 0
colb = 1
if colb=fil1 then
goto saca4
endif
if colb=fil2 then
goto saca5
endif
if  colb=fil3 then
goto saca6
endif
pause 10
colb = 0
colc = 1
if colc=fil1 then
goto saca7
endif
if colc=fil2 then
goto saca8
endif
if colc=fil3 then
goto saca9
endif
pause 10
colc = 0
cold = 1
if cold=fil2 then
goto saca0
endif
pause 10
cold = 0
goto ciclo

saca1: 
x=1
goto lcd
saca2: 
x=2
goto lcd
saca3: 
x=3
goto lcd
saca4: 
x=4
goto lcd
saca5: 
x=5
goto lcd
saca6: 
x=6
goto lcd
saca7:
x=7
goto lcd
saca8:
x=8
goto lcd
saca9:
x=9
goto lcd
saca0:
x=0
goto lcd

lcd:
lcdout $fe,2
lcdout " ", dec x
pause 300
goto ciclo


end



Hasta el momento he logrado con éxito identificar que tecla del keypad se está presionando, sin embargo quiero ir acumulando y corriendo el número pero no sé cómo.

El lenguaje es picbasicpro

la idea es hacer algo estilo contraseña, sólo que al introducir la secuencia correcta, en este caso un número tipo "23842" por ejemplo, (presionarias en orden, primero el 2, despues el 3, y se irían desplazando pero almacenando en la memoria) los números del lcd parpadeen.

Aquí les anexo el circuito, estoy aprendiendo apenas con el picbasic pro.
 

Adjuntos

  • circuito.PNG
    circuito.PNG
    31.4 KB · Visitas: 10
Última edición por un moderador:

D@rkbytes

Moderador
Lo que quieres hacer, es el principio básico de obtención de una clave.
Busca dentro del Foro, por: Cerradura con clave. (Existen varios temas en PBP)
 


Lo que quieres hacer, es el principio básico de obtención de una clave.
Busca dentro del Foro, por: Cerradura con clave. (Existen varios temas en PBP)

Gracias, justo encontré un texto; sin embargo los que encontré no me muestran los digitos sino que me verifica una secuencia, yo quiero algo que se vea como cuando ingresas los digitos a una calculadora
 
Última edición:

D@rkbytes

Moderador
OK. Es fácil, y si hay algún programa posteado por no sé quien y en algún post que tampoco recuerdo.

Adjunto un ejemplo que te puede servir.
 

Adjuntos

  • 16F628A Clave con Teclado 4X4.rar
    79.4 KB · Visitas: 6

D@rkbytes

Moderador
En ese ejemplo se muestra un "*" por tecla pulsada, debido a ser una clave, pero si se quiere ver el número de tecla, simplemente se resta 48 y se obtiene el valor ASCII correspondiente...
LCDOut $FE,$C0+i,Dec Clave - 48
Pero al usar un teclado de 16 teclas, al llegar a 10 ya se mostrarían dos cifras.
Debido a eso, se tendría que modificar un poco el código.
 
Arriba