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
  • <quote>
    you're killing your prefetch cache...!
    <end>

    no Mr Tameer.

    it is a delay with delays calculated. kiled prefetch cache is part of the delay!

    Plz do not be so upset .if you study YOU can learn.

    Zeusti.

    Always yo're freind.

    every nonsense post of yours makes this charade better. please, do proceed....

Reply
  • <quote>
    you're killing your prefetch cache...!
    <end>

    no Mr Tameer.

    it is a delay with delays calculated. kiled prefetch cache is part of the delay!

    Plz do not be so upset .if you study YOU can learn.

    Zeusti.

    Always yo're freind.

    every nonsense post of yours makes this charade better. please, do proceed....

Children