Autor Tema: MODIFICAR LIBRERIAS EN PICC  (Leído 10417 veces)

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

Desconectado therionx

  • PIC10
  • *
  • Mensajes: 10
MODIFICAR LIBRERIAS EN PICC
« en: 10 de Abril de 2009, 03:47:22 »
hola amigos soy nuevo en el foro, actualmente estaba programando un lcd grafico y teclado, me doy cuenta q al usar la libreria para estos dispositivos el teclado queda unido con el lcd, en el CCS, si alguno pudiera decirme como modificar la libreria kbd para q funcionase en otro puerto q no fuese el b o el d, tal vez el a mezclado con el c, se los agradeceria

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #1 en: 10 de Abril de 2009, 05:47:33 »
Si, therionx, aquí tienes un ejemplo de exactamente eso que tu planteas que hice modificando el original kbdd.c para adaptarlo a mi hardware en particular, mi kbd_lib.c: Una librería para rastrear un Teclado matricial 4x4

Y lo mismo pero para usar el LCD en : Una librería para manejar un LCD con los Pines que deseemos: flex_lcd.c

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado therionx

  • PIC10
  • *
  • Mensajes: 10
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #2 en: 10 de Abril de 2009, 19:44:54 »
muchas gracias, la libreria q tienes esta modificada para el puerto b, s yo quisiera modificarla para los puertos A y C seria posible simplemente cambiando

#define COL0 (1 << 0) // PIN_B0
#define COL1 (1 << 1) // PIN_B1
#define COL2 (1 << 2) // PIN_B2
#define COL3 (1 << 3) // PIN_B3

#define ROW0 (1 << 4) // PIN_B4
#define ROW1 (1 << 5) // PIN_B5
#define ROW2 (1 << 6) // PIN_B6
#define ROW3 (1 << 7) // PIN_B7


?

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #3 en: 10 de Abril de 2009, 19:57:44 »
hola therionx yo tambien tengo un teclado 4x4 conectados a diferentes pines del pic te dejo un ejemplo de mi codigo puedes modificarlo para lo que necesitas

//julian alvaran 25_03_09
//programa que escribe en una lcd lo que obtiene de una teclado matricial 4x4
//la interface de la lcd es de 4 bits
//
//conexion en ths2008
//
// teclado matricial 4x4
//
//          C0 C1 C2 C3
//       F0 [1][2][3][A]
//       F1 [4][5][6]
//       F2 [7][8][9][C]
//       F3
  • [0]
  • [D]

//
//       DESCRIPCION PINES TECLADO
//
//        C1  C2  C3  C4  F1  F2  F3  F4
//       RC1/RC2/RD0/RC0/RD1/RC5/RD3/RD2
//

///////////////////////////////////////////////////////////////////////////
//definimos tipo de pic, fuses, y clock////////////////////////////////////
///////////////////////////////////////////////////////////////////////////

#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

//////////////////////////////////////////////////////////////////////////
//con estas librerias utilizamos los puertos como in o out////////////////
//////////////////////////////////////////////////////////////////////////

#use standard_io(b)
#use standard_io(c)
#use standard_io(d)

//////////////////////////////////////////////////////////////////////////
//libreria que controla la lcd dentro de esta se defines los pines////////
//del pic que controlaran la lcd//////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

#include <flex_lcd.c>

//////////////////////////////////////////////////////////////////////////
//declaracion de constantes y variables///////////////////////////////////
/////////////////////////////////////////////////////////////////////////

int codigo_tecla[16]={1,2,3,'A',4,5,6,'B',7,8,9,'C','*',0,'#','D'};//distibucion de simbolos en teclado
                                                                   //se cambia segun distribucion en el mismo
                                                                   //empezando por cero codigo_tecla[0]=1
int  cont_tecla,i_col,i_fil;

//////////////////////////////////////////////////////////////////////////
//constantes utilizadas para manejo de lcd (opcional)/////////////////////
//////////////////////////////////////////////////////////////////////////

#define  sig         0x06
#define  clear       0x01
#define  cursor_no   0x0C
#define  lin1        0x85
#define  ren1        0x80
#define  ren2        0xC0

//////////////////////////////////////////////////////////////////////////
//declaro los pines utilizados para teclado///////////////////////////////
//////////////////////////////////////////////////////////////////////////

int  columna[4]   =  {pin_c1,pin_c2,pin_d0,pin_c0};//aqui se pueden cambiar los pines de las columnas
int  fila[4]      =  {pin_d1,pin_c5,pin_d3,pin_d2};//aqui se pueden cambiar los pines de las filas

//////////////////////////////////////////////////////////////////////////
//subrutina encargada de revisar las columnas y filas, para asignar un
//valor segun columna y fila testeada asigna el valor correspondiente
//////////////////////////////////////////////////////////////////////////


void key_press () {
 
   delay_ms(200); //retardo para evitar armonicos
   cont_tecla=0;  //borramos contador codigo_tecla
   i_col=0;       //borramos subid de columna este determina la col utilizada
   i_fil=0;       //borramos subid de fila este determina la fila utilizada
     
no_pulsa:         //si no hay tecla pulsada

      output_high(columna[i_col]);//enviamos alto a la col
     
      if (!input(fila[i_fil]))   //si es cero se pulsó una tecla(segun hardware) cambialo por if (input(fila[i_fil])) si
             // nesecitas testear un alto
         goto tecla_pulsada;     //vamos a tecla_pulsada si es cero
      output_low(columna[i_col]);//enviamos un bajo a la columna
      ++cont_tecla;  //incrementa contador de la tecla, determina el valor en codigo_tecla[cont_tecla]
      ++i_col;       //incrementa la col a revisar
      if (i_col==4){ //si se revisaron las 4 col incrementa la fila y volvemes a col cero
         i_col=0;
         ++i_fil;
      }
     
      if (i_fil==4){ //se se revisaron las 4 filas salimos de subrutina
         return;
      }
     
      goto no_pulsa; //si no se an revisado las 4 col y 4 filas volvemos a no pulsa
     
   
tecla_pulsada: //si se pulsa tecla
   
   if (codigo_tecla[cont_tecla]<10){   //si es un #
      printf(lcd_putc,"%u",codigo_tecla[cont_tecla]);//"%u"para visualizar enteros delo contrario veremos el ascii
      output_low(columna[i_col]);      //bajo para limpiar puerto
      return;
   }
   printf(lcd_putc,"%c",codigo_tecla[cont_tecla]);//"%c" para visualizar caracteres
   output_low(columna[i_col]);//bajo para limpiar puerto
       
}

void main() {
 
   lcd_init();       //inicializa lcd
   lcd_gotoxy(1,1);  //empieza en la 1ra pos de la 1er fila
 
   do {
     
      key_press ();  //bucle infinito para revisar el teclado
     
   } while (TRUE);
}


entre mas se, me doy cuenta que no se nada

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #4 en: 10 de Abril de 2009, 20:00:02 »
lo que hago es enviar altos por cada columna a unos transistores si hay una tecla pulsada llegara un bajo en alguna de las filas
entre mas se, me doy cuenta que no se nada

Desconectado therionx

  • PIC10
  • *
  • Mensajes: 10
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #5 en: 14 de Abril de 2009, 23:33:43 »
hmm si mas sencillo de loq pensaba  :-/

me preguntaba si alguno de ustedes tendira la libreria del ds 1307 seria interesante, vincularlo

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #6 en: 15 de Abril de 2009, 02:41:43 »
Parece que vas recorriendo el mismo camino que yo.  :mrgreen:

Ahí tienes Real Time Clock o el DS1307 desatado
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #7 en: 17 de Abril de 2009, 12:05:26 »
aqui tienes otra libreria del ds1307, y la libreria completa del teclado para que cambies los pines a tu antojo
entre mas se, me doy cuenta que no se nada

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #8 en: 17 de Abril de 2009, 12:08:53 »
alguna duda o sugerencia por favor. Otra cosa aprovecho para dar gracias al gran maestro redpic casi todo lo que se de lenguaje c 
lo aprendi de ti excelente programador, que excelente pagina. espero segir tus pasos
entre mas se, me doy cuenta que no se nada

Desconectado rodrigo_control2009

  • PIC12
  • **
  • Mensajes: 54
    • Blog  de la  Orden del  temple
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #9 en: 19 de Abril de 2009, 19:57:36 »
aqui tienes otra libreria del ds1307, y la libreria completa del teclado para que cambies los pines a tu antojo
hola  la  libreria  para  el  teclado  4*4   es  para  el  de  tipo  membra   y   para  el  tipo  que  use   alimentacion  y  q  incluye   las  resistencias  pull_ups ?????
“El hombre ideal, sería persa de origen, árabe de religión, iraquí por cultura, hebreo por experiencia, cristiano por conducta, hindú por perspicacia, sufí por su estilo de vida, angélico por su moral y divino por sus ideas y conocimiento, destinado a la eternidad”

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #10 en: 20 de Abril de 2009, 14:38:02 »
solo es un teclado matricial de 4x4, su configuracion de pines es : c1,c2,c3,c4,f1,f2,f3,f4 no nesecita alimentacion y no tiene pullups internas, pero deberia funcionar para cualquier tipo de teclado 4x4, es solo configurar los pines que vas a utilizar, si inicialmente mandas altos o bajos y que esperas recibir, por defecto manda altos y espero bajos.
entre mas se, me doy cuenta que no se nada

Desconectado therionx

  • PIC10
  • *
  • Mensajes: 10
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #11 en: 23 de Abril de 2009, 21:22:33 »
cierto muchas gracias jejeje usando un 18f4550  ya logre sacareesto aunq tuve q programar todo XD, desde el ds hasta el teclado pero bueno, seria interesante postear este ejemplo ps usa lcd grafica el ds el teclado y un pin de alarma

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: MODIFICAR LIBRERIAS EN PICC
« Respuesta #12 en: 24 de Abril de 2009, 14:33:26 »
postealo, compartelo, por favor
entre mas se, me doy cuenta que no se nada

Desconectado irwing

  • PIC10
  • *
  • Mensajes: 2
Re:MODIFICAR LIBRERIAS EN PICC
« Respuesta #13 en: 09 de Octubre de 2022, 22:05:58 »
hola que tal  una pregunta y para la creación de un teclado matricial de 5x4 como seria?

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:MODIFICAR LIBRERIAS EN PICC
« Respuesta #14 en: 09 de Octubre de 2022, 22:16:27 »
hola que tal  una pregunta y para la creación de un teclado matricial de 5x4 como seria?

Suponiendo que ese código funciona, debes cambiar uno de los siguientes arreglos a 5.

Código: C
  1. int  columna[4]   =  {pin_c1,pin_c2,pin_d0,pin_c0};//aquí se pueden cambiar los pines de las columnas
  2. int  fila[4]      =  {pin_d1,pin_c5,pin_d3,pin_d2};//aqui se pueden cambiar los pines de las filas

Por ejemplo podría ser así:

Código: C
  1. int  columna[5]   =  {pin_c1,pin_c2,pin_d0,pin_c0,pin_X};//pin_X es el nuevo terminal
  2. int  fila[4]      =  {pin_d1,pin_c5,pin_d3,pin_d2};//aqui se pueden cambiar los pines de las filas

Y donde verificas el índice máximo del vector columnas igual a 4.

Código: C
  1. if (i_col==4){ //si se revisaron las 4 col incrementa la fila y volvemes a col cero
  2.          i_col=0;
  3.          ++i_fil;
  4.       }

Deberías verificarlo que sea igual a 5.

Código: C
  1. if (0x05 == i_col) //si se revisaron las 5 col incrementa la fila y volvemos a col cero
  2. {          i_col=0;
  3.          ++i_fil;
  4. }
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32


 

anything