I only see one delay. If you carefully read the data sheet there are notes to the effect of how much time each command takes to execute, and how long a power up delay should be. I suspect that you could add all the suggested commands back in if you carefully followed the delay notes. -Adam On 4/3/06, Tarun Grover wrote: > I've recently completed a project involving an LCD using this same > controller. What I found is that with the 2 LCD's I was using for testing, > this initialization routine did not work. What I found DID work was when I > left out > the first 3 'write4(3)' instructions. Now, this goes against > everything I've read on the internet and from Hitachi's Datasheet. I > only found 1 instance where someone used a different initialization > scheme and this seemed to work for me. > > Was there anything wrong with what I was doing or do different LCD's behave > differently (even though they use the same controller)? > > Here is my initialization routine: > > void lcd_init(void) > { > LCD_EN_DIR = 0; //Set EN and RS lines to output; > LCD_RS_DIR = 0; > > TRISBbits.TRISB0 = 0; //Set data lines to output; > TRISBbits.TRISB1 = 0; > TRISBbits.TRISB2 = 0; > TRISBbits.TRISB3 = 0; > > LCD_EN = 0; > LCD_RS = 0; //Write control bytes. > delay(1300000); > > PORTB = 0x0002; //Set 4 bit mode. > LCD_STROBE(); > > lcd_write(0x28); //4 bit mode, 1/16 duty, 5x8 font. > lcd_write(0x08); //Display off. > lcd_write(0x0C); //Display on, cursor on. > lcd_write(0x06); //Entry mode. > } > > Any insights? > > -Tarun. > > On 4/3/06, M. Adam Davis wrote: > > > > What is your LCD init routine? I've never experienced that problem > > with the cheap LCDs I have used with this routine: > > > > write4 just writes 4 bits to the LCD interface, write8 writes 8 bits > > in two cycles of 4 bits. The rest should be pretty explanatory, > > except for the ??? which I sure could be determined from the data > > sheet in short order. > > > > void initlcd(void) > > { > > delayms(20); // Wait for LCD to power up ( >15ms ) > > RS=0; // Set RS low for instruction > > write4(3); // Set interface to 8 bits > > delayms(5); // Wait for LCD execute instruction ( >4.1ms ) > > write4(3); // Set interface to 8 bits > > delayms(1); // Wait for LCD execute instruction ( >100us ) > > write4(3); // Set interface to 8 bits > > delayms(5); // Wait for LCD execute instruction (At this point > > // we could actually start using the busy flag) > > write4(2); // Set the display to 4 bit interface > > delayms(5); // Wait for LCD execute instruction > > write8(0x28); // Set the display to two line and ??? > > delayms(5); // Wait for LCD execute instruction > > write8(6); // ??? > > delayms(5); // Wait for LCD execute instruction > > write8(1); // Clear the LCD > > delayms(5); // Wait for LCD execute instruction > > write8(0xf); // ??? > > delayms(5); // Wait for LCD execute instruction > > return; > > } > > > > -Adam > > > > On 4/3/06, kravnus wolf wrote: > > > I have written code for the LCD from bgmicro > > > > > > > > http://www.bgmicro.com/prodinfo.asp?sid=0968912037037037604814310&prodid=LCD1022&page=1&cri=lcd&stype=3 > > > > > > I managed to get it started and printing characters on > > > it. What grips me is that if I reset the PIC through > > > MCLR quickly and numerous times the LCD just prints > > > blank! It seems that the LCD cannot handle quick > > > restart over and over again. I am left > > > clueless........ > > > > > > Thanks, > > > John > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Tired of spam? Yahoo! Mail has the best spam protection around > > > http://mail.yahoo.com > > > -- > > > http://www.piclist.com PIC/SX FAQ & list archive > > > View/change your membership options at > > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > > > -- > > http://www.piclist.com PIC/SX FAQ & list archive > > View/change your membership options at > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > > -- > Tarun Grover > Computer Engineering & Management V > McMaster University, Hamilton, ON, Canada > Chair, McMaster IEEE Student Branch Computer Chapter > grovert@mcmaster.ca - tarun.grover@gmail.com > tarun_grover@ieee.org - 905-518-2743 > -- > http://www.piclist.com PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist > -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist