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.
Bookmarks