Hallo,
ein LCD hat ein Busy- oder Ready-Signal, welches ausgelesen werden kann. Das benutzt kaum jemand und das zeigt auch nicht an, ob die Initialisierung erfolgreich war.
Wichtig ist die Reihenfolge der Initialisierungs-Befehle im 4 oder 8 Bit Modus mit den entsprechenden Wartezeiten. Die Wartezeiten dürfen auf keinen Fall unterschritten werden, weil sonst Befehle gesendet werden, obwohl das LCD noch beschäftigt ist und diese nicht annehmen kann.
Erst nach korrekter Initialisierung werden die gesendeten ASCII-Zeichen dargestellt. Auch hier sind Wartezeiten zwischen der Zeichen-Übergabe einzuhalten.

Wenn Du nur schwarze Balken siehst, solltest Du vielleicht mal an dem Poti für den Kontrast drehen.