Autor Tema: TECLADO 4X4 PIC16F877A  (Leído 4003 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JDiazS

  • PIC10
  • *
  • Mensajes: 2
TECLADO 4X4 PIC16F877A
« en: 20 de Septiembre de 2019, 21:20:18 »
Hola, muy buenas tardes a todos en el foro, tengo un problema, espero me puedan ayudar, estoy trabajando con el PIC16F877A, soy nuevo en esto, a penas y he realizado algunos proyectos basicos con el mismo, ahora el proyecto es un teclado matricial de 4x4 con pulsadores, tengo que controlarlo para que cada boton controle un led, pero no tengo ni idea de como empezar con el codigo, trabajo en pic c compiler, he intentado algunos, pero jamas me da resultados, espero me puedan ayudar, o dar ideas, les agradezco de antemano.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TECLADO 4X4 PIC16F877A
« Respuesta #1 en: 20 de Septiembre de 2019, 22:12:03 »
https://www.geekfactory.mx/tutoriales/tutoriales-pic/teclado-matricial-con-pic/

Ahi hay ua pagina que te lo explica como es que funciona el multiplexado para leer el teclado 4x4.

Lees el teclado y luego activas el led que corresponda.

Desconectado JDiazS

  • PIC10
  • *
  • Mensajes: 2
Re:TECLADO 4X4 PIC16F877A
« Respuesta #2 en: 22 de Septiembre de 2019, 16:40:21 »
https://www.geekfactory.mx/tutoriales/tutoriales-pic/teclado-matricial-con-pic/

Ahi hay ua pagina que te lo explica como es que funciona el multiplexado para leer el teclado 4x4.

Lees el teclado y luego activas el led que corresponda.

Muchas gracias, he visto en varios foros codigos similares, sin embargo he intentado varias cosas, por ejemplo una cosa que hacen al principio en esto es que 4 pines los declaran como entradas y los otros 4 como salidas, aunque yo haga eso, a la hora de simularlo solamente quedan en estado logico 0 1 columna, o sea solo 1 pin del puerto D, y todos los demas quedan en estado logico 1, y se supone que haciendo la declaracion set_tris_d(0b11110000); 4 pines ( los mas significativos) tendrian que estar en 1 logico, y el resto en 0 logico, y no pasa eso, no se que error pueda tener.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TECLADO 4X4 PIC16F877A
« Respuesta #3 en: 22 de Septiembre de 2019, 20:15:13 »
Citar
se supone que haciendo la declaracion set_tris_d(0b11110000); 4 pines ( los mas significativos) tendrian que estar en 1 logico, y el resto en 0 logico, y no pasa eso, no se que error pueda tener.

No, esa declaración es únicamente para cambiar el estado de salida a entrada o viceversa de los pines. En ningún momento cambias el estado del pin. Si queres cambiar el estado del pin usas:

output_low(PIN_D0);
output_high(PIN_D0);

no te recomiendo que uses output_d() por que si no esta bien configurado CCS ( con USE FAST IO) vas a dejar a todos los pines como salida.
Y para leer el pin con:

input(PIN_D3);

Uno de los problemas mas comunes de CCS es que al usar input o output sobre el pin, el compilador agrega codigo para cambiarlo de direccion ( a salida o entrada) segun sea la instruccion. La unica forma de que esto no ocurra es usar el #USE FAST_IO(D), ya con esto vos seleccionas cuales van a ser tus entradas y salidas con el set_tris_d() como lo hiciste y luego no importa si haces output_d(0xFF) que no te va a cambiar el tris.

Desconectado AleSergi

  • PIC16
  • ***
  • Mensajes: 214
Re:TECLADO 4X4 PIC16F877A
« Respuesta #4 en: 22 de Septiembre de 2019, 20:18:07 »
empezar con el codigo, trabajo en pic c compiler,
por pic c compiler, te referis al CCS Compliler?, porque de ser así, esas instrucciones set_trisD() no funcionan, dado que el compilador lo hace por Vos, estas al tanto de eso, no?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TECLADO 4X4 PIC16F877A
« Respuesta #5 en: 22 de Septiembre de 2019, 21:06:10 »
empezar con el codigo, trabajo en pic c compiler,
por pic c compiler, te referis al CCS Compliler?, porque de ser así, esas instrucciones set_trisD() no funcionan, dado que el compilador lo hace por Vos, estas al tanto de eso, no?

Es un error decir que no funcionan, es un error el que sea default ese funcionamiento en el compilador.


 

anything