I am trying to drive a 1602 LCD display from a 5v 16Mhz Pro Mini. I am using the HelloWorld LCD example. All I get is 4 garbage characters to the bottom left of the display.
I have tested the Pro Mini with the blink example, and that works fine. I have tested the LCD display and sketch on a Duemilanove and they work fine. I have checked the connections several times and am pretty sure they are correct as per http://www.instructables.com/id/Connecting-an-LCD-to-the-Arduino. I have checked the baud rate problems that others have reported with what turned out to be a 3.3v 8Mhz board by adding code to print to the serial monitor and checking results at 9600 and 19200 baud; I get correct results compiling to a 5V 16Mhz board at 9600 baud.
It isn't the Pro Mini. Last year I used a Pro Mini, a 1602A LCD, a 3 X 4 keypad and and a DDS AD9850 to build a sine/square wave generating instrument and it all worked great.
Even though you triple checked the wiring, your problem must be with the wiring or the sketch. Sometimes there is some very simple error that can drive us nuts and then we find the problem and say "wow, what a stupid mistake I made."
I thought I would test every output pin used by the LCD with an LED connected and then turn each on and off in sequence. It didn't work. I dug deeper and found the culprit - a faulty ground connection. I assume it was when I soldered on the pin blocks, but the groound on one side of the board doesn't give 0 ohms to the ground on the serial interface header, but the one on the other side does. Anyway, all is now working, so this might help others with similar symptoms. As others have noted; don't take anything for granted, check everything. Thanks all.
Is it on a breadboard? Those connections are super wonky. Have sat down and bumped the bench and had an LCD go stupid because of breadboard connections. And it won't right itself until reset. So jiggle your connects and reset the power and see what happens.