Работа с ЖКИ на контроллере HD44780 и его аналогах
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Какие проблемы с клавиатурой?
Я бы сделал так (вы можете делать как хотите):
1. (условие) не надо постоянно выводить информацию на индикатор. Согласны?
Если ДА - запрашивайте у подпрограммы вывода на индикатор вывод на индикатор (ACK + флаг "выполнение" с её стороны)
2. Если вывода на индикатор нет (флаг "выполнение" со стороны программы вывода на индикатор сброшен) - выставляете A0, E и R/W в "0" и опрашиваете клавиатуру (с использаванием DB4-DB7).
Поясните, пожалуйста, что такое МЭИН? Если это MAIN - это всё то, что выполняется не по прерываниям.
_____
Если хотите - пишите в ЛС или создайте новую тему. Здесь это уже могут расценить как Off-Top.
Я бы сделал так (вы можете делать как хотите):
1. (условие) не надо постоянно выводить информацию на индикатор. Согласны?
Если ДА - запрашивайте у подпрограммы вывода на индикатор вывод на индикатор (ACK + флаг "выполнение" с её стороны)
2. Если вывода на индикатор нет (флаг "выполнение" со стороны программы вывода на индикатор сброшен) - выставляете A0, E и R/W в "0" и опрашиваете клавиатуру (с использаванием DB4-DB7).
Поясните, пожалуйста, что такое МЭИН? Если это MAIN - это всё то, что выполняется не по прерываниям.
_____
Если хотите - пишите в ЛС или создайте новую тему. Здесь это уже могут расценить как Off-Top.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Тему другую создам позже, если возникнут вопросы по клавиатуре с дисплеем. )))
Как только переделаю программу на чтение флага занятости дисплея, выложу сюда результаты. Не нарьше, чем завтра...
Благодарю за помощь.
Уверен, что я на грани победы уже.
Как только переделаю программу на чтение флага занятости дисплея, выложу сюда результаты. Не нарьше, чем завтра...
Благодарю за помощь.
Уверен, что я на грани победы уже.
Станислав
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Кстати, каков размер получившегося бинарника (ну, или hex-а)? Ассемблер ведь.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ну сейчас уже большеватый стал. Все зависит от того, сколько макросов в основной программе используется, т.е. чем больше букв выводим, тем больше код. И еще я не очень оптимально пишу ибо дилетант.
А так на то сообщение, что на фотографии, компилируется в 370 Байт (4,5 %) памяти флеша у АТМеги8...
З.Ы. еще можно учесть, что теперь используется управление чтением/записью (правда не везде еще прописано). И подключать дисплей можно абсолютно к любым пинам любых портов контроллера.
А так на то сообщение, что на фотографии, компилируется в 370 Байт (4,5 %) памяти флеша у АТМеги8...

З.Ы. еще можно учесть, что теперь используется управление чтением/записью (правда не везде еще прописано). И подключать дисплей можно абсолютно к любым пинам любых портов контроллера.
Станислав
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
подскажите алгоритм записи своих символов в дисплей
выставляем адрес ячейки №0
01000000
RS=1
передаем код символа
теперь по адресу 0х00 будет наш символ.
как-то так?
выставляем адрес ячейки №0
01000000
RS=1
передаем код символа
теперь по адресу 0х00 будет наш символ.
как-то так?
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
вы забыли еще после выставления в порт номера символа идет строб, а потом задержка (на проглатывание команды). Могу код выложить.
Станислав
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
давайте, може поможет
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вот там все. )))
Основной файл, где происходит уже использование макросов и вывод букв - LCD.asm
Файл с макросами на вывод букв и смену знакоместа в двух строках, инициализацией дисплея, задержками, стробами - LCD4_macro.inc
Файл с подпрограммами вывода данных, конфигурацией портов - LCD4.asm
Только предупреждаю, эта библиотечка не доделанная еще. Сейчас добавляю в нее чтение флага занятости. Но она работает, правда у меня с толкача..
Кажется я понял о чем вы просили...
Как вывести свой символ, а не тот что уже прошит в памяти дисплея? Если про это, тогды извиняйте, еще не реализовывал, мне пока не нужны были. А вообще, где-то несколько страниц назад про это было очень подробно расписано. )))))
Там посмотрите, тоже доходчиво написано:
http://easyelectronics.ru/avr-uchebnyj-kurs-podklyuchenie-k-avr-lcd-displeya-hd44780.html
Основной файл, где происходит уже использование макросов и вывод букв - LCD.asm
Файл с макросами на вывод букв и смену знакоместа в двух строках, инициализацией дисплея, задержками, стробами - LCD4_macro.inc
Файл с подпрограммами вывода данных, конфигурацией портов - LCD4.asm
Только предупреждаю, эта библиотечка не доделанная еще. Сейчас добавляю в нее чтение флага занятости. Но она работает, правда у меня с толкача..
Кажется я понял о чем вы просили...
Как вывести свой символ, а не тот что уже прошит в памяти дисплея? Если про это, тогды извиняйте, еще не реализовывал, мне пока не нужны были. А вообще, где-то несколько страниц назад про это было очень подробно расписано. )))))

Там посмотрите, тоже доходчиво написано:
http://easyelectronics.ru/avr-uchebnyj-kurs-podklyuchenie-k-avr-lcd-displeya-hd44780.html
- Вложения
-
- LCD.rar
- (22.01 КБ) 143 скачивания
Станислав
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Да, чтобы нарисовать один из семи своих символов - нужно подать команду с адресами
для 0-го - 0x01000000,
для 1-го - 0x01001000,
...
для 7-го - 0x01111000,
а потом 8 байт данных, рисующих этот символ.
Если нужно изменить что-то в символе, необязательно перерисовывать его весь. Можно сразу стать командой на нужную строку нужного символа, и перерисовать данными только её.
Символ будет потом доступен под номером, соотвественно, от 0 до 7.
для 0-го - 0x01000000,
для 1-го - 0x01001000,
...
для 7-го - 0x01111000,
а потом 8 байт данных, рисующих этот символ.
Если нужно изменить что-то в символе, необязательно перерисовывать его весь. Можно сразу стать командой на нужную строку нужного символа, и перерисовать данными только её.
Символ будет потом доступен под номером, соотвественно, от 0 до 7.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
а все оказалось проще, косяк в инициализации. У меня к примеру 16 пользовательских символов доступно для записи, но нет символа "пробел"
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
2 levaclaus:
Не может быть 16 пользовательских символов доступно. Если посмотрите на мой предыдущий пост, то видно, что для адресации пользовательских символов доступно всего лишь 8 групп по 8 адресов (0x01aaabbb).
Если всё же утверждаете, что их там 16 - как вы создаёте, допустим, символ 08 (девятый по счёту)?
2 СКАЗОЧНИК:
К слову о качестве современных компиляторов. Моя библиотека на C тоже позволяет независимую распиновку, а код, выводящий слово "test", занимает 358 байт. При этом есть функции позиционирования, вывода символа и строки.
Кстати, если хотите - скажите модель вашего контроллера и распиновку (pins.h в моих исходниках) дисплея - я могу собрать для Вас этот код, чисто для проверки работоспособности Вашего девайса. У меня всё работает - вот прямо сейчас.
Не может быть 16 пользовательских символов доступно. Если посмотрите на мой предыдущий пост, то видно, что для адресации пользовательских символов доступно всего лишь 8 групп по 8 адресов (0x01aaabbb).
Если всё же утверждаете, что их там 16 - как вы создаёте, допустим, символ 08 (девятый по счёту)?
2 СКАЗОЧНИК:
К слову о качестве современных компиляторов. Моя библиотека на C тоже позволяет независимую распиновку, а код, выводящий слово "test", занимает 358 байт. При этом есть функции позиционирования, вывода символа и строки.
Кстати, если хотите - скажите модель вашего контроллера и распиновку (pins.h в моих исходниках) дисплея - я могу собрать для Вас этот код, чисто для проверки работоспособности Вашего девайса. У меня всё работает - вот прямо сейчас.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
WiseLord писал(а):При этом есть функции позиционирования, вывода символа и строки.
Это которая координатами задет положение следующего символа? типа (х,у)?
У меня она тоже есть. )))) Написана. Да и вывел я два слова на две строки.
А вот для проверки ХЕКС можно было бы залить.
А вот мои выводы:
Код: Выделить всё
/* KS0066 Data port*/
#define KS0066_D4 C
#define KS0066_D4_LINE (1<<0)
#define KS0066_D5 C
#define KS0066_D5_LINE (1<<1)
#define KS0066_D6 C
#define KS0066_D6_LINE (1<<2)
#define KS0066_D7 C
#define KS0066_D7_LINE (1<<3)
/* KS0066 control port*/
#define KS0066_RS C
#define KS0066_RS_LINE (1<<5)
#define KS0066_RW B
#define KS0066_RW_LINE (1<<0)
#define KS0066_E C
#define KS0066_E_LINE (1<<4)
/* Backlight port */
#define KS0066_BCKL D
#define KS0066_BCKL_LINE (1<<4)
Что такое BCKL_LINE не знаю. Подсветка что ли? Подсветка просто припаяна.
На всякий случай повторю:
DB7 - PortC.3
DB6 - PortC.2
DB5 - PortC.1
DB4 - PortC.0
E - PortC.4
RS - PortC.5
R/W - PortB.0
Станислав
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ОК.
Поскольку названия модели МК я так и не дождался, вот hex-ы под эту разводку для нескольких сразу.
Поскольку названия модели МК я так и не дождался, вот hex-ы под эту разводку для нескольких сразу.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
WiseLord писал(а):Поскольку названия модели МК я так и не дождался
Блин. Извините. Я писал название... Куда делось не понимаю...
А вообще АТМега8
Че то у меня в железе....
Не запустилась и ваша...
Точнее, также с толкача пытается показать слово test.... если отверткой прикасаться к выводам кварца..Причем подозреваю, что это такой совсем китайский дисплей все таки... Т.к. если МК перевести от внутреннего тактирования на 8 МГц, то по идее дисплей должен запуститься. Кварц не влияет, т.к. частота внутренняя, да еще и ниже, значит задержки стали в два раза больше. Но дисплей молчит...
Вот название дисплея... На него нашел только похожие даташиты, но никакого полного соответвтия.
LCM1602K-NSW-BBW-R
Производитель RoHS
Станислав
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Ээээ... стоять... кварц запускается с толкача? Да это кварц коцнутый, менять его надо. Может он стартует на овертоне а не фундаментальной частоте. Подключив частотомер можно ничего и не увидеть - емкость щупа может вернуть всё на свои места. Сделайте прошивку простую мигалку, убедитесь что с расчетным периодом в 1000мС светодиод мигает ровно с той же частотой.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Да ЕПРСТ...
Работает! Светодиод мигает. Одну секунду горит, одну нет. Могу видео заснять... Запустился без проблем сразу. Вот с таким тупым кодом:
Ребята, я уже психовать на него начинаю...

Может я еще где туплю? Может порты как-то не так настраиваю? ну это же не 16 и старше Меги, где всяки ДЖИТАГи.
Замерил то при мигающем светодиоде (разобрался) показывает 20 мА.
Работает! Светодиод мигает. Одну секунду горит, одну нет. Могу видео заснять... Запустился без проблем сразу. Вот с таким тупым кодом:
Спойлер
Код: Выделить всё
Start:
ldi temp, 0xff
out PORTD, temp
ldi R16, 255 ; Задержка ~1024 mсек
ldi R17, 255
ldi R18, 50
LoopW: subi R16, 1
sbci R17, 0
sbci R18, 0
brcc LoopW
ldi temp, 0x00
out PORTD, temp
ldi R16, 255 ; Задержка ~1024 mсек
ldi R17, 255
ldi R18, 50
LoopE: subi R16, 1
sbci R17, 0
sbci R18, 0
brcc LoopE
rjmp Start ; Конец программы, переход на началоРебята, я уже психовать на него начинаю...
Может я еще где туплю? Может порты как-то не так настраиваю? ну это же не 16 и старше Меги, где всяки ДЖИТАГи.
Замерил то при мигающем светодиоде (разобрался) показывает 20 мА.
Станислав
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
После подачи питания на индикатор и началом инициализации точно 20мс проходит? проверено осциллографом?
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
осциллографом не смотрел, но по программе идет сначала инициализация, потом только мигание светодиодом. В Инициализации стояла одна секунда перед началом вместо 20 мс. Видно было по светодиоду, как долго он тупил, прежде чем начать мигать. Потом снова поставил задержку 20 мс. и светодиод стал почти сразу включаться...
Вот сейчас поймал этот импульс добавив команды строба по обе стороны задержки... Флешку не нашел, пришлось фотографировать...


Еще понял одну хреновину... Мне надо разобраться, когда должны быть стробы подняты или опущены между отправками команд....
Собственно, он и вопрос. )))
Вот сейчас поймал этот импульс добавив команды строба по обе стороны задержки... Флешку не нашел, пришлось фотографировать...
Еще понял одну хреновину... Мне надо разобраться, когда должны быть стробы подняты или опущены между отправками команд....
Собственно, он и вопрос. )))
Последний раз редактировалось СКАЗОЧНИК Сб янв 10, 2015 16:37:26, всего редактировалось 1 раз.
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Для проверки портов - отключите Watchdog и индикатор и попробуйте "искусственно зацикливать" куски программы что бы можно было осциллографом увидеть ожидаемый сигнал.
Иногда бывает полезно с отдельного выхода контроллера "создать сигнал синхронизации" для осциллографа и смотреть сигналы в ждущем режиме.
Я не знаю, какие средства отладки у Вас есть в наличии, поэтому мне сложно что-то ещё посоветовать.
Иногда бывает полезно с отдельного выхода контроллера "создать сигнал синхронизации" для осциллографа и смотреть сигналы в ждущем режиме.
Я не знаю, какие средства отладки у Вас есть в наличии, поэтому мне сложно что-то ещё посоветовать.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Заказал еще логический анализатор... Но он пока придет...
Между посылками команд (или данных) где должны быть линии RS, E?
Между посылками команд (или данных) где должны быть линии RS, E?
Станислав