LCDInfo.com http://forum.lcdinfo.com/ |
|
s1d13700 not initializing http://forum.lcdinfo.com/viewtopic.php?f=14&t=2417 |
Page 1 of 1 |
Author: | srini_revu [ Mon Feb 25, 2008 6:06 ] |
Post subject: | s1d13700 not initializing |
Hello all, I am working with Lpc 2106 controller and Hitachi Monochrome 4 bit LCD,320x240 pixels with S1D13700 Lcd Controller.I have done initialize code.. But LCd Not initializing... Please go through my code.. #include <LPC210X.H> //#include<stdio.h> //#include"font.h" #define HIGH 1 #define LOW 0 #define SYSTEM_SET 0x40 #define POWER_SAVE 0x53 #define DISPLAY_OFF 0x58 #define DISPLAY_ON 0x59 #define SCROLL 0x44 #define CSRFORM 0x5D #define OVERLAY 0x5B #define CGRAM_ADR 0x5C #define HDOT_SCR 0x5A #define CSRW 0x46 #define CSRR 0x47 #define GRAYSCALE 0x60 #define MEMWRITE 0x42 #define MEMREAD 0x43 #define A0 (1<<28) #define READ (1<<29) #define WRITE (1<<19) #define CS (1<<20) #define WAIT (1<<21) //#define RESET (1<<28) //#define D0 (1<<10) void command_write(int); void parameter_write(int); //unsigned char LcdBufFont[240][40]; //char screen_invert = 0xff; //int wait; __inline void output_data(int data) { IOSET = data<<6; IOCLR = (~data<<6); } void output_bit(long pin,char data) { if(data) IOSET = pin; else IOCLR = pin; } int main(void) { int i; // 29-28 21-20 19,17 -10 IODIR = 0x303BFC00; // 0011 0000 0011 1011 1111 1100 0000 0000 output_bit(WRITE,LOW); // 3 0 3 B F C 0 0 output_bit(READ,LOW); output_bit(CS,LOW); /* Indirect Addressing Initialization Procedure*/ /*############# SYSTEM_SET ######################### */ command_write(SYSTEM_SET); /* C system_set Command */ for(i=0;i<3000;i++); parameter_write(0x38); /*P1 INTERGAL cgroM 8 LINES PER CHAR,Dual panel Drive */ parameter_write(0x87); /* P2 Horizontal_character size 8 pixels*/ parameter_write(0x07); /* P3 Vertical Character size 8 pixels */ //C/R parameter_write(0x4F); /* P4 No of Bytes per Line 40*2-1 =79*/ // TC/R parameter_write(0x53); /* P5 Total Characres Per ROW 79+4 */ parameter_write(0xEF); /* P6 L/F 240 display Lines* 240-1 */ parameter_write(0xF0); /* P7 virtual screen Size 240 */ parameter_write(0x00); /* P8 for Indirect Addressing Power save mode to be disable */ /* ########### SCROLL ###################### */ // 320x240 pixels ,Double panel Drive //First Layer Text : 320/8 = 40 characters per Line //240/8 = 30 Characters per Line // 40x30 =1200 bytes //Second Layer Graphics // 320/8 = 40 characters per Line //240/1 =240 Lines // 40x240 = 9600 bytes.. 2580 in HEX 2580+1000 = 3580 hex SAD3 command_write(SCROLL); parameter_write(0x00); // p1 // First Screen Block Start Address parameter_write(0x00); //p2 // set to 0000 h parameter_write(0x28); // p3 parameter_write(0x00); // p4 // Second Screen Block Start Address parameter_write(0x10); //p5 //set to 1000 h parameter_write(0x28); //p6 parameter_write(0x00); //p7 // 3rd Screen Block Start Address parameter_write(0x4B); // p8 // set to 004Bh =1200 Bytes parameter_write(0x80); //p9 //4th Screen Block Start Address parameter_write(0x35); // p10 //Set to 3580h /*############## HDOT SCR ################# */ command_write(HDOT_SCR); parameter_write(0x00); /* ############ OVER LAY ################## */ command_write(OVERLAY); parameter_write(0x01); /* EX-OR Layered Screen Composition Method */ // First Screen Block in Text Mode // Third Screen Block in Text Mode /* ########### DISPLAY off ############## */ command_write(DISPLAY_OFF); /*Display off*/ parameter_write(0x56); /* Flash Cursor at 2 HZ */ parameter_write(0x08); /* First Screen Block ON */ parameter_write(0x20); /* Second Screen Block ON */ parameter_write(0x80); /* Third Screen Block ON */ /* Fill the First Layer Memory with 20h */ /* ########## MWRITE ################ */ command_write(CSRW); /* set the cursor */ command_write(MEMWRITE); // MWrite parameter_write(0x00); parameter_write(0x00); // Set to 0000 for 1st screen Block.. parameter_write(0x20); command_write(CSRW); /* set the cursor */ command_write(MEMWRITE); // MWrite parameter_write(0x00); /* Second Screen Layer */ parameter_write(0x10); parameter_write(0x00); command_write(CSRW); /* Set the Cursor to start of First screen block */ parameter_write(0x00); // parameter_write() // CSR FORM Cursor size command_write(CSRFORM); parameter_write(0x04); parameter_write(0x86); // DISPLAY ON command_write(DISPLAY_ON); //CSR DIR command_write(0x42); parameter_write(0x20); // " " parameter_write(0x45); // E parameter_write(0x50); // P parameter_write(0x53); // S parameter_write(0x4f); // O parameter_write(0x4e); // N } void command_write(int C) { output_bit(A0,HIGH); // Command_write output_bit(CS,LOW); // A0 --> HIGH output_bit(WRITE,LOW); // _ // WR --> LOW output_bit(READ,HIGH); // _ output_data(C); // RD --> HIGH // output_bit(WAIT,LOW); output_bit(WRITE,HIGH); // output_bit(WAIT,HIGH); } void parameter_write(int D) { output_bit(A0,LOW); output_bit(CS,LOW); output_bit(WRITE,LOW); output_bit(READ,HIGH); output_data(D); // output_bit(WAIT,LOW); output_bit(WRITE,HIGH); // output_bit(WAIT,HIGH); } if anywhere i have done mistake,,Please reply me...and suggust me what is the real problem.. Regards, G.srinivasan. |
Page 1 of 1 | All times are UTC + 2 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |