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 Controller S1D13781 Interfacing with LPC2148 ARM7

Hi
I am interfacing LPC2148 ARM7 with LCD controller S1D13781 but i am using 8 bit direct mode as specified in LCD controller Datasheet and send all configure bits to registers but finall y i am not able to generate HS and VS
if any one use S1D13781 with any of microcontroller please send me any details for configuring register

i am attaching code if any changes please let me know

#include<Lpc214x.h>

/* Address bus and Control Lines is connected as Below of Port P0 */
/* AB18 AB17 AB16 AB15||||AB14 AB13 AB12 AB11||||AB10 AB9 AB8 AB7||||AB6 AB5 AB4 AB3||||AB2 AB1 AB0  X||||TE WR RD CS */
/*  |     |        |    |          |    |         |       |           |    |   |   |      |   |   |   |     |    |   |   |        |  |  |  |  */
/* 23    22   21   20     19   18    17  16      15   14   13  12    11  10   9   8     7    6   5   4    3  2  1  0 */
/*---------------------------------------------------------------------------------------------------------/* |  |  | */
/*---------------------------------------------------------------------------------------------------------/* 0  1  0 */ /* To Write Register Address */
/*---------------------------------------------------------------------------------------------------------/* 1  0  0 */ /* To Read Data of Register*/

/* Data bus is connected as Below of Port P1 */
/* DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 */
/*  |   |   |   |   |   |   |   |  */
/* 23  22  21  20  19  18  17  16  */

void write(unsigned char );
void LCD_Delay(unsigned int );
void LCD_Init(void);
int read();

#define CS_Set IOSET0 = 0x00000001;
#define CS_Clr IOCLR0 = 0x00000001;

#define RD_Set IOSET0 = 0x00000002;
#define RD_Clr IOCLR0 = 0x00000002;

#define WR_Set IOSET0 = 0x00000004;
#define WR_Clr IOCLR0 = 0x00000004;

#define TE_DB8_INPUT IODIR0 = 0x00000008;



int read()
{
        unsigned int Data;
        IOCLR1 = 0xFFFFFFFF;
        WR_Set;                                 // Write High
        RD_Clr;                                 // Read Low
        CS_Clr;                                 // CS Low
//      IOSET1 = Data << 16;
        Data = IOPIN1;
        LCD_Delay(1);
        RD_Set;                                 // Read High
        CS_Set;                                 // CS High
        IOCLR1 = 0x00FF0000;    // Clear Data Pins
        return Data;
}

void write(unsigned char Data)
{
        IOSET1 = Data << 16;
        RD_Set;                                 // Read Low
        WR_Clr;                                 // Write Low
        CS_Clr;                                 // CS Low

        LCD_Delay(1);
        WR_Set;                                 // Write High
        CS_Set;                                 // CS High
        IOCLR1 = 0x00FF0000;    // Clear Data Pins
}

void LCD_Delay(unsigned int Time)
{
        unsigned int i,j;

        for(i=0;i<=Time;i++)
        for(j=0;j<1;j++);
}

void LCD_Init(void)
{
unsigned int val =0;
        IOSET0 = 0x00C10050;
        val = read();
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C100D0; /* 0x60806 */
        write(0x00);
        write(0x01);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10090; /* 0x60804 */
        write(0x00);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10210; /* 0x60810 */
        write(0x00);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10250; /* 0x60812 */
        write(0x11);
        IOCLR0 = 0xFFFFFFF7;


        IOSET0 = 0X00C10290; /* 0x60814 */
        write(0x2C);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C102D0; /* 0x60816 */
        write(0x08);
        IOCLR0 = 0xFFFFFFF7;


        IOSET0 = 0X00C10090; /* 0x60804 */
        write(0x03);
        IOCLR0 = 0xFFFFFFF7;

                IOSET0 = 0X00C10210; /* 0x60810 */
        write(0x01);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10410; /* 0x608120 */
        write(0x2D);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10450; /* 0x60822 */
        write(0x18);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10490; /* 0x60824 */
        write(0x28);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C104D0; /* 0x60826 */
        write(0x03);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10510; /* 0x60828 */
        write(0xF0);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10550; /* 0x6082A */
        write(0x02);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10590; /* 0x6082C */
        write(0x1E);

        IOSET0 = 0X00C105D0; /* 0x6082E */
        write(0x00);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10610; /* 0x60830 */
        write(0x03);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10650; /* 0x60832 */
        write(0x00);
        IOCLR0 = 0xFFFFFFF7;

        IOSET0 = 0X00C10690; /* 0x60834 */
        write(0x00);
        IOCLR0 = 0xFFFFFFF7;
}

void main(void)
{

        IODIR0 = 0xFFFFFFF7;                            /* Set LCD pin as out put P0.6 as Input*/
        IOCLR0 = 0xFFFFFFF7;                            /* Clear all Used Pins */

        IODIR1 = 0xFFFFFFFF;
        IOCLR1 = 0xFFFFFFFF;
        IODIR1 = 0xFF00FFFF;

        RD_Set;                                 // Read High
        WR_Set;                                 // Write High
        CS_Set;                                 // CS High

LCD_Init();
IOCLR0 = 0xFFFFFFF7;
IOSET0 = 0X00C10890; /* 0x60842 */
 while(1)
  {

write(0xFF);
LCD_Delay(1);
write(0xff);
LCD_Delay(1);
write(0xFF);
LCD_Delay(1);

write(0x00);
LCD_Delay(1);
write(0x00);
LCD_Delay(1);
write(0x00);
LCD_Delay(1);

}
}