Autor Tema: LCD con puerto C  (Leído 12784 veces)

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

Desconectado Edwin_pe

  • PIC12
  • **
  • Mensajes: 82
LCD con puerto C
« en: 20 de Octubre de 2009, 21:30:20 »
Hola amigos hice un programa pequeño que mostraba en LCD una cuenta de int ext con el pic16f877 y lo simule en proteus, todo salio bien me mostraba toda la cuenta en el simulador, use el mismo codigo pero le cambio el pic ahora uso el pic16f876 hice los cambios respectivos,  tambien lo cambie en proteus uso el portC para el LCD pero me esta generando errores en el ccs, que puede ser amigos algo estoy haciendo mal..
Ahi los pongo:

/*********** Antes del cambio uso el 877 todo bien************/

#include <16f877.h>
#use     delay (clock=4000000)         // Fosc=4Mhz
#fuses   XT,NOWDT,NOPROTECT,PUT,NOLVP  //ordenes para el programador
#define  LCD_ENABLE_PIN PIN_D0
#define  LCD_RS_PIN PIN_D1
#define  LCD_RW_PIN PIN_D2
#define  LCD_TYPE 2
#include <lcd.c>


/*********** despues  del cambio uso el 876 todo bien************/

#include <16f876.h>
#use     delay (clock=4000000)         // Fosc=4Mhz
#fuses   XT,NOWDT,NOPROTECT,PUT,NOLVP  //ordenes para el programador
#define  LCD_ENABLE_PIN PIN_C0
#define  LCD_RS_PIN PIN_C1
#define  LCD_RW_PIN PIN_C2
#define  LCD_TYPE 2
#include <lcd.c>


Aqui pongo en error  que aparece.

*** Error 12 "C:\Archivos de programa\PICC\drivers\lcd.c" Line 91(29,30): Undefined identifier   set_tris_d
*** Error 12 "C:\Archivos de programa\PICC\drivers\lcd.c" Line 103(30,31): Undefined identifier   set_tris_d
*** Error 12 "C:\Archivos de programa\PICC\drivers\lcd.c" Line 133(28,29): Undefined identifier   set_tris_d
*** Error 12 "INTERRUPCIONES.c" Line 25(6,16): Undefined identifier   set_tris_d
      4 Errors,  0 Warnings.

Desconectado nico

  • PIC16
  • ***
  • Mensajes: 180
Re: LCD con puerto C
« Respuesta #1 en: 20 de Octubre de 2009, 22:06:25 »
Amigo edwin_pe, no has leido el error que aparece, pues sino te habrias dado cuenta. ;-)

El error dice:
*** Error 12 "C:\Archivos de programa\PICC\drivers\lcd.c" Line 133(28,29): Undefined identifier   set_tris_d

que indica que dentro del .c que se llama lcd.c en la linea 133 aparece set_tris_d y este identificador no esta definido, el micro 16f876 no tiene puerto d, con lo cual no puedes setearlo.
Si esta rutina maneja el lcd deberas asignar estos pines a otro puerto.
Saludos.
« Última modificación: 20 de Octubre de 2009, 22:08:26 por nico »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: LCD con puerto C
« Respuesta #2 en: 20 de Octubre de 2009, 22:11:16 »
Hola.

Si borras o comentas las lineas, la LCD no te va a funcionar.

Si vas a cambiar de puerto al cual conectas la LCD, debes verificar en toda la librería que el cambio se hizo correctamente.

Saludos
El papel lo aguanta todo

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: LCD con puerto C
« Respuesta #3 en: 20 de Octubre de 2009, 22:23:52 »
hola pues yo para configurar la lcd pongo estas dos lines  y listo

#define use_portX_lcd TRUE         ////definir el puerto X del uC para el manejo de la lcd
#include<lcd.c>                  //libreria manejo lcd

donde esta la X es donde se define el puerto a utilisar ejemplo:

#define use_portd_lcd TRUE         //definir el puerto b del uC para el manejo de la lcd

claro esta si es que la utilisas para 8bit.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: LCD con puerto C
« Respuesta #4 en: 20 de Octubre de 2009, 22:41:33 »
Hola.

Bueno, eso depende de la librería. En versiones antiguas del CCS, solo están definidos dos puertos el D y el B, mas no el C, pero se puede definir fácilmente. En las nuevas versiones del CCS es mas sencillo definir sobre que puerto quiere que se trabaje.

Saludos
El papel lo aguanta todo

Desconectado Edwin_pe

  • PIC12
  • **
  • Mensajes: 82
Re: LCD con puerto C
« Respuesta #5 en: 20 de Octubre de 2009, 23:12:02 »
Gracias a todos por sus comentarios veamos , amigo nico tienes razon cuando dices que este pic 876 no tiene portD si lo tuve en cuenta , por ahi el amigo MLO__ comento algo interesante la version del CCS tine mucho que ver, yo tengo la v4.057 no se en que estara ahora; de todas maneras he tomado en cuenta todo lo k comentaron, seguire investigando  gracias a todos.
Saludos.

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: LCD con puerto C
« Respuesta #6 en: 20 de Octubre de 2009, 23:30:56 »
Que tal amigos!
Edwin_pe
No se si te servira pero aqui explico como configurar el lcd.c a ver si te sirve

http://www.todopic.com.ar/foros/index.php?topic=28058.0

Saludos

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: LCD con puerto C
« Respuesta #7 en: 21 de Octubre de 2009, 00:48:12 »
Hola.

Revisa el archivo lcd.c, y verifique que si se este asignado al puerto que es.

Código: C#
  1. #if defined use_portb_lcd
  2.    #locate lcd = getenv("sfr:PORTB")    // This puts the entire structure over the port
  3.    #define set_tris_lcd(x) set_tris_b(x)
  4. #else
  5.    #locate lcd = getenv("sfr:PORTD")    // This puts the entire structure over the port
  6.    #define set_tris_lcd(x) set_tris_d(x)
  7. #endif

Fijate, que solo asigna dos posibilades a la funcion set_tris_lcd(x), la idea es que asigne al puerto C.

Saludos
El papel lo aguanta todo

Desconectado Edwin_pe

  • PIC12
  • **
  • Mensajes: 82
Re: LCD con puerto C
« Respuesta #8 en: 21 de Octubre de 2009, 20:25:37 »
Saludos a todos, estoy haciendo los cambios que me comentaron y no me funciono ojo que tengo la version 4.057  por ahi RALF2 puso un link muy interesante pero en ese ejemplo usan la version 4.093 , en la version k uso la libreria lcd.c tiene algunas diferencias parte del codigo a modificar pongo, me llama la atencion porque esta como comentario la parte que nos interesa.




// As defined in the following structure the pin connection is as follows:
//     D0  enable
//     D1  rs
//     D2  rw
//     D4  D4
//     D5  D5
//     D6  D6
//     D7  D7
//
//   LCD pins D0-D3 are not used and PIC D3 is not used.

// Un-comment the following define to use port B
// #define use_portb_lcd TRUE
           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;


#if defined use_portb_lcd
   //#locate lcd = getenv("sfr:PORTB")    // This puts the entire structure over the port ---> esta comentado!
   #ifdef __pch__
    #locate lcd = 0xf81
   #else
    #locate lcd = 6
   #endif
   #define set_tris_lcd(x) set_tris_b(x)
#else
   //#locate lcd = getenv("sfr:PORTD")    // This puts the entire structure over the port ---> esta comentado!
   #ifdef __pch__
    #locate lcd = 0xf83
   #else
    #locate lcd = 8
   #endif
   #define set_tris_lcd(x) set_tris_d(x)
#endif


Amigos estoy diseñando mi propio entrenador con 2 pic lo kiero hacer con el p16f876 (porque es mas barato) si no soluciono este problemita tendre que utilizar el p16f877 para controlar el lcd, haber si me hechan una mano.
Otra cosa amigos como pudeo conseguir la version 4.093 del ccs.

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: LCD con puerto C
« Respuesta #9 en: 21 de Octubre de 2009, 23:12:24 »
Si empleas la lcd.c de una version de las viejas  :mrgreen:
Y quieres trabajar con el portb haz esto:

#define use_portb_lcd TRUE
B0  enable
B1  rs
B2  rw
B4  D4
B5  D5
B6  D6
B7  D7
#include <lcd.c>

Y nos comentas como te fue  :mrgreen:

SAludos

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: LCD con puerto C
« Respuesta #10 en: 22 de Octubre de 2009, 03:12:53 »
Creo que quiere usarlo con el puerto C.

Lo que hace la linea comentada es lo mismo que hace la directiva de compilacion #locate lcd=0xF81, que, lo que hace es direccionar la estructura de la LCD al registro del puerto. La idea es que esa direccion sea la del TRISC y la del PORTC.

Saludos
El papel lo aguanta todo

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: LCD con puerto C
« Respuesta #11 en: 22 de Octubre de 2009, 18:00:01 »
Ok MLO_  :mrgreen:
Aqui va lo solicitado!
Citar
#include <16F876a.h>
#device adc = 10
#use delay (CLOCK = 4000000)
#fuses XT,NOWDT,NOLVP

#include "lcd.c"

void main()
{
   lcd_init();
   printf (lcd_putc,"RALF2");
   while(1);

}

Modificacion de la lcd.c version 4.088  :D

Citar
//#locate lcd = getenv("sfr:PORTC")    // This puts the entire structure over the port
   #ifdef __pch__
    #locate lcd = 0xf83
   #else
    #locate lcd = 7
   #endif
   #define set_tris_lcd(x) set_tris_c(x)
#endif

Fijate bien donde dice PORTC y tris_c  iva anteriormente una D  :D y el 8 lo cambie por el 7
Haz esa modificacion y te funcionara!
Adjunto imagen de muestra  :mrgreen:
Me disculpan por la tardanza pero soy novato en CCS y todavia me queda mucho que aprender  :shock:

Saludos
« Última modificación: 22 de Octubre de 2009, 18:02:46 por RALF2 »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: LCD con puerto C
« Respuesta #12 en: 22 de Octubre de 2009, 20:40:45 »
 :D :D

Le hiciste el trabajo amigo RALF2 ... eso era lo que le sugería que hiciera  :D :D :D

Saludos
El papel lo aguanta todo

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: LCD con puerto C
« Respuesta #13 en: 22 de Octubre de 2009, 20:48:35 »
Asi es MLO_   :D
No lo resolvi antes porque no tenia esa libreria, pero al final, problema resuelto!!!

Espero que le sirva Edwin_pe   ;-)

SAludos

Desconectado Edwin_pe

  • PIC12
  • **
  • Mensajes: 82
Re: LCD con puerto C
« Respuesta #14 en: 23 de Octubre de 2009, 00:52:40 »
Hola amigos disculpen la demora , por fin me salio un trabajo luego de dos meses, por eso estuve muy ocupado ahora revisare sus comentarios y les comentare como me sale, gracias a todos.