Работа с ЖКИ на контроллере HD44780 и его аналогах
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Только это не я писал... )))
А про Си. я его плохо знаю, об этом сразу сказал.
А про Си. я его плохо знаю, об этом сразу сказал.
Станислав
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Да, действительно, цитирование как-то криво сработало.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
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 и его аналогах
В начале функции тоже надо добавить, или будет ошибка при нескольких вызовах подряд.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
WiseLord писал(а):В начале функции тоже надо добавить, или будет ошибка при нескольких вызовах подряд.
только обратил внимание, что символы таблице не соответствуют, а решение уже ждет, спасибо. ЕССС, инициализация заработала, шикарно
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Прочитал все 82 страницы ... Так и не нашел (не понял)
При инициализации дисплея передаем три раза команду установки разрядности 8 бит с паузами между ними в 40 мкс. А четвертую команду уже устанавливаем 4 бита разрядности интерфейса тоже с паузой 40 мкс.
Так вот, эти паузы это длина периода строба???? Или период строба, как по таблице всего 500 нс, а это пауза между самими командами?
Извиняюсь, что я такой тупой...
и еще момент. КАк строб работает. Когда идет перепад с высокого на низкий? Или полный, когда и туда и обратно? Т.Е. дисплей принимает команду именно в момент перепада с высокого на низкий? А потом начинает тупить обрабатывая ее? для этого и нужны задержки.
Или когда строб обратно поднимется, только тогда команда будет записана?
При инициализации дисплея передаем три раза команду установки разрядности 8 бит с паузами между ними в 40 мкс. А четвертую команду уже устанавливаем 4 бита разрядности интерфейса тоже с паузой 40 мкс.
Так вот, эти паузы это длина периода строба???? Или период строба, как по таблице всего 500 нс, а это пауза между самими командами?
Извиняюсь, что я такой тупой...
и еще момент. КАк строб работает. Когда идет перепад с высокого на низкий? Или полный, когда и туда и обратно? Т.Е. дисплей принимает команду именно в момент перепада с высокого на низкий? А потом начинает тупить обрабатывая ее? для этого и нужны задержки.
Или когда строб обратно поднимется, только тогда команда будет записана?

Станислав
- koyodza
- Собутыльник Кота
- Сообщения: 2623
- Зарегистрирован: Вс июл 17, 2011 11:51:52
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Длительность строба может быть небольшая (для большинства индикаторов минимум 0,5 мксек), длинные паузы нужны между стробами. Во время этих пауз и происходит выполнение команды.
Дисплей начинает отработку команды после полного цикла строба (нарастающий и затем спадающий). На самом деле разные производители могут делать немного по-разному, кто-то по нарастающему, кто-то по спадающему, но если вы почитаете документацию, то там однозначно сказано о том, что данные (или команда) должны быть установлены до нарастающего фронта строба и оставаться неизменными до спадающего. Во время высокого уровня строба менять данные на шине нельзя.
Дисплей начинает отработку команды после полного цикла строба (нарастающий и затем спадающий). На самом деле разные производители могут делать немного по-разному, кто-то по нарастающему, кто-то по спадающему, но если вы почитаете документацию, то там однозначно сказано о том, что данные (или команда) должны быть установлены до нарастающего фронта строба и оставаться неизменными до спадающего. Во время высокого уровня строба менять данные на шине нельзя.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Блин... Я все сделал шиворот навыворот...
Хотя в таблицах (диаграммах) нарисовано сначала поднять строб, а потом данные выставлять... (даже пометка есть "действительные данные")...
Хотя в таблицах (диаграммах) нарисовано сначала поднять строб, а потом данные выставлять... (даже пометка есть "действительные данные")...Станислав
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вообще-то на диаграммах фронт E никакими временнЫми параметрами не связан с моментом установки данных. А вот спад - связан (через параметр tSU2). Ну а то что нарисовано так, словно E поднимается до установки данных - это просто нарисовано. Внимание нужно обращать на параметры, а не картинку.
Хотя, с другой стороны, по диаграмме нет и никакого требования начинать строб только после установки данных - лишь обязательно после установки RS/RW. Возможно, в тексте даташита это и оговорено, но на диаграммах - нет.
В любом случае, программу писать проще, когда работа со стробом выделена в отдельную сущность. Поднять - подождать 450нс - опустить - подождать 450нс. Оформить это функцией ли, макросом - и будет проще. Установил данные - дёрнул строб.
Хотя, с другой стороны, по диаграмме нет и никакого требования начинать строб только после установки данных - лишь обязательно после установки RS/RW. Возможно, в тексте даташита это и оговорено, но на диаграммах - нет.
В любом случае, программу писать проще, когда работа со стробом выделена в отдельную сущность. Поднять - подождать 450нс - опустить - подождать 450нс. Оформить это функцией ли, макросом - и будет проще. Установил данные - дёрнул строб.
- koyodza
- Собутыльник Кота
- Сообщения: 2623
- Зарегистрирован: Вс июл 17, 2011 11:51:52
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
WiseLord Вы правы: требуется неизменность только А0(RS) и RW, но логически обычно А0 устанавливается той же процедурой, что и данные.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Почти победил его!!!! Инициализация не проходит.. Данные не выводит.
Но! если поставить во фьюзах бит СКОРТ (т.е. убрать его), то амплитуда на кварце снижается. Потом пальцем прикасаешься к выводам кварца и все! Инициализируется и работает!!!! И выводит то, что я на него отправил.
А если СКОРТ включить, то пальцем бесполезно прикасаться. И не работает...
Ткните носом пожалуйста!
Да и еще, если его запустить образом, описанным выше, то работает, снова прошиваю... вообще никак не реагирует (показывает, то что и было), опять прикасаюсь к ногам кварца - снова инициализируется и показывает то, что я хочу...
Но! если поставить во фьюзах бит СКОРТ (т.е. убрать его), то амплитуда на кварце снижается. Потом пальцем прикасаешься к выводам кварца и все! Инициализируется и работает!!!! И выводит то, что я на него отправил.
А если СКОРТ включить, то пальцем бесполезно прикасаться. И не работает...
Ткните носом пожалуйста!

Да и еще, если его запустить образом, описанным выше, то работает, снова прошиваю... вообще никак не реагирует (показывает, то что и было), опять прикасаюсь к ногам кварца - снова инициализируется и показывает то, что я хочу...
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
У меня даже больше стоят...
Еще с учетом того, что включение МК идет с задержкой в 64 мс. Так фьюз настроен.
А все остальные больше поставил, чем написано в этой таблице. Могу исходники выложить. Все с комментариями.
Вот ведь, когда контроллер прошивается, то линия РЕЗЕТ прижимается на землю... А после ее отпускания идет снова запуск, значит и инициализация должна происходить снова?
А он у меня во время прошивки показывает то, что я на него вывел и после нее тоже самое показывает. Даже не дрогнул!!! ))))) Козел.
Еще с учетом того, что включение МК идет с задержкой в 64 мс. Так фьюз настроен.
А все остальные больше поставил, чем написано в этой таблице. Могу исходники выложить. Все с комментариями.
Вот ведь, когда контроллер прошивается, то линия РЕЗЕТ прижимается на землю... А после ее отпускания идет снова запуск, значит и инициализация должна происходить снова?
А он у меня во время прошивки показывает то, что я на него вывел и после нее тоже самое показывает. Даже не дрогнул!!! ))))) Козел.
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Ещё вопрос:
После установки разрядности, после следующих команд, флаг занятости проверяете?
/Я всегда делал по этой документации и проблем никогда не возникало. Единственное, у них не написано про то, что после INIT-а надо дать команду "включить индикатор"
/
После установки разрядности, после следующих команд, флаг занятости проверяете?
/Я всегда делал по этой документации и проблем никогда не возникало. Единственное, у них не написано про то, что после INIT-а надо дать команду "включить индикатор"
/
Последний раз редактировалось Albert_V Пт янв 09, 2015 15:08:59, всего редактировалось 1 раз.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Команду включить индикатор отправляю. Включается же. ))) Я уже почти их все наизусть выучил, пока с ним разбирался...
Флаг не проверяю. R\W на земле сидит жестко... Ибо линии экономлю. Всего 6 проводов подключено. ))))
Я грешу на задержки. Хотя вычисленные они при 16 МГц... получается 62,5 нс на такт. От этого и пляшу. Все на ассемблере. Все задержки вручную посчитаны.
Сделаны чуть больше, чем в даташитах. Даже уже выставлял в два-три раза больше, но все равно та же картина...
Ухты, ептить... Новый дадашит. ))) Такого у меня еще не было. Уже штук 8 разных есть.
Флаг не проверяю. R\W на земле сидит жестко... Ибо линии экономлю. Всего 6 проводов подключено. ))))
Я грешу на задержки. Хотя вычисленные они при 16 МГц... получается 62,5 нс на такт. От этого и пляшу. Все на ассемблере. Все задержки вручную посчитаны.
Сделаны чуть больше, чем в даташитах. Даже уже выставлял в два-три раза больше, но все равно та же картина...

Ухты, ептить... Новый дадашит. ))) Такого у меня еще не было. Уже штук 8 разных есть.
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Если пишите на ASM под PIC18 - могу поискать свои библиотеки.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Albert_V писал(а):под PIC18
А вот тут спасибо - не надо. )) Не дружу с ПИКами. На АВР ковыряюсь.
Чую, что где-то маленькая проблемка. Сейчас воткнусь ее и исправлю!
З.Ы. О! спасибо ВАм. )) Таблица втроенного знакогенератора подходит. Рисует русские буквы, хоть и не запускается... )))
Станислав
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Если такая свистопляска с кварцем - может дело в нём?
Попробуйте прошить фьюзы на внутренний 8МГц генератор, не меняя задержки (хуже ведь не станет).
Вдруг проблема как раз в неработающем 16МГц генераторе? Хорошо бы осциллографом посмотреть.
Попробуйте прошить фьюзы на внутренний 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 и его аналогах
Посмотрел у себя в программах. Для Init-а я шлю такую последовательность команд:
b'00000011'
b'00000011'
b'00000010'
b'00101010'
b'00001011'
b'00000001'
b'00000110'
b'00000010'
b'00001100'
После этого он обязан ожить.
Может, конечно, у вашего индикатора занижена внутренняя частота тактирования. Попробуйте, всё-таки, считывать флаг заняности.
Спойлер
b'00000011'b'00000011'
b'00000011'
b'00000010'
b'00101010'
b'00001011'
b'00000001'
b'00000110'
b'00000010'
b'00001100'
После этого он обязан ожить.
Может, конечно, у вашего индикатора занижена внутренняя частота тактирования. Попробуйте, всё-таки, считывать флаг заняности.
С Уважением, Альберт (Albert_V).