Возможно ли определить проинициализорован ли дисплей или нет? Просто такая ситуация, что если провести инициализацию в 4битный интерфейс повторно, то дисплей либо вообще отказывает, до сброса питания, либо начинает работать неадекватно. Помогите
//след. три действия обязательны именно в таком порядке Вывод 28h //display-off задержка 80мкс Вывод 0Ch //diplay-on задержка 80мкс Вывод 01h //clear display задержка 80мкс
//след. действия по желанию (установка рабочих параметров Вывод 0Fh //diplay, cursor-on задержка 80мкс Вывод 06h //ch->cursor right задержка 80мкс Вывод 80h задержка 80мкс
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Вот на Winstar_e когда-то скачал ихний пример инициализации 4-бит интерфейса и то что из него написал для IAR. Там много лишнего, но вроде всё понятно, писалось под WinAvr_ом и было тупо скопировано в IAR.
Для правильной организации передачи команд и данных на дисплей в 4-х битном режиме, необходимо контроллировать, принимает ли контроллер дисплея то, что ему посылается. Например, как у меня в инициализации 0802. Сбой происходит из-за того, что дисплей не принял вторую половину команды, а его пытаются инициализировать. Соответственно все посланное позже не воспринимается им адекватно. После общего сброса или подачи питания все начинает работать правильно. В моей процедуре проверяется, занят ли контроллер дисплея после передачи команды, если занят - все в порядке, если нет - выравниваем интерфейс половиной байта и пробуем снова.
eufs Хоть коменты вставь, ведь не всем понятно будет.
С коментами.
Код:
;ПП инициализации в дисплея 4х битном режиме init_0802: rcall pause ;пауза после подачи питания 10 мс cbi _portb,en ;сбрасыв EN cbi _portb,rw ;сбрасыв RW cbi _portb,rs ;сбрасыв RS (команда) rcall p50us ;пауза 50us
ldi r17,$02 ;передаем тетраду 0010 rcall d_out4
ldi r17,$28 ;передаем 0010 1000 в два этапа rcall d_out sbrs r0,_data7 ;если бит 7 сброшен, то дисплей команды не принимает rjmp init_0802 ;пробуем снова
как уже прозвучало - тайминги. ну и проверить всё ли при повторной инициализации находится в состоянии как после сброса? т.е. нет выхода на разделяемую шину(если таковая присутствует) с LCD? нет ли текущего обращения к LCD и мы влезаем в середину этого общения? и т.п..
юзаю достаточно много по времени 4битную схему подключения. описанных проблем не выявленно.
Сейчас этот форум просматривают: wladimir031054 и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения