А как Вы осуществляете инициализацию?
Вот что пишут для контроллера HD44780.
Цитата
If the power supply conditions for correctly operating the internal reset circuit are not met, initialization by instructions becomes necessary.
Т.е. если в индикаторе не реализована схема сброса, то применяются следующие шаги по инициализации.
И далее инструкция по запуску в 4х-битном режиме (HD44780U стр. 46 рисунок 24, ссылка ниже):
1. Ждать >15 мс после подъема питания до 4,5В (или >40 мс при 3,3В)
2. Подаем команду перехода в 8-битный режим (RS=0, D = 0011xxxx). Флаг BF не проверять
3. Ждем >4.1 мс
4. Команда перехода в 8-битный режим (RS=0, D[7:0] = 0011xxxx) Флаг BF не проверять
5. Ждем >100 мкс
6. Команда перехода в 8-битный режим (RS=0, D[7:0] = 0011xxxx) Флаг BF не проверять
7. Дождаться завершения предыдущей инструкции ( для Fosc = 270 кГц t > 37 мкс)
8. Команда перехода в 4-битный режим (RS=0, D[7:0] = 0010xxxx) После этой инструкции можно уже проверять BF.
9. Команда перехода в 4-битный режим+размер индикатора (RS=0, D[7:4] = 0010, D[7:4] = NF** )
10 Display off [0000]:[1000]
11 Display clear [0000]:[0001]
12 Entry mode set [0000]:[01,I/D,S]
Обратить внимание, что пункты 2,4,6,8 выполняются в 8-битном режиме. Т.е. по одному стробу сигнала Е на 1 байт(вернее, 4 бита) данных
Начиная с п. 9 (включительно) команды подавать в 4-битном режиме (2строба х 4бита).
При выполнении п. 8-12 придерживаться таймингов.
Да, и самое главное. Не забыть включить индикатор (Display On = [0000]:[11CB])