According to the PBP3 manual LCDOUT command: "A program should wait for up to half a second before sending the first command to
an LCD. It can take quite a while for an LCD to start up". I don't see the wait time in your code.

Is it possible to have full code, schematic and some part numbers of major components?