We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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); } }
Have you checked in port simulator of keil ide weather your code is generating desired waveform?