The base of this code is from microchip examples. I have used in many projects. But they have all been 4MHz projects. What I remember from a typical LCD datasheet. A LCD need around 250 nano sec to detect the EN pulse. So with a 8 MHz clock it should detect the EN pulse. But anyway this is a simple thing to try outJust shooting in the dark.
Try rewriting the LCD_STROBE( ) macro as a separate subroutine
and put some delay between going high and low.
Call lcd_init( ) twice in main( ).
Check timings on the scope and make sure you are not running too fast.
Increase the delays where necessary.