Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

Только это не я писал... )))
А про Си. я его плохо знаю, об этом сразу сказал.
Станислав
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

Да, действительно, цитирование как-то криво сработало.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение levaclaus »

WiseLord писал(а):Такой код будет работать неправильно. Нужно ещё, как минимум, перед PORTA |= nibble добавить PORTA &= 0xF0, для очистки полубайта в порту, иначе рано или поздно там скопятся 4 единичных бита и по факту в дисплей будут всегда уходить данные 0xFF.

Есть контакт, вы помогли, спасибо! :))
Осталось инициализировать дисплей, ST7036 такая гадость надо сказать

Код: Выделить всё

void write(char data)
{
 char nibble;
 nibble = (data & 0xF0) >> 4;
 PORTA |= nibble;
 PORTB.1=1;
 delay_us(250);
 PORTB.1=0;
 delay_us(250);

 nibble = data & 0x0F;
 PORTA &= 0xF0;
 PORTA |= nibble;
 PORTB.1=1;
 delay_us(250);
 PORTB.1=0;
 delay_us(250);
}
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

В начале функции тоже надо добавить, или будет ошибка при нескольких вызовах подряд.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение levaclaus »

WiseLord писал(а):В начале функции тоже надо добавить, или будет ошибка при нескольких вызовах подряд.

только обратил внимание, что символы таблице не соответствуют, а решение уже ждет, спасибо. ЕССС, инициализация заработала, шикарно
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

Прочитал все 82 страницы ... Так и не нашел (не понял)

При инициализации дисплея передаем три раза команду установки разрядности 8 бит с паузами между ними в 40 мкс. А четвертую команду уже устанавливаем 4 бита разрядности интерфейса тоже с паузой 40 мкс.

Так вот, эти паузы это длина периода строба???? Или период строба, как по таблице всего 500 нс, а это пауза между самими командами?

Извиняюсь, что я такой тупой... :oops:

и еще момент. КАк строб работает. Когда идет перепад с высокого на низкий? Или полный, когда и туда и обратно? Т.Е. дисплей принимает команду именно в момент перепада с высокого на низкий? А потом начинает тупить обрабатывая ее? для этого и нужны задержки.
Или когда строб обратно поднимется, только тогда команда будет записана? :facepalm:
Станислав
Аватара пользователя
koyodza
Собутыльник Кота
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение koyodza »

Длительность строба может быть небольшая (для большинства индикаторов минимум 0,5 мксек), длинные паузы нужны между стробами. Во время этих пауз и происходит выполнение команды.
Дисплей начинает отработку команды после полного цикла строба (нарастающий и затем спадающий). На самом деле разные производители могут делать немного по-разному, кто-то по нарастающему, кто-то по спадающему, но если вы почитаете документацию, то там однозначно сказано о том, что данные (или команда) должны быть установлены до нарастающего фронта строба и оставаться неизменными до спадающего. Во время высокого уровня строба менять данные на шине нельзя.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

Блин... Я все сделал шиворот навыворот... :facepalm: Хотя в таблицах (диаграммах) нарисовано сначала поднять строб, а потом данные выставлять... (даже пометка есть "действительные данные")...
Станислав
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

Вообще-то на диаграммах фронт E никакими временнЫми параметрами не связан с моментом установки данных. А вот спад - связан (через параметр tSU2). Ну а то что нарисовано так, словно E поднимается до установки данных - это просто нарисовано. Внимание нужно обращать на параметры, а не картинку.

Хотя, с другой стороны, по диаграмме нет и никакого требования начинать строб только после установки данных - лишь обязательно после установки RS/RW. Возможно, в тексте даташита это и оговорено, но на диаграммах - нет.

В любом случае, программу писать проще, когда работа со стробом выделена в отдельную сущность. Поднять - подождать 450нс - опустить - подождать 450нс. Оформить это функцией ли, макросом - и будет проще. Установил данные - дёрнул строб.
Аватара пользователя
koyodza
Собутыльник Кота
Сообщения: 2623
Зарегистрирован: Вс июл 17, 2011 11:51:52
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение koyodza »

WiseLord Вы правы: требуется неизменность только А0(RS) и RW, но логически обычно А0 устанавливается той же процедурой, что и данные.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

Почти победил его!!!! Инициализация не проходит.. Данные не выводит.

Но! если поставить во фьюзах бит СКОРТ (т.е. убрать его), то амплитуда на кварце снижается. Потом пальцем прикасаешься к выводам кварца и все! Инициализируется и работает!!!! И выводит то, что я на него отправил.

А если СКОРТ включить, то пальцем бесполезно прикасаться. И не работает...

Ткните носом пожалуйста! :write:

Да и еще, если его запустить образом, описанным выше, то работает, снова прошиваю... вообще никак не реагирует (показывает, то что и было), опять прикасаюсь к ногам кварца - снова инициализируется и показывает то, что я хочу...
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

СКАЗОЧНИК, после включения и во время INIT-а у Вас "времена ожидания" соблюдены?
СпойлерИзображение
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

У меня даже больше стоят... :dont_know:
Еще с учетом того, что включение МК идет с задержкой в 64 мс. Так фьюз настроен.
А все остальные больше поставил, чем написано в этой таблице. Могу исходники выложить. Все с комментариями.

Вот ведь, когда контроллер прошивается, то линия РЕЗЕТ прижимается на землю... А после ее отпускания идет снова запуск, значит и инициализация должна происходить снова?
А он у меня во время прошивки показывает то, что я на него вывел и после нее тоже самое показывает. Даже не дрогнул!!! ))))) Козел.
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

Ещё вопрос:
После установки разрядности, после следующих команд, флаг занятости проверяете?
/Я всегда делал по этой документации и проблем никогда не возникало. Единственное, у них не написано про то, что после INIT-а надо дать команду "включить индикатор" :kill: /
Последний раз редактировалось Albert_V Пт янв 09, 2015 15:08:59, всего редактировалось 1 раз.
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

Команду включить индикатор отправляю. Включается же. ))) Я уже почти их все наизусть выучил, пока с ним разбирался...
Флаг не проверяю. R\W на земле сидит жестко... Ибо линии экономлю. Всего 6 проводов подключено. ))))
Я грешу на задержки. Хотя вычисленные они при 16 МГц... получается 62,5 нс на такт. От этого и пляшу. Все на ассемблере. Все задержки вручную посчитаны.
Сделаны чуть больше, чем в даташитах. Даже уже выставлял в два-три раза больше, но все равно та же картина... :dont_know:

Ухты, ептить... Новый дадашит. ))) Такого у меня еще не было. Уже штук 8 разных есть.
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

Если пишите на ASM под PIC18 - могу поискать свои библиотеки.
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

Albert_V писал(а):под PIC18

А вот тут спасибо - не надо. )) Не дружу с ПИКами. На АВР ковыряюсь.

Чую, что где-то маленькая проблемка. Сейчас воткнусь ее и исправлю!

З.Ы. О! спасибо ВАм. )) Таблица втроенного знакогенератора подходит. Рисует русские буквы, хоть и не запускается... )))
Станислав
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

Если такая свистопляска с кварцем - может дело в нём?
Попробуйте прошить фьюзы на внутренний 8МГц генератор, не меняя задержки (хуже ведь не станет).
Вдруг проблема как раз в неработающем 16МГц генераторе? Хорошо бы осциллографом посмотреть.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение СКАЗОЧНИК »

WiseLord писал(а): Хорошо бы осциллографом посмотреть.

Самое интересное... есть у меня осциллограф!!! ))) Смотрел. На одном выводе кварца красивая синусоида, на другом малость кривая... Может быть из-за этого?
СКОРТ включаю, картина та же самая, только амплитуда больше...
Думаю, что-то в программе.
Кстати. переписал по вашему. Строб теперь один. Сначала данные, потом строб. )))) Самое интересное, что программа пашет. Просто старт не проходит... Не пойму почему.

З.Ы. перепрошил от внутренней RС 8 МГц.. Не запускается... ))))
Последний раз редактировалось СКАЗОЧНИК Пт янв 09, 2015 15:30:13, всего редактировалось 1 раз.
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Albert_V »

Посмотрел у себя в программах. Для Init-а я шлю такую последовательность команд:
Спойлерb'00000011'
b'00000011'
b'00000011'

b'00000010'

b'00101010'
b'00001011'
b'00000001'
b'00000110'
b'00000010'
b'00001100'

После этого он обязан ожить.
Может, конечно, у вашего индикатора занижена внутренняя частота тактирования. Попробуйте, всё-таки, считывать флаг заняности.
С Уважением, Альберт (Albert_V).
Ответить

Вернуться в «Периферия»