TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: halowin en 02 de Marzo de 2014, 15:35:44

Título: PIC18F2550 LCD 2x16 por que tengo que poner esta linea ?
Publicado por: halowin en 02 de Marzo de 2014, 15:35:44
Hola, he estado configurando un lcd 2x16 en mikroc por el PORTB, y no me funcionaba haciendo las mismas conexiones que he hecho siempre con  pic 16f---; hasta que he visto un ejemplo en el que lo unico que me variaba era esta linea:

Código: [Seleccionar]
CMCON = 0x07; // Disable comparators

que no entiendo porque hay que ponerle ese valor, si pongo 0 tambien funciona, la cosa es que lo he visto en varios sitios.

Código: [Seleccionar]
// Conexiones del módulo LCD a 4bits por PORTB
sbit LCD_RS at RB7_bit;
sbit LCD_EN at RB6_bit;

sbit LCD_D4 at RB5_bit;
sbit LCD_D5 at RB4_bit;
sbit LCD_D6 at RB3_bit;
sbit LCD_D7 at RB2_bit;

sbit LCD_RS_Direction at TRISB7_bit;
sbit LCD_EN_Direction at TRISB6_bit;

sbit LCD_D4_Direction at TRISB5_bit;
sbit LCD_D5_Direction at TRISB4_bit;
sbit LCD_D6_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISB2_bit;
// Final de las conexiones del módulo LCD


void main() {
   //oscilador interno a 8 MHz
   OSCCON = 0x7F;
   //while (OSCCON.IOFS=0){};         //esto no se si es muy necesario en este PIC
  
  
   CMCON = 0x07;    // Disable comparators
   ADCON1 = 0x0F;
  
  
   Lcd_Init();                       // Inicialización del visualizador LCD
   delay_ms(300);

   Lcd_Cmd(_LCD_CURSOR_OFF);         // Comando LCD (apagar el cursor)
   Lcd_Cmd(_LCD_CLEAR);              // Comando LCD (borrar el LCD)

   Lcd_Out(1,1,"Hola lcd.");        //Lcd_Out(fila,columna)


   while(1){}
    
}



Título: Re: PIC18F2550 LCD 2x16 por que tengo que poner esta linea ?
Publicado por: BrunoF en 02 de Marzo de 2014, 16:24:17
El datasheet tiene la respuesta.

Sección 22.0. Ahí explica que el valor 0x07 es el que apaga todos los comparadores.

Saludos.
Título: Re: PIC18F2550 LCD 2x16 por que tengo que poner esta linea ?
Publicado por: ppyote en 02 de Marzo de 2014, 20:54:47
te pondre 2 imagenes del datasheet del 16F628A que es el que ahora tengo a mano, lo veras claramente por que hay que incluir esa linea...

Título: Re: PIC18F2550 LCD 2x16 por que tengo que poner esta linea ?
Publicado por: halowin en 03 de Marzo de 2014, 04:54:31
te pondre 2 imagenes del datasheet del 16F628A que es el que ahora tengo a mano, lo veras claramente por que hay que incluir esa linea...



Gracias ppyote por tu ayuda.

La cosa es que si comento esa linea tambien funciona !!!!.

Saludos
Título: Re: PIC18F2550 LCD 2x16 por que tengo que poner esta linea ?
Publicado por: ppyote en 03 de Marzo de 2014, 05:40:23
Usas el puerto A para el lcd? Sí no lo usas ese es el motivo por el cual funciona igual,
en el momento que quieras usar el puerto A como entrada/salida digital necesitaras configurar el puerto como es debido o de lo contrario no funcionara