you may have some problem with 16F628 and ADCON1... as it don't have any a/d converter.

While it's always a good programming practice to set TRIS register, LCDOUT do it for you.

Faulty i/o
No contrast pot on LCD Vo line
R/W pin not tied to GND
no pull-up (~10K) on OpenCollector output
floating MCLR input if used, or not disabled in code
same thing for LVP mode,
faulty/missing connections
unsufficient LCD startup time

are some things to check.