Manejar teclado matricial y mostrar en lcd

Bueno, despues de que mi primer post se marchase directo a moderación..he estado investigando sobre la simulación que debo llevar a cabo,la cual es un teclado matricial, que me de en display el numero que seleccione en binario..tengo varias dudas, que agradeceria me ayudaran a resolver:

Conecto el teclado a un decodoficador, el que he visto en montajes por aqui..pero..hay alguna forma de pasar el numero del teclado que elija a binario y este salir en un display? supongo que necesitare al menos 4 displays para sacar el mayor numero por pantalla (9 --> 1001).

Tambien tengo la duda de como alimentar el montaje y si tengo que "programar" algo en el teclado matricial. Uso Proteus. Gracias.
 
Mmm como ya creo que has podido comprobar mi nivel de electrónica no es tanto como para poder entender todo eso que me dices.Insisto en el tema porque realmente necesito la ayuda y eso.No se si es que molesta o que, pero si necesito ayuda y acudo a un foro donde presupongo que me podrian ayudar/guiar sobre el asunto...Contadores de anillo?IC?..lo siento pero ya digo que no tengo ese nivel.
 
Mmm como ya creo que has podido comprobar mi nivel de electrónica no es tanto como para poder entender todo eso que me dices.Insisto en el tema porque realmente necesito la ayuda y eso.No se si es que molesta o que, pero si necesito ayuda y acudo a un foro donde presupongo que me podrian ayudar/guiar sobre el asunto...Contadores de anillo?IC?..lo siento pero ya digo que no tengo ese nivel.

Parece que hoy todo el mundo anda buscando lo mismo. :unsure:

En otro Pos el compañero IngLouis andaba buscando algo parecido...

Te contesto con lo mismo...

Busca la respuesta a IngLouis
Tema ... Contador con 10 push button

He dejado un diseño con lo que solicitaís.
Está hecho con Proteus, utiliza el archiconocido 74C922.

Sal U2
 
Gracias por la ayuda miguelus, he conseguido realizar un montaje con simulacion, que me funciona perfectamente, pero el orden de los numeros en el teclado, al pulsarlos...no se corresponden en el orden natural de los numeros, he estado probando entre conexiones de las filas y columnas del teclado con el decodificador y no se...no me cuadra el orden.¿Que puedo hacer?
 
si cambias alguna columna o fila.. modificarías todo el patrón que lleva toda esta fila o columna
o bien en la salida puedes poner una lógica de compuertas para obtener el resultado que quieres...

cuando se me entro las ganas a mi decodificador para matricial...tambien llegue al 74c922
pero cuando pregunte el precio en la tienda uff!! me desanime[derrepente no sea tu caso]
asi que me arme
mi teclado matricial TTL
como también la misma idea para algo loco como esto:https://www.forosdeelectronica.com/f27/tablero-ajedrez-electronico-32599/index3.html#post583756
 
Sabes si tienes un micro sea Pic o Atmel, se lo puede programar para qu funcione como un decodificador de teclado maticial, y para tu suerte existe software como en Css que ya tienen echo ese programa, solo es utilizar esa funcion y no se mostrarlo en un display, lcd o lo que sea. Pero sabes uuna cosa es mas facil hacerlo con un pic, suficiente el 16F84a, pero si quieres manejar mas datos, podrias usar el 16f877a, que tiene mucha aplicaciones, y es muy recomendable para trabajar.

La idea esta en que tu, primero decidas que microcontrolador quieres programar, te sugiero Atmel 89c52 o los pics de la serie 16Fxxx, me avisas y te doy pautas de que sofwares utilizasar y como puedes progamarlo.



Ver el archivo adjunto Teclado matricial.rarPara que veas un ejemplo te mano un software.
 
Última edición:
Me podrian dar una idea de como por medio de un teclado controlar por ejemplo el accionamiento de un rele .Quiero que al presionar una combinacion de numeros,por ejemplo 50, se realize el accionamiento.
Tengo un conocimiento basico de programacion,solo he hecho un contador utilizando el teclado y mostrando los numeros del 0 al 9 en un display de 7 segmentos.Espero su ayuda.

Gracias.
 

Adjuntos

  • 252005404.png
    252005404.png
    26.4 KB · Visitas: 12
q cosas???
si puedes mediante teclado mandar una tabla a un displasy de 7 segmentos
como no puedes gobernar un solo pin???

eso es lo primero que pense... ni siquiera se en que has echo tu código ni nada
 
Gracias por la respuesta.

Mi problema es que no se como hacer para que cuando yo realize cierta digitacion de dos cifras,el pic me active un led,algo parecido a una cerradura que necesita una clave de 2 digitos para abrirse.

Espero haberme explicado mas.

Gracias.
 
buenas a todos quisiera saber como hago para realizar la expansion de 32 teclas con el 74c922. De verdad me interesa, lo he montado en proteus y en el protoboard pero no me funciona quisiera saber en que estoy fallando. Conecto el segundo matriz de 16 teclas pero no funciona. Por favor ayuda es que necesito porque es parte de mi proyecto de grado.
 
Estoy haciendo uso de este teclado matricial en si son puros push haciendo una matriz de 3x4 el problema es que necesito que al presionar un digito se visualize en el lcd el visualizarlo no hay problema el problema es como usarlo en el puerto B ademas del codigo no uso la libreria que tiene por defecto ccs c ya que no puedo usarla o no se usarla ya que el simulador proteus no la ejecuta y solo los pines se quedan en 1 del puerto b y no captura nada hice el algoritmo basico para rastrear una tecla pero me atore y al presionar una tecla sale el valor pero no el que presiona y si presiono no se que elementos involucrados hacen un bucle infinito

Mi objetivo es que al presionar un boton el elemento presionado ya sea 1 se visualize luego otro y se visualize a la siguiente posicion del lcd mostrando el anterior asi hasta 5 digitos o por lo menos 2 ya yo vere
Me ayudaria vuestra ayuda de antemano gracias esperosea rapida la respuesta gracias
Y si pueden reducir el codigo seria perfecto gracias
Codigo:

Código:
#include <16f887.h> 
#use delay(clock=4000000) 
#fuses XT,NOWDT,NOPUT,NOMCLR,NOPROTECT,NOCPD,NOBROWNOUT,NOIESO,NOFCMEN,NOLVP 
#include <lcd.c> 
#use standard_io(c)
#use standard_io(d)
#use standard_io(b)

void main() 
{ 
int8 i;
int8 columna,fila,coordenada;
int a,s,x=7,z;
int co[3]={0x01,0x02,0x04};                   //Columna valor
int c [3]={pin_b0,pin_b1,pin_b2};             //Columna
int fi[4]={0x10,0x20,0x40,0x80};              //Fila valor
int f [4]={pin_b4,pin_b5,pin_b6,pin_b7};      //Fila

//int M [12]={0x11,0x12,0x14,0x21,0x22,0x24,0x41,0x42,0x44,0x81,0x82,0x84}; //Valores teclas     

set_tris_d(0x00);
set_tris_c(0x00);
set_tris_b(0x07);
lcd_init();
output_b(0x00);
printf(lcd_putc"\f");
printf(lcd_putc"   Contrasena");

while(TRUE)
{
output_b(0x07);

output_c(0x01);
if(input_b()!=0x07)
{
for(a=0;a<=2;a++)
{
if(input(c[a])==0)                    //Escanea columnas
{
columna=co[a]; 
z=c[a];                         //Guarda el valor de la columna
}
}

output_high(pin_b4);        //Escanea filas
if(input(z)==1)
{
fila=fi[s];
}
output_high(pin_b5);        //Escanea filas
if(input(z)==1)
{
fila=fi[s];
}
output_high(pin_b6);        //Escanea filas
if(input(z)==1)
{
fila=fi[s];
}
output_high(pin_b7);        //Escanea filas
if(input(z)==1)
{
fila=fi[s];
}



      delay_ms(200);      
      coordenada=columna+fila;
      delay_ms(200);
        
      if(coordenada==0x11)    //1
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"1");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x12)      //2
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"2");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x14)      //3
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"3");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x21)      //4
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"4");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x22)      //5
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"5");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x24)      //6
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"6");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x41)      //7
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"7");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x42)     //8
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"8");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x44)     //9
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"9");        
      delay_ms(500);
      x++;
      }
      if(coordenada==0x82)      //0
      {
      lcd_gotoxy(x,1);
      printf(lcd_putc"0");        
      delay_ms(500);
      x++;
      }
}  
if(x==10)
{
printf(lcd_putc"\f");
x=7;
}

}
}
Todavia no esta completo el codigo la meta es que quiero que se visualize la tecla presionada
y permanesca asi hasta que se presionen x digitos como una contraseña
 

Adjuntos

  • 4.rar
    30.7 KB · Visitas: 47
Última edición por un moderador:
Saludos blasters.
Tengo un ejemplo que quizás te pueda servir.
Es para el compilador CCS PCM y se trata del uso de un teclado matricial 4x4
El programa esta pensado más o menos para lo que quieres hacer, pero manda el dato vía serial.
Solo es cuestión de que adaptes el envío de datos a un LCD.
Viene completamente documentado, incluye simulación, y el código es muy reducido.


Suerte.
 

Adjuntos

  • Teclado Matricial.zip
    202.1 KB · Visitas: 125
Última edición:
Hola a todos, necesito ayuda con lo siguiente: necesito mostrar en un lcd los números de un teclado 3x4, estoy usando un pic 18f452, estoy programando en C... sé lo básico de programación de pic como encender leds, adc, lcd, 7seg, puertos y cosas simples... pero estoy pegado en la parte del teclado, he buscado por todos lados algún código para guiarme pero no he tenido éxito, por favor si alguien me puede explicar como funciona un teclado matricial se lo agradecería, de antemano gracias
 
orale que buenos programas yo también hice uno parecido pero ahora necesito uno igual pero en ensamblador ¿alguien me podría ayudar o decir como?
 
Última edición por un moderador:
oraleee ke buenos programas yo tambienn hicee uno parecidoo pero ahora necesito uno igual pero en ensamblador alguien me podria ayudar o decir como

Tengo un programa en assembler de ingreso por clave y visualizacion en lcd, el problema es q no estoy segura si este es el que me servia...pero me sirvió :p jejej Espero que al menos te sirva como guia :p
 

Adjuntos

  • assembler.txt
    16.9 KB · Visitas: 127
El problema está en que el texto es muy largo para el LCD; se puede resolver de dos formas distintas. Una es :
printf(lcd_putc,"\fEL NUMERO LEIDO ES:");
printf(lcd_putc,"\n%u",l);
y sin embargo, se come la palabra ES. La segunda, que yo prefiero porque me da control sobre donde quiero colocar exactamente el resultado, es:
printf(lcd_putc,"\fEL NUMERO LEIDO ES:");
lcd_gotoxy(1,2);
printf(lcd_putc,"%u",l);
Cualquiera de las dos funciona, aunque en ambos casos se come la palabra ES
 
hoy les pido ayuda con un proyecto que debo hacer es un teclado matricial el problema es que no encuentro un diagrama o los elementos que nececito para armar el circuito y por eso pido ayuda para ver si alguno tiene un diagrama o una simulasion si es posible en proteus del que nececito para hacer el circuito con un pic 16f877 espero su ayuda gracias
 
Atrás
Arriba