This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

lcd not working

hi
i am trying to interface an 16x2 lcd onto an arm7 board lpc2148. the pins i am using for the data is p0.16-p0.23
and for control signals ie rs rw e i am using p1.24 p1.25 p1.26 respectively.When i dump the following code nothing is getting changed in the display .can anybody help me out...i am attaching the code here ..kindly do the needful


#include<LPC214x.h>
void init_PLL(void);
void init_GPIO(void);
void lcd_data(unsigned char);
void lcd_cmd(unsigned char);
void lcd_init(void);
void delay(unsigned int);

#define E 0x04000000
#define RW 0x02000000
#define RS 0x01000000

int main(void)
{
        init_PLL();
        init_GPIO();
        lcd_init();
        while(1)
        {
                lcd_data('A');
                lcd_data('B');
                lcd_data(96);
                lcd_data('d');
                delay(0xffffff);
        }
}
void init_PLL(void)
{
        PLL0CFG=0x00000024; // TO GENERATE 60 MHZ CCLK
        PLL0CON=0x00000001;
        PLL0FEED=0x000000AA;//UPDATE THE PLL REGISTER
        PLL0FEED=0x00000055;
         while(!(PLL0STAT & 0x00000400)); // CHECK WHETHRT THE CCLK IS GENERATED EXAXT VALUE
        PLL0CON=0x00000003;  //  CONNECT PLL
        PLL0FEED=0x000000AA; //UPDATE THE PLL REGISTER
        PLL0FEED=0x00000055;
        VPBDIV=0x00000002;      //PCLK=1/2*CCLK
}
void init_GPIO( void)
{
        PINSEL0=0x00FF0000;
        PINSEL1=0x07000000;
        IODIR0=0x00FF0000;
        IODIR1=0x07000000;
}
void lcd_init(void)
{

        lcd_cmd(0x380000);
        delay(0xffffff);
        lcd_cmd(0x0e0000);
        delay(0xffffff);
        lcd_cmd(0x800000);
        delay(0xffffff);
        lcd_cmd(0x060000);
        delay(0xffffff);
}
unsigned int adjust_portbit(unsigned char c)
{
        unsigned char j;
        unsigned int result;
        result=c;
        for(j=0;j<16;j++)
        {
                result=result<<1;
        }
        return result;
}
void lcd_data(unsigned char ldata)
{
         unsigned int temp,z;
        temp=adjust_portbit(ldata);
    init_GPIO();
        z=~temp;
        IOCLR1=z;
        IOSET0=ldata;
        delay(0xffffff);
        IOCLR1=RW;
        IOSET1=RS;
        delay(0xffffff);
        IOSET1=E;
        delay(0xffffff);
        IOCLR1=E;
 }
  void lcd_cmd(unsigned char lcmd)
  {

        unsigned int temp,z;
                 temp=adjust_portbit(lcmd);
        init_GPIO();
        z=~temp;
                IOCLR1=z;
                IOSET0=lcmd;
                delay(0xffffff);
                IOCLR1=RW;
                IOCLR1=RS;
                IOSET1=E;
                delay(0xffffff);
                IOCLR1=E;

  }
  void delay(unsigned int value)
  {
         unsigned int i;
        for(i=0;i<value;i++);
        {

        }
  }