Autor Tema: Usar puerto a invertido para LCD  (Leído 1420 veces)

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

Desconectado elpeibel

  • PIC10
  • *
  • Mensajes: 32
Usar puerto a invertido para LCD
« en: 19 de Abril de 2009, 13:20:05 »
Buenas a todos, ante todo agradecer vuestro trabajo.

Y al tema.

Uso un pic 18F2550, compilador ccs pcwhd 4.084.

Estoy usando un LCD 44780 en el puertoA con el siguiente mapeo:
//     A0  D4
//     A1  D5
//     A2  D6
//     A3  D7
//     A4  enable
//     A5  rs

Funciona bien pero no me gusta nada como lo he conseguido.

os pego el codigo y os explico:

struct lcd_pin_map {               
           int     data : 4;
           BOOLEAN enable;           
           BOOLEAN rs;               
           BOOLEAN unused1;               
           BOOLEAN unused2;           
        } lcd;
//
//#if defined(__PCH__)
#byte lcd = 0xF80                   // This puts the entire structure


hasta aqui seria el puerto de datos invertdo a como lo tengo en la pcb, hasta ahora D4 sería A0, D5->A1....  para invertirlo y dejerlo como en la pcb(D7 en A0, D6 en A1....) tengo una rutina que lo invierte:

BYTE inv(byte n){
   
   BYTE i;
 
   if (bit_test(n,0))
      bit_set(i,3);
   else
      bit_clear(i,3);
     
   if (bit_test(n,1))
      bit_set(i,2);
   else
      bit_clear(i,2);
     
   if (bit_test(n,2))
      bit_set(i,1);
   else
      bit_clear(i,1);
     
   if (bit_test(n,3))
      bit_set(i,0);
   else
      bit_clear(i,0);
 
   return i;
}

y cuando send_nibble escribe en el puerto llama a esta rutina,  de la siguiete forma:

void lcd_send_nibble( BYTE n ) {
      lcd.data = inv(n);
      ...
      ...


en fin estoy seguro que hay otra forma mejor de hacerlo por ejemplo cuando defino el struct, si me pudieran ayudar estaré muy agradecido.

Saludos

Desconectado josnelihurt

  • PIC12
  • **
  • Mensajes: 64
Re: Usar puerto a invertido para LCD
« Respuesta #1 en: 19 de Abril de 2009, 14:03:52 »
Hola, hace un tiempo intente acomodar los pines para el manejo de la LCD en diferentes pines del pic, por comodidad al montar, el problema es que el disco duro en que tenia eso murio por una descarga electrica, pero recuerdo que modificando la libreria o implementado una nueva puedes llegar a hacerlo la que yo use se llamaba flex_lcd.c creo que es muy parecida a esta, Espero haber sido de ayuda
http://hades.mech.northwestern.edu/wiki/index.php/C_Example:_Parallel_Interfacing_with_LCDs
JoN

Desconectado elpeibel

  • PIC10
  • *
  • Mensajes: 32
Re: Usar puerto a invertido para LCD
« Respuesta #2 en: 20 de Abril de 2009, 17:58:53 »
Muchas gracias, me sirvió mucho, me vino perfecto.

Gracias y saludos


 

anything