Autor Tema: ayuda con LCD en la configuración de 4 bits  (Leído 3490 veces)

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

Desconectado Rodrigo01

  • PIC10
  • *
  • Mensajes: 1
ayuda con LCD en la configuración de 4 bits
« en: 27 de Octubre de 2008, 15:01:23 »
hola,

Estoy teniendo problemas con la pantalla LCD en el modo 4 bits, no se muestra los mensajes.

¿Me puedes ayudar?

Aquí estoy utilizando el código:


//LCD => 4 bits

#include<p30f4011.h>

//Configuración el bits
_FOSC(CSW_FSCM_OFF & XT_PLL8);
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWRT_OFF);
_FGS(CODE_PROT_OFF);

#define ENABLE PORTEbits.RE5   //pin de la activación
#define RS PORTEbits.RE4   //Selección comando/escrito
#define D7 PORTBbits.RB3   //datos del LCD (4 bits)
#define D6 PORTBbits.RB2
#define D5 PORTBbits.RB1
#define D4 PORTBbits.RB0

//vector del configuración de LCD=>4 bits
   unsigned char config[13]={0x03,0x03,0x03,0x02,0x02,0x08,0x00,0x08,0x00,0x01,0x00,0x01,0x0c};
//vector de los retrasos 
   unsigned int retraso[13]={0,0,50,0,50,0,2000,0,0,2000,0,2000,50};
//mensajes de LCD   
   unsigned char mem1[5]={'d','s','P','I','C'};
   unsigned char mem2[7]={'3','0','F','4','0','1','1'};

//rutina de demora de (tiempo*1us)
void delay_us(unsigned tiempo)      
{
TMR5 = 0;     //Zera temporizador para el inicio del conteo
PR5 = 16;       //Ajuste el período de registro
T5CON=0;       //Modo de temporizador, Prescaler 1:1
IFS1bits.T5IF = 0;      //limpia el flag de temporizador
T5CONbits.TON = 1;      //activa temporizador 
while(tiempo != 0)
  {
   while(IFS1bits.T5IF == 0);   //la espera de 1us
   IFS1bits.T5IF == 0;            //limpia el flag de temporizador
   tiempo--;      //decrement tiempo
  }
T5CONbits.TON = 0;      //desactiva el Timer5           
}

//rutina para el modo de 4 bits
void Niblle_LCD(unsigned char x)   
{
     D7 = (unsigned char)((x&0x08)>>3);
   D6 = (unsigned char)((x&0x04)>>2);
   D5 = (unsigned char)((x&0x02)>>1);
   D4 = (unsigned char)((x&0x01));
    ENABLE=1;             
    delay_us(200);
    ENABLE=0;
    delay_us(200);          
}

void Escribir_LCD(unsigned char x)   //rutina para escribir LCD
{
    Niblle_LCD(x >> 4);
    Niblle_LCD(x);   
}

void Inicio_LCD()       //Inicio LCD (4 bits)
{   
unsigned char y;   
   delay_us(30000);
   RS=0;                  //comando LCD
   for(y=0;y<13;y++)
      {
      Escribir_LCD(config[y]);
      delay_us(retraso[y]);
   }   
      RS=1;              
}

void Comando_LCD(unsigned char x)
{
   RS=0;
   Escribir_LCD(x);
   RS=1;
}

void Primera_Linea(void){Comando_LCD(0x80);}
void Segunda_Linea(void){Comando_LCD(0xc0);}

main()
{
   Inicio_LCD();      
   unsigned char i;

   Primera_Linea();
   for(i=0;i<5;i++)   //'dsPIC'
      { Escribir_LCD(mem1); }

   Segunda_Linea();
   for(i=0;i<7;i++)   //'30F4011'
      { Escribir_LCD(mem2); }

}

Saludo,

Rodrigo

Desconectado victorg_ldj

  • PIC10
  • *
  • Mensajes: 4
Re: ayuda con LCD en la configuración de 4 bits
« Respuesta #1 en: 26 de Enero de 2010, 03:38:55 »
camarada yo puedo ayudarte pero es codico basic de mikrobasic dspic que dices?