A quick check of various forums (both here and elsewhere) shows that tons and tons of people get fooled by LCD initialization. When not executed up to full spec, the unit may indeed initialize properly at times, only to fail at other times. I went through that myself a year ago or so and decided to nail it once and for all. After a bunch of searching on the Web, and cross-comparing things, I finally located the one source that got it completely right. As near as I can tell, this author is about the only one to get the timings completely right. Anyway, here's the link to a foolproof initialization routine:
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.