|
HD44780 |
|
|
|
Jun 13 2010, 17:02
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Цитата(_Макс @ Jun 13 2010, 20:58)  Нашел ошибку, данные читаютcя по фронту, а пишутся по спаду. Переделал processIO(), так еще проще получилось. Теперь читается всегда 0x00 и даже после записи нового значения AC командой 0x88  я уж не говорю о том, что ничего не светиться. Исходите из того, что к моменту строба на E данные (и W) уже жолжны стоять на шиyе. А при чтении - заранее ставите W в неактивное состояние, открываете (1-й) E и читаете после задержки на установление данных. Состоение E по умолчанию - 0 (не активное) для любых операций.
Сообщение отредактировал Genadi Zawidowski - Jun 13 2010, 17:03
|
|
|
|
|
Jun 13 2010, 22:42
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(_Макс @ Jun 13 2010, 19:58)  я уж не говорю о том, что ничего не светиться. То есть при подаче питания на дисплей без запуска программы вы на нем ничего не наблюдаете? Тогда вам надо разбираться со входом напряжения контраста. После подачи напряжения и до инициализации вы должны наблюдать закрашенные знакоместа в первой строке.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 14 2010, 08:31
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(Сергей Борщ @ Jun 14 2010, 01:42)  То есть при подаче питания на дисплей без запуска программы вы на нем ничего не наблюдаете? Тогда вам надо разбираться со входом напряжения контраста. После подачи напряжения и до инициализации вы должны наблюдать закрашенные знакоместа в первой строке. Правда? У меня только подсветка светится и чуть-чуть виднеются знакоместа как и в любом LCD. Правда ли что для LCD с расширенным диапазоном напряжение контраста должно быть отрицательным? Но соль еще и в другом, как я уже писал, даже после присвоения командой 0x88 нового адреса, все равно AC-BF = 0x00  значит таки не проходит инициализация полностью.
|
|
|
|
|
Jun 14 2010, 09:47
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(_Макс @ Jun 14 2010, 11:31)  Правда? У меня только подсветка светится и чуть-чуть виднеются знакоместа как и в любом LCD. Зуб даю!  Добейтесь сочного свечения первой строки. Для этого достаточно трех выводов - питания, земли и Vo. Цитата(_Макс @ Jun 14 2010, 11:31)  Правда ли что для LCD с расширенным диапазоном напряжение контраста должно быть отрицательным? Напряжение контраста измеряется отностительно положительного вывода питания. Его диапазон указан в даташите. Лет 10 назад, для дисплеев с расширенным диапазоном, оно было меньше -5в, поэтому при 5в питании контроллера относительно земляного вывода напряжение контраста получалось отрицательным. Каков его диапазон у современных дисплеев - не следил. При 3в питании контроллера напряжение контраста будет отрицательным относительно земли и для дисплеев с обычным диапазоном.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 14 2010, 12:45
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(Сергей Борщ @ Jun 14 2010, 12:47)  Зуб даю!  Добейтесь сочного свечения первой строки. Для этого достаточно трех выводов - питания, земли и Vo.Напряжение контраста измеряется отностительно положительного вывода питания. Его диапазон указан в даташите. Лет 10 назад, для дисплеев с расширенным диапазоном, оно было меньше -5в, поэтому при 5в питании контроллера относительно земляного вывода напряжение контраста получалось отрицательным. Каков его диапазон у современных дисплеев - не следил. При 3в питании контроллера напряжение контраста будет отрицательным относительно земли и для дисплеев с обычным диапазоном. Вы гений!  Заработало! Действительно потенциометр контраста стоял в крайнем верхнем положении и от области видимости был очень далек. Теперь проблема другая, при выводе символов в которых во младшей тетраде 7 либо F, BF_AC становится равным 0xAA. Как я понимаю дело в трех единичках, когда они под ряд стоят, но как это связано с контроллером или программной ума не приложу, ковыряю дальше. Очень странно, переписал processIO() по тому как говорил Genadi Zawidowski и как написано на gaw.ru и все стало отображаться правильно. Выходит действительно, выводить данные на запись нужно перед стробом, в даташитах ошибка. Если кто выводил данные на запись перед спуском E, пожалуйста отзовитесь.
Сообщение отредактировал _Макс - Jun 14 2010, 11:55
|
|
|
|
|
Jun 14 2010, 13:16
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(_Макс @ Jun 14 2010, 14:45)  Вы гений! Ну а Вы тогда соответственно обманщик, когда утверждали, что поиском пользовались  . Ибо это ошибка номер раз  . Цитата Выходит действительно, выводить данные на запись нужно перед стробом, в даташитах ошибка. Не надо. Удобнее всего при ногомахании данные и Enable Hi одновременно выставлять. Только дальше даташит читайте по поводу длительности этого строба и его зависимости от напряжения питания. Да и дальше, например, время после Enable Lo до снятия данных, времена соблюдать надо. Соблюдайте диаграммы, а не занимайтесь copy-paste из интернету и все заработает сразу и везде.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|