Autor Tema: PIC18F2550 + LCD  (Leído 8918 veces)

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

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
PIC18F2550 + LCD
« en: 24 de Agosto de 2006, 07:58:29 »
Hola colegas!

Ahora que tengo algo de tiempo libre he decidido mejorar un proyecto que tenía un poco olvidado. He migrado del PIC16F877 al PIC18F2550 porque me apetecía hacer algo con el USB.

Todo me ha funcionado perfectamente exceptuando el maldito display lcd. Con el otro micro me iba perfectamente pero ahora no me tira.

He decidido montar en una placa de inserción solamente el PIC y el display pero nada de nada. El lcd lo conecto al puerto C y  para ello modifico el lcd.c que incluyo al principio de mi programa.

Lo que modifico del LCD.C es lo siguiente:

Código: [Seleccionar]
#if defined(__PCH__)
#if defined use_portb_lcd
   #byte lcd = 0xF81                   // This puts the entire structure
#else
   #byte lcd = 0xF82                   // This puts the entire structure         // AZICUETANO // DIRECCION DEL PURTOC 0xF82
#endif
#else
#if defined use_portb_lcd
   #byte lcd = 6                  // on to port B (at address 6)                 // AZICUETANO // DIRECCION DEL PURTOC 7 (ver datasheet pág. 117, ejemplo 10-3)
#else
   #byte lcd = 7                 // on to port D (at address 8)
#endif
#endif

#if defined use_portb_lcd
   #define set_tris_lcd(x) set_tris_b(x)
#else
   #define set_tris_lcd(x) set_tris_c(x)
#endif

A alguien le ha pasado algo parecido?? Voy a ver si lo conecto al puerto B para ver si así funciona pero... hasta que no lo conecte al puerto c no dormiré tranquilo.


Un saludo desde Alicante.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: PIC18F2550 + LCD
« Respuesta #1 en: 24 de Agosto de 2006, 09:04:41 »
Creo que ya se por que me pasa esto.

Es posible que RC4 y RC5 no se puedan poner como salidas?? En la página 105 del datasheet nos hablan de todos los pines del puerto c y en todos nos dice 'data input' y 'data output' excepto en las patillas RC4 y RC5 que solo nos pone 'data input'.

¿Es correcto?


Un saludo desde Alicante.

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: PIC18F2550 + LCD
« Respuesta #2 en: 24 de Agosto de 2006, 09:52:39 »
Así es... de hecho yo tengo un modulo de 8 leds y conectado al puerto c esos leds no se encienden aunque los señales como salida...

mejor elije el puertob... y casi mejor que cambies de rutina de lcd al flex_lcd_2.c de redpic que puedes configurar cada pin de forma independiente.

1 saludo.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: PIC18F2550 + LCD
« Respuesta #3 en: 24 de Agosto de 2006, 11:31:18 »
Si, eso es elmasvital.

Antes de irme a comer he hecho esa prueba y lo he observado. Ya lo he puesto en el puerto b y funciona muy bien.

Justo ahora iba a modificar el lcd.c para configurar cada pin de forma independiente pero... si me dices que el maestro redpic ya lo hizo, voy a buscarla para no perder ya más tiempo con esta tonteria.


Un saludo desde Alicante.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: PIC18F2550 + LCD
« Respuesta #4 en: 24 de Agosto de 2006, 14:23:26 »
Azicuetano, aquí tienes la Flex_LCD_2.c para Descargar

Y un ejemplo de uso:

Código: C
  1. #include <16f876a.h>
  2. #fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
  3. #use delay(clock=4000000)
  4. #use standard_io(b)
  5. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
  6.  
  7. #define LCD_DB4   PIN_B4
  8. #define LCD_DB5   PIN_B5
  9. #define LCD_DB6   PIN_B6
  10. #define LCD_DB7   PIN_B7
  11.  
  12. #define LCD_RS     PIN_C0
  13. #define LCD_RW    PIN_C1
  14. #define LCD_E       PIN_C2
  15.  
  16. #include "flex_lcd.c"
  17.  
  18. char Keypress=' ';
  19.  
  20. #int_rda
  21. void serial_isr() {
  22.  
  23.    Keypress=0x00;
  24.    if(kbhit()){
  25.       Keypress=getc();
  26.    }
  27. }
  28.  
  29. void main() {
  30.  
  31.    enable_interrupts(global);
  32.    enable_interrupts(int_rda);
  33.  
  34.    printf("\r\n\LCD driver monitor\r\n");
  35.    
  36.    lcd_init();
  37.  
  38.    do {
  39.       if(Keypress!=0x00){
  40.          lcd_putc(Keypress);
  41.          putc(Keypress);
  42.          Keypress=0x00;
  43.       }
  44.    } while (TRUE);
  45.  
  46. }

« Última modificación: 24 de Agosto de 2006, 15:00:51 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: PIC18F2550 + LCD
« Respuesta #5 en: 24 de Agosto de 2006, 14:44:21 »
Gracias RedPic pero la desesperación me ha hecho meterme en tu página y buscar y buscar hasta que la he encontrado.

Por cierto, funciona muy bien.


Un saludo desde Alicante.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: PIC18F2550 + LCD
« Respuesta #6 en: 24 de Agosto de 2006, 15:02:42 »
1º Me alegra que te funcione.
2º En "Inicio" tiene un buscador Google para la página ....
3º Comprueba si es la Flex_LCD_2.c (en mis post anterior es la que he puesto)

Continuamos para bingo ....  :mrgreen:

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

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: PIC18F2550 + LCD
« Respuesta #7 en: 23 de Agosto de 2014, 12:37:23 »
Hola se que este tema ya es viejo pero espero que me puedan ayudar.

Estoy teniendo problemas igualmente con el pic 18f2550 y el lcd de 16x2. Ya baje la libreria de flex_lcd_2 de redpic pero aun no lo he logrado hacer funcionar. Mi

idea es separar los pines entre el puerto A y el C pero por ahora estoy probando mandando todo al puerto B pero aun asi nada, estoy intentando con un mensajito

simple de "Hola...probando" pero por ahi vi que nomas salio la H una vez. Alguna idea de que podria ser?

Gracias.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: PIC18F2550 + LCD
« Respuesta #8 en: 23 de Agosto de 2014, 12:42:37 »
Hola GabrielD quizas deberias postear el codigo para ver donde tienes el fallo.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: PIC18F2550 + LCD
« Respuesta #9 en: 23 de Agosto de 2014, 13:14:29 »
Código: [Seleccionar]
#include <18f2550.h>
#fuses xt,nowdt, nolvp,noprotect,NOPBADEN,NOMCLR,PUT
#use delay(clock=4000000)
#define LCD_DB4   PIN_B4
#define LCD_DB5   PIN_B5
#define LCD_DB6   PIN_B6
#define LCD_DB7   PIN_B7

#define LCD_RS    PIN_B0
#define LCD_RW    PIN_B1
#define LCD_E     PIN_B2

#include <flex_lcd_2.c>
#use fast_io(b)
#use fast_io(a)

void main ()
{
port_b_pullups(true);
lcd_init();

lcd_putc("Hola...probando");

while(true);

}

ese es el codigo que estoy intentando implementar es solo el mensaje, los pullups fue un intento por algo que lei en otro post de alguien que tenia problema para el puerto A pero en otro pic y le recomendaban poner pull up porque un pin tenia open drain y le funciono, tonces era simplemente por probar pero no.


Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: PIC18F2550 + LCD
« Respuesta #10 en: 23 de Agosto de 2014, 13:29:09 »
fijate en el codigo de la libreria que ninguno de los pines de control RS, RW, E   estén comentados ,
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: PIC18F2550 + LCD
« Respuesta #11 en: 23 de Agosto de 2014, 15:42:57 »
No, lo unico que esta comentado son los #define de los pin pero eso ya los puse ahi en el encabezado del resto todo esta bien

aunque me quedo una duda revisando la libreria, dentro de una funcion en vez de estar #ifdef esta escrito es #ifndef pero como no entiendo muy bn como funciona eso no se si este bn o mal

es esto, esta al final

Código: [Seleccionar]
void lcd_init(void){
int8 i;

output_low(LCD_RS);

#ifdef USE_LCD_RW
output_low(LCD_RW);
#endif

output_low(LCD_E);

delay_ms(15);

for(i=0 ;i < 3; i++)
   {
    lcd_send_nibble(0x03);
    delay_ms(5);
   }

lcd_send_nibble(0x02);

for(i=0; i < sizeof(LCD_INIT_STRING); i++)
   {
    lcd_send_byte(0, LCD_INIT_STRING[i]);

    // If the R/W signal is not used, then
    // the busy bit can't be polled.  One of
    // the init commands takes longer than
    // the hard-coded delay of 60 us, so in
    // that case, lets just do a 5 ms delay
    // after all four of them.
    #ifndef USE_LCD_RW
    delay_ms(5);
    #endif
   }
delay_ms(15);
}

eso viene es por esta definicion
Código: [Seleccionar]
// If you only want a 6-pin interface to your LCD, then
// connect the R/W pin on the LCD to ground, and comment
// out the following line.

 #define USE_LCD_RW   1

espero haya sido claro sino me avisan jeje

Desconectado nico

  • PIC16
  • ***
  • Mensajes: 180
Re: PIC18F2550 + LCD
« Respuesta #12 en: 23 de Agosto de 2014, 18:51:16 »
Podrias colocar un diagrama de como lo tienes conectado así lo miramos?

Salutes

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: PIC18F2550 + LCD
« Respuesta #13 en: 24 de Agosto de 2014, 13:36:51 »
he descargado de la pagina de picmania la libreria flex, compilado y simulado  tu codigo tal cual, y funciona, quizá se trate de un problema en tu hardware
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: PIC18F2550 + LCD
« Respuesta #14 en: 25 de Agosto de 2014, 13:20:34 »
que pena la demora en la respuesta me aleje un poco el domingo para descansar jeje

este es el esquematico por ahi vi que medio aparece la h mientras estoy subiendo la fuente a 5 v pero ya luego desaparece

por cierto estoy utilizando un cristal de 4MHz con dos capacitores de 15pF, en la alimentacion de Vpp en el pin uno lo tengo con una resistencia de 10k que ahi en el esquematico no lo tiene, tambien un  capacitor de tantalio en vdd y vss para filtrar ruido y otro electrolitico cerca a la fuente para el mismo fin.
« Última modificación: 25 de Agosto de 2014, 13:26:37 por GabrielD »


 

anything