Autor Tema: como modificar libreria lcd420.c ??  (Leído 3962 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
como modificar libreria lcd420.c ??
« en: 17 de Abril de 2013, 16:56:25 »
hola queria saber como se puede modificar la libreria lcd420.c porque tengo todo el programa echo y listo para funcionar y el circuito tambien pero al cambiar el lcd de 20x2 a 20x4 el puerto por el que escribe la libreria es el portB y me aria falta que salga por el portD si no es mucha molestia amigos o por lo menos indicarme que tengo que cambiar en la libreria, soy muy pichon en esto!

me olvide de dejar la libreria... esta es la estandar lcd240.c de ccs

struct lcd_pin_map {                 // This structure is overlayed
           BOOLEAN enable;           // on to an I/O port to gain
           BOOLEAN rs;               // access to the LCD pins.
           BOOLEAN rw;               // The bits are allocated from
           BOOLEAN unused;           // low order up.  ENABLE will
           int     data : 4;         // be pin B0.
        } lcd;

#locate lcd = getenv("SFR:PORTB")                        // This puts the entire structure
                                     // on to port B

#define lcd_type 2           // 0=5x7, 1=5x10, 2=2 lines


BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
                             // These bytes need to be sent to the LCD
                             // to start it up.


                             // The following are used for setting
                             // the I/O port direction register.

struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in


BYTE lcdline;

BYTE lcd_read_byte() {
      BYTE low,high;

      set_tris_b(LCD_READ);
      lcd.rw = 1;
      delay_cycles(1);
      lcd.enable = 1;
      delay_cycles(1);
      high = lcd.data;
      lcd.enable = 0;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(1);
      low = lcd.data;
      lcd.enable = 0;
      set_tris_b(LCD_WRITE);
      return( (high<<4) | low);
}


void lcd_send_nibble( BYTE n ) {
      lcd.data = n;
      delay_cycles(1);
      lcd.enable = 1;
      delay_us(2);
      lcd.enable = 0;
}


void lcd_send_byte( BYTE address, BYTE n ) {

      lcd.rs = 0;
      while ( bit_test(lcd_read_byte(),7) ) ;
      lcd.rs = address;
      delay_cycles(1);
      lcd.rw = 0;
      delay_cycles(1);
      lcd.enable = 0;
      lcd_send_nibble(n >> 4);
      lcd_send_nibble(n & 0xf);
}


void lcd_init() {
    BYTE i;

    set_tris_b(LCD_WRITE);
    lcd.rs = 0;
    lcd.rw = 0;
    lcd.enable = 0;
    delay_ms(15);
    for(i=1;i<=3;++i) {
       lcd_send_nibble(3);
       delay_ms(5);
    }
    lcd_send_nibble(2);
    for(i=0;i<=3;++i)
       lcd_send_byte(0, LCD_INIT_STRING);
}


void lcd_gotoxy( BYTE x, BYTE y) {
   BYTE address;

   switch(y) {
     case 1 : address=0x80;break;
     case 2 : address=0xc0;break;
     case 3 : address=0x94;break;
     case 4 : address=0xd4;break;
   }
   address+=x-1;
   lcd_send_byte(0,address);
}

void lcd_putc( char c) {
   switch (c) {
     case '\f'   : lcd_send_byte(0,1);
                   lcdline=1;
                   delay_ms(2);
                                           break;
     case '\n'   : lcd_gotoxy(1,++lcdline);        break;
     case '\b'   : lcd_send_byte(0,0x10);  break;
     default     : lcd_send_byte(1,c);     break;
   }
}

char lcd_getc( BYTE x, BYTE y) {
   char value;

    lcd_gotoxy(x,y);
    lcd.rs=1;
    value = lcd_read_byte();
    lcd.rs=0;
    return(value);
}


saludos!
« Última modificación: 17 de Abril de 2013, 17:05:42 por Mikro-77 »
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: como modificar libreria lcd420.c ??
« Respuesta #1 en: 17 de Abril de 2013, 17:26:34 »

#locate lcd = getenv("SFR:PORTB")                        // This puts the entire structure



Hola, prueba cambiando PORTB por PORTD, nunca use esa libreria, la que si su he usado bastante es la flex_lcd la que modifique para que funcione con display de 4 lineas.

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Mikro-77

  • PIC12
  • **
  • Mensajes: 93
Re: como modificar libreria lcd420.c ??
« Respuesta #2 en: 18 de Abril de 2013, 09:47:45 »
Hola si he visto por ahi en algunos sitios que esta esa libreria, yo simplemente no la use xq al leer que era para flex no pense que funcionaria en mi caso! gracias por tu ayuda!
// si quieres entender el universo, piensa en energia, frecuencia y vibración. Nikola Tesla.

// Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado T.E.I

  • PIC10
  • *
  • Mensajes: 18
Re: como modificar libreria lcd420.c ??
« Respuesta #3 en: 16 de Agosto de 2013, 23:08:15 »
tengo una librería para lcd 4x20 para el puerto D
si te interesa y no has solucionado el problema deja el coreo

Desconectado Roos21

  • PIC10
  • *
  • Mensajes: 2
Re: como modificar libreria lcd420.c ??
« Respuesta #4 en: 01 de Octubre de 2014, 16:57:11 »
Hola T.E.I puedes ayudarme a modificar la librería LCD420 para el puerto D? Te lo agradecería mucho


 

anything