There is an initialization process to get LCDs to come on line. It usually isn't needed, but I ran into an instance like yours where everything suggested it SHOULD work, but it didn't. One of the HD44780 LCD Data Sheets outlined an initialization process. Here is what I use:

4-Wire
Code:
Init_LCD:
    RS = 0
'    LCD = $20
    DB7 = 0
    DB6 = 0
    DB5 = 1
    DB4 = 0
        En = 1
        pauseus 10
        En = 0
        pause 5
'    LCD = $20
    DB7 = 0
    DB6 = 0
    DB5 = 1
    DB4 = 0
        En = 1
        pauseus 10
        En = 0
        pauseus 160
'    LCD = $20
    DB7 = 0
    DB6 = 0
    DB5 = 1
    DB4 = 0
        En = 1
        pauseus 10
        En = 0
        pauseus 160
    LCD = $28
        gosub Send
    LCD = $10
        gosub Send
    LCD = $0C
        gosub Send
    LCD = $06
        gosub Send
    LCD = 1
        gosub Send
        pause 1
    LCD = $80
        gosub Send
    RS = 1
    pause 1
RETURN
For 8-wire:
Code:
Init_LCD:
    low RS
    PORTB = $30
        high En
        pauseus 4
        low En
        pause 5
    PORTB = $30
        high En
        pauseus 4
        low En
        pauseus 160
    PORTB = $30
        high En
        pauseus 4
        low En
        pauseus 160
    PORTB = $38
        gosub Send
    PORTB = $10
        gosub Send
    PORTB = $0C
        gosub Send
    PORTB = $06
        gosub Send
    PORTB = 1
        gosub Send
        pause 1
    PORTB = $80
        gosub Send
    high RS
    pause 1 
RETURN

Send:
    high En
    pauseus 8
    low En
    pause 1
return
Maybe this will help.