Manejar teclado matricial y mostrar en lcd

Buenas noches cesar, la conexion es de la siguiente manera

los 4 primeros pines de izquierda a derecha son los de las columnas, los siguientes cuatro de las filas, de forma ascendete es decir desde uno a cuatro.

Si lo vas a conectar utilizando los pullups del puerto B entonces la conexion seria el primer pin a RB0 y asi sucesivamente hasta que llegues al pin RB7.

Te adjunto la imagen del teclado, para que te quede mas claro, si no me hice entender.
 

Adjuntos

  • 4x4.jpeg
    4x4.jpeg
    49 KB · Visitas: 78
hola. revisa el pdf del teclado que compraste, yo compre la ves pasada uno para un proyecto y me bloqueaba el programa por lo que no lo conectaba como hiba el teclado. -.-
 
A un poco diferente con cualquier microcontrolador seria mas fácil, no sabría como ayudar con compuertas .

El teclado matricial toca estarlo escaneando para saber cual tecla se oprimió, no estoy seguro que te sirva para el proyecto que estas haciendo te tocaría cambiar toda la lógica ya que este funciona muy diferente al del documento que mostraste.
exitos
 
Hola BELTRANCESAR

Efectivamente.
El teclado para: (Cekit. electrónica digital) es llamado LINEAL.
El que compraste: el teclado que yo compre es llamado MATRICIAL.

Puesto que desconozco el circuito a donde está conectado el teclado LINEAL(Cekit. electrónica digital) No puedo recomendarte algo para utilizar el teclado MATRICIAL el teclado que yo compre .

Es muy probable que se pueda substituir el que requiere tu circuito por el que compraste pero... Cómo?.
Habría que ver el tu circuito para luego definir el cómo hacerlo.

Por otra parte, donde adquiriste ese teclado, no te lo pueden cambiar ?.

El teclado que requiere tu circuito es como el de la Figura 1(Adjunta) y es el que viene en la imagen que adjuntaste(Figura 2) Nota que este es más comprensible en la figura 3(Adjunta).

El teclado MATRICIAL que compraste es como el de la figura 4(Adjunta).
Para hacer que éste de las salidas del teclado LINEAL:
Convertir a Binario natural las salidas del teclado MATRICIAL.
Con esa conversión hacer un circuito que cambie de Binario natural a decimal 1 de 10.
De esta forma tienes las mismas, más o menos, que con el teclado LINEAL.

Utilizas, para el desarrollo de tus proyectos, algún simulador ?.

saludos
a sus ordenes
 

Adjuntos

  • Figura 1.jpg
    Figura 1.jpg
    110.8 KB · Visitas: 40
  • Figura 2.jpg
    Figura 2.jpg
    383.7 KB · Visitas: 57
  • Figura 3.jpg
    Figura 3.jpg
    84.3 KB · Visitas: 30
  • Figura 4.jpg
    Figura 4.jpg
    204.4 KB · Visitas: 35
Última edición:
Hola, gracias por tu respuesta, pues lamentablemente no tengo simulacion del circuito, porque yo utilizo Proteus y no tiene ese teclado lineal. detodas maneras adjunto el proyecto para ser mas claro.
muchisimas gracias
 
Hola tengo un programita en PBP para controlar teclado de 3x4 con pic 16f877a, pero al parecer no funciona correctamente las teclas se traban o resultan otros numeros q no son los q presiono, espero me pueden ayudar a resolver este incoveniente aquí les adjunto los archivos y la simulacion en proteus....gracias por ayudarme....
 

Adjuntos

  • TECLAS 3X4 DAVID.rar
    20.2 KB · Visitas: 268
hola a todos
estoy trabajando con un teclado matricial y un LCD, y el manejo basico de estos elementos lo entiendo bien, lo que sucede es q tengo que hacer ahora que el teclado funcione de forma similar al de un celular
es decir que si oprimo dos veces seguidas la tecla '2', me salga la letra 'b', y asi en general, esta salida debo visualizarla en una LCD, pero el problema esta en que no se exactamente como modificar la libreria del teclado para poderle agregar más caracteres y q funcione como el de un celular

estoy usando un teclado 4x4, y la libreria la tengo ya adaptada para este teclado
solo necesito saber como agregarle mas caracteres
gracias por la atencion
adjunto una imagen del teclado, asi como de la libreria para keypad 4x4



ahora si adjunto la libreria para el teclado 4x4
 

Adjuntos

  • si-m-20480486_6332.jpg
    si-m-20480486_6332.jpg
    10.4 KB · Visitas: 22
  • KBD_4por4.rar
    1.4 KB · Visitas: 136
Última edición:
si la libreria funciona y el teclado funciona no tenes que modificarla. Vas a tener que escribir todo eso en tu codigo. Yo lo haria de la siguiente manera:

Cuando apretas el 2, pone una "A", subis una bandera y seteas un timer para rebalse en 200 ms, cuando rebalsa el timer bajas la bandera..

De esta manera si apretas por segunda vez, checkeas si esa bandera esta en 1, si es asi cambias el caracter por una B. Caso contrario (si el timer ya bajo) significa que estas queriendo poner otra letra A..


Se entiende?
 
gracias y ps la verdad si entiendo lo q me explica pero me surge otra duda y es q si lo hago con banderas como haria en caso de querer ingresar más de dos caracteres en cada tecla, como por ejemplo en lo celulares que con la tecla '9', puede imprimir los caracteres "W,X,Y,Z" además del número 9
y pues como entiendo la explicacion que me has dado solo funcionaria para variarla entre dos caracteres

no se si talvez yo este interpretando mal la informacion pero agradezco si me puede aclarar esta duda
 
gracias por la colaboracion pero ahora necesito saber
como hago para que solo imprima el caracter 1 segundo despues de haber pulsado la ultima tecla,
es decir si pulso 2 veces el '2' no tiene que mostrarme la 'A', y solo un segundo despues de haber terminado la pulsacion debe mostrarme la LCD el caracter 'B'

no se si me entienda lo que quiero hacer pero ps es basicamente que si sigo oprimiendo teclas en periodos menores a 1 segundo no me muestre ninguna en la LCD, y al dejarlas de pulsar si, asi por ejemplo si pulse 3 veces el siete y me detuve luego por mas de un segundo la LCD imprima una 'R', pero si la oprimo 4 veces una 'S', y así para cada tecla

Gracias
 
No se si en la programación que usan tienen BOOLEANS , pero podrías utilizar eso.

PD: Podrías decirme que programa utilizas para programar pics en C detalladamente ? Posiblemente le eche un vistazo y te pueda dar una mano , se de programación en c.
 
I NEED HELPPPPPP!!

No me funciona para nada el teclado matricial 4x3 usando la libreria KBD.c descomente la linea necesaria para usar el puerto B y nada, tambien habilito las res. pull up internas del PIC pero nada, he revisado el cableado y no funciona absolutamente nada, se supone que deberia ver cada tecla presionada en una LCD 16x2, la cual si me funciona por que tambien muestro datos provenientes de un sensor de gas y de luminosidad.

PD: No uso Proteus, lo hago directo en el protoboard!
 

Adjuntos

  • codigo fuente.txt
    2.2 KB · Visitas: 51
I NEED HELPPPPPP!!

No me funciona para nada el teclado matricial 4x3 usando la libreria KBD.c descomente la linea necesaria para usar el puerto B y nada, tambien habilito las res. pull up internas del PIC pero nada, he revisado el cableado y no funciona absolutamente nada, se supone que deberia ver cada tecla presionada en una LCD 16x2, la cual si me funciona por que tambien muestro datos provenientes de un sensor de gas y de luminosidad.

PD: No uso Proteus, lo hago directo en el protoboard!

- Porqué no nos pones el contenido del archivo MQ6_KEYPAD.h

- No nos dices que PIC estás utilizando, ni como lo estás conectando.

- Ya probaste con el ejemplo que le puse a divedwin, ese mismo ejemplo lo acaban de armar los 25 alumnos de mi materia de Aplicaciones de Microcontroladores, solo modificamos un poco la librería para usarla con un teclado de 4x4.

Saludos.

PD: En la línea: printf(lcd_putc,"/f Car=%c",k); está al revés tu diagonal.
 
Hola divedwin, tu código solo necesita unas pequeñas modificaciones:


//port_b_pullups(TRUE);
Esta línea la comenté por que el circuito no me responde bien con las pull-ups internas habilitadas, así que las puse manualmente en el Proteus.

Exactamente el comando esta mal aplicado al colocar la instrucción "true" le estas diciendo que "todo" el puerto b este pullup y lo que en realidad solo se aplica a los pines configurados como entradas.

set_tris_b=(0b00001111);

port_b_pullups(0b00001111);


ó

set_tris_b=(0b11110000);

port_b_pullups(0b11110000);


saludos.
 
Atrás
Arriba