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++); {

} }

Parents
  • 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++);
            {
    
            }
      }
    
    

Reply
  • 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++);
            {
    
            }
      }
    
    

Children