Autor Tema: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"  (Leído 8227 veces)

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

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« en: 26 de Julio de 2009, 01:34:40 »
Buen dia amigos foreros pues estoy en el diseño de un proyecto  bastante simple para alguien con experiencia pero no tanto para alguien inciado hace no mas de 3 meses con los PICS, espero que alguien de verdad pueda ayudarme o darme las ideas basicas.

El objetivo del proyecto es el siguiente:

Permitir que un keypad 4x4, por medio de un 16F877A almacene cada numero pulsado en una memoria de tipo 24LCXX, y que posteriormente los datos puedan ser extraidos al pc por medio de puerto RS232. En lo que refiere a la conectividad y al diseño del circuito con los datasheets, lo he realizado pero el ligero detalle esta en la programacion del 16F877A, para realizar tal funcion, y en la transmision de datos al pc.

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #1 en: 26 de Julio de 2009, 02:23:23 »
En cuanto al diseño se me ha ocurrido lo siguiente.

* He corregido algunos errores en la parte de comunicacion gracias a la información suministrada por el compañero jhozate.

« Última modificación: 27 de Julio de 2009, 02:47:28 por psnven »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #2 en: 26 de Julio de 2009, 10:45:28 »
Esta interesante el proyecto. En que lenguaje vas a programar? Tienes algun codigo planteado?

Saludos
El papel lo aguanta todo

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #3 en: 26 de Julio de 2009, 12:42:06 »
Pues fijate estaba pensando en utilizar CCS, pero aun tengo mis dudas en la conexion voy a postear lo que llevo desarrollado pues como les comento soy algo novato en el tema....

« Última modificación: 27 de Julio de 2009, 02:39:04 por psnven »

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #4 en: 26 de Julio de 2009, 14:05:42 »
creo q hay un leve error en la conexion del max, en condiciones normales deberias conectarlo a los pines asociados al modulo USART del pic que son los pines RC6(TX) y RC7(RX), con el siguiente esquema podes enviar y recibir datos al PC
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #5 en: 26 de Julio de 2009, 16:02:57 »
voy a verificar y creo q si tenes razon !!!, ahora modifico y vuelvo a subir el diagrama, lo que me tiene dando dolores de cabeza es la programacion del PIC

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #6 en: 26 de Julio de 2009, 16:14:41 »
He hecho las modificaciones pertienentes y si tenes razon jhozate, aparte de la conexion en el DB9, habia algo errado en la comunicacion entre el MAX232 y el PIC, el detalle es q como no he podido terminar la programación del pic no he podido simularlo correctamente en proteus. !!! Mil gracias  :lol:
« Última modificación: 27 de Julio de 2009, 02:48:16 por psnven »

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #7 en: 26 de Julio de 2009, 16:55:41 »
yo la verdad soy un poco novato en esto tambien...pero creo q lo mejor  que podes hacer seria utilizar CCS para programar porque aqui en el foro abunda informacion y ejemplos aparte de que son muchos los q te pueden ayudar, con respecto al hardware creo que lo unico q te falta seria acomodar el reset del micro que seria algo asi

5V
|
\
/ 10K
\
|
|______PIN1 (MCLR)
|
  |¬ pulsador
|
|
GND
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #8 en: 27 de Julio de 2009, 00:11:07 »
Si es correcto lo unico es la forma en la que se maneje la programación pero tambien es valido tener un switch de reset para el PIC.  Gracias una vez mas voy a ver que ejemplo consigo por aqui en el foro para tener como base y si alguien me puede ayudar pues mucho mejor recuerden que todo queda aqui en el foro para futura referencia de todos los usuarios. Gracias.

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #9 en: 27 de Julio de 2009, 00:28:06 »
el teclado tiene q se 4x4?....sera q ccs tiene libreria para teclado 4x4...? igual es una columna mas,,debe poderse modificar
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #10 en: 27 de Julio de 2009, 01:22:14 »
Bueno de libreria pense en usar esto que piensas estara bien poco a poco me he ido familiarizando ya veo que tengo que incluir las librerias a utilizar, pues como  te dije soy nuevo en esto y bueno me fascina la electronica y leer :D jajajaja.

#include <16F877a.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000) //Fosc=20Mhz
#use standard_io(B)

int i,j,x;
char Teclas[4][4]={{'1','2','3','A'}
                   {'4','5','6','B'}
                   {'7','8','9','C'}
                   {'D','0','E','F'}};
void main(){

while(TRUE){
i++;
switch( i )
{
case 1:
output_high(PIN_B4);     
output_high(PIN_B5);
output_high(PIN_B6);
output_low(PIN_B7);

break;
case 2:
output_high(PIN_B4);     
output_high(PIN_B5);
output_low(PIN_B6);
output_high(PIN_B7);

break;
case 3:
output_high(PIN_B4);     
output_low(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);

break;
case 4:
output_low(PIN_B4);     
output_high(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);

break;
case 5:
break;
default:
}
if(i==5){i=0;}
if(!input(PIN_B0)){j=0;x=i;}
if(!input(PIN_B1)){j=1;x=i;}
if(!input(PIN_B2)){j=2;x=i;}
if(!input(PIN_B3)){j=3;x=i;}

}}


Hasta aqui llegue ahora no se como hacer la parte del codigo para que me almacene el valor "teclas" en la memoria. Necesito que se almacenen los datos de forma consecutiva, me explico si pulso  1, 3, 5, 7, *, A. En la memoria se almacene 1357*A. Alguien me hecha una mano en esto.. ? Gracias.
« Última modificación: 27 de Julio de 2009, 02:35:10 por psnven »

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #11 en: 27 de Julio de 2009, 02:10:53 »
Adjunto mi archivo en proteus y aparte las librerias para agregar el keypad al proteus, en caso de que alguien se anime en este proyecto de verdad me urge realizarlo, espero la mayor colaboración gracias.
« Última modificación: 27 de Julio de 2009, 02:49:28 por psnven »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #12 en: 27 de Julio de 2009, 14:02:46 »
Una forma seria utilizar un vector donde ir guardando las teclas consecutivas y una especie de puntero que indique la cantidad de teclas pulsadas. Con este puntero tenes el control de cuantas teclas se han ingresado y llegando a un numero establecido realizar el tratamiento del conjunto.
Otra cosa es aprovechar la interrupción por cambio de estado de RB4-RB7 para detectar una tecla pulsada y en la interrupción realizar el test del teclado para determinar exactamente cual fue he ir agregando elementos al vector que registra las teclas.

Por ejemplo:

Código: C
  1. #
  2. char ConsTeclas[6];
  3. int NTeclasEnt;
  4.  
  5. void main()
  6. {
  7.  
  8.    NTeclasEnt=0;
  9.    
  10.    enable_interrupts(INT_RB);
  11.    enable_interrupts(GLOBAL);
  12.    while(1){
  13.       if(NTeclasEnt==6){
  14.          // Se recibieron las 6 Teclas y estan almacenadas en ConsTeclas[];
  15.          NTeclasEnt=0;  // Para recibir proximas teclas.
  16.          // Tratamiento de las teclas recibidas.-
  17.          .
  18.          .
  19.       }
  20.    
  21.    }
  22. }
  23.  
  24.  
  25. // Interrupcion por cambio de estado de RB4-RB7.-
  26. #int_RB
  27. void  RB_isr(void)
  28. {
  29.    ConsTecla[NTeclasEnt]=TestTeclado();      //Testea la Tecla Pulsada.-
  30.    NTEclasEnt++;
  31. }


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #13 en: 28 de Julio de 2009, 00:57:20 »
Me ha servido de ayuda pero aun sigo como en las nubes, respecto a la elaboración del codigo del pic..... voy a intentar con la programación en lenguaje BASIC. :S. O si alguien me echa una manita en el programa.

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Proyecto "Keypad 4x4 + 16F877A + 24LCXX + MAX232"
« Respuesta #14 en: 28 de Julio de 2009, 20:40:30 »
tengo dudas con respecto al circuito que he realizado alguien me puede informar o ayudar y corregir en caso de que algo no este bien gracias :D ... y si alguien me echa una ayuda con la programacion del PIC seria excelente. Gracias.