Неправильно.
RW вы завесили на землю, т.е. всегда ПИШЕТЕ в контроллер 44780.
E(nable) всегда лежит в нуле.
Сначала выбирается RS - выбор регистра - если RS=0 - то пишем в регистр команд (что и нужно при инициализации), если RS=1, то пишутся данные (вывод символов). При инициализации RS можно строго держать нулем, и не трогать.
Затем выставляете на D4...7 нужную команду.
Качаете Еноблом в 1, потом в ноль. При переходе 1-›0 (спад импульса) команда (данные) писаются в регистр.
По даташиту сначала Енобель в 1, затем ставим данные, но это не принципиально, поскольку запись идет по его СПАДУ.
Еще нюанс - при начальной инициализации до момента установки 4-битного режима HD44780 работает как 8-битный. После того, как в процессе инициализации Вы установили 4 битный режим - следующие команды ( а впоследствии и данные) уже пойдут ниблами (по 4 бита), т.е. передача в два этапа. "Желтые штаны - два раза Ку"(Кин-дза-дза).
Времянки для инициализации возьмите с английского варианта даташита на HD44780, например здесь:
http://www.atmel.ru/Spec/HD44780.pdf
Fig.26 стр.47 и особо обратите внимание на картинку Fig.9 на стр.23 - это как раз процедура передачи команды и байта данных в дисплей по 4-битному интерфейсу (после инициализации). У вас будет отсутствовать только средняя часть - проверка флага BF, поскольку не используется чтение (RW всегда в нуле).
ЗЫ К последнему утверждению. Чуть не забыл: но время на то, чтобы контроллер дисплея проглотил команду и выставил флаг BF все равно надо учитывать, а то он за вашими действиями не успеет.
-- Прилагается рисунок: --