Страница 84 из 123
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 20:22:49
Albert_V
Какие проблемы с клавиатурой?
Я бы сделал так (вы можете делать как хотите):
1. (условие) не надо постоянно выводить информацию на индикатор. Согласны?
Если ДА - запрашивайте у подпрограммы вывода на индикатор вывод на индикатор (ACK + флаг "выполнение" с её стороны)
2. Если вывода на индикатор нет (флаг "выполнение" со стороны программы вывода на индикатор сброшен) - выставляете A0, E и R/W в "0" и опрашиваете клавиатуру (с использаванием DB4-DB7).
Поясните, пожалуйста, что такое МЭИН? Если это MAIN - это всё то, что выполняется не по прерываниям.
________________________
Если хотите - пишите в ЛС или создайте новую тему. Здесь это уже могут расценить как Off-Top.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 20:31:09
СКАЗОЧНИК
Тему другую создам позже, если возникнут вопросы по клавиатуре с дисплеем. )))
Как только переделаю программу на чтение флага занятости дисплея, выложу сюда результаты. Не нарьше, чем завтра...
Благодарю за помощь.
Уверен, что я на грани победы уже.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 20:38:54
WiseLord
Кстати, каков размер получившегося бинарника (ну, или hex-а)? Ассемблер ведь.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 20:42:45
СКАЗОЧНИК
ну сейчас уже большеватый стал. Все зависит от того, сколько макросов в основной программе используется, т.е. чем больше букв выводим, тем больше код. И еще я не очень оптимально пишу ибо дилетант.
А так на то сообщение, что на фотографии, компилируется в 370 Байт (4,5 %) памяти флеша у АТМеги8...
З.Ы. еще можно учесть, что теперь используется управление чтением/записью (правда не везде еще прописано). И подключать дисплей можно абсолютно к любым пинам любых портов контроллера.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 21:57:02
levaclaus
подскажите алгоритм записи своих символов в дисплей
выставляем адрес ячейки №0
01000000
RS=1
передаем код символа
теперь по адресу 0х00 будет наш символ.
как-то так?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 22:06:03
СКАЗОЧНИК
вы забыли еще после выставления в порт номера символа идет строб, а потом задержка (на проглатывание команды). Могу код выложить.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 22:14:27
levaclaus
давайте, може поможет
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 22:19:22
СКАЗОЧНИК
Вот там все. )))
Основной файл, где происходит уже использование макросов и вывод букв - LCD.asm
Файл с макросами на вывод букв и смену знакоместа в двух строках, инициализацией дисплея, задержками, стробами - LCD4_macro.inc
Файл с подпрограммами вывода данных, конфигурацией портов - LCD4.asm
Только предупреждаю, эта библиотечка не доделанная еще. Сейчас добавляю в нее чтение флага занятости. Но она работает, правда у меня с толкача..
Кажется я понял о чем вы просили...
Как вывести свой символ, а не тот что уже прошит в памяти дисплея? Если про это, тогды извиняйте, еще не реализовывал, мне пока не нужны были. А вообще, где-то несколько страниц назад про это было очень подробно расписано. )))))

Там посмотрите, тоже доходчиво написано:
http://easyelectronics.ru/avr-uchebnyj- ... 44780.html
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 22:37:29
WiseLord
Да, чтобы нарисовать один из семи своих символов - нужно подать команду с адресами
для 0-го - 0x01000000,
для 1-го - 0x01001000,
...
для 7-го - 0x01111000,
а потом 8 байт данных, рисующих этот символ.
Если нужно изменить что-то в символе, необязательно перерисовывать его весь. Можно сразу стать командой на нужную строку нужного символа, и перерисовать данными только её.
Символ будет потом доступен под номером, соотвественно, от 0 до 7.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 09, 2015 22:55:11
levaclaus
а все оказалось проще, косяк в инициализации. У меня к примеру 16 пользовательских символов доступно для записи, но нет символа "пробел"
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 00:04:49
WiseLord
2 levaclaus:
Не может быть 16 пользовательских символов доступно. Если посмотрите на мой предыдущий пост, то видно, что для адресации пользовательских символов доступно всего лишь 8 групп по 8 адресов (0x01aaabbb).
Если всё же утверждаете, что их там 16 - как вы создаёте, допустим, символ 08 (девятый по счёту)?
2 СКАЗОЧНИК:
К слову о качестве современных компиляторов. Моя
библиотека на C тоже позволяет независимую распиновку, а код, выводящий слово "test", занимает 358 байт. При этом есть функции позиционирования, вывода символа и строки.
Кстати, если хотите - скажите модель вашего контроллера и распиновку (pins.h в моих исходниках) дисплея - я могу собрать для Вас этот код, чисто для проверки работоспособности Вашего девайса. У меня всё работает - вот прямо сейчас.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 09:44:15
СКАЗОЧНИК
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
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 12:52:42
WiseLord
ОК.
Поскольку названия модели МК я так и не дождался, вот hex-ы под эту разводку для нескольких сразу.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 12:55:14
СКАЗОЧНИК
WiseLord писал(а):Поскольку названия модели МК я так и не дождался
Блин. Извините. Я писал название... Куда делось не понимаю...
А вообще АТМега8
Че то у меня в железе....

Не запустилась и ваша...

Точнее, также с толкача пытается показать слово test.... если отверткой прикасаться к выводам кварца..
Причем подозреваю, что это такой совсем китайский дисплей все таки... Т.к. если МК перевести от внутреннего тактирования на 8 МГц, то по идее дисплей должен запуститься. Кварц не влияет, т.к. частота внутренняя, да еще и ниже, значит задержки стали в два раза больше. Но дисплей молчит...
Вот название дисплея... На него нашел только похожие даташиты, но никакого полного соответвтия.
LCM1602K-NSW-BBW-R
Производитель RoHS
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 13:14:39
Alexeyslav
Ээээ... стоять... кварц запускается с толкача? Да это кварц коцнутый, менять его надо. Может он стартует на овертоне а не фундаментальной частоте. Подключив частотомер можно ничего и не увидеть - емкость щупа может вернуть всё на свои места. Сделайте прошивку простую мигалку, убедитесь что с расчетным периодом в 1000мС светодиод мигает ровно с той же частотой.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 13:22:40
СКАЗОЧНИК
Да ЕПРСТ...
Работает! Светодиод мигает. Одну секунду горит, одну нет. Могу видео заснять... Запустился без проблем сразу. Вот с таким тупым кодом:
Спойлер
Код: Выделить всё
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 мА.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 15:56:10
Alexeyslav
После подачи питания на индикатор и началом инициализации точно 20мс проходит? проверено осциллографом?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 16:28:56
СКАЗОЧНИК
осциллографом не смотрел, но по программе идет сначала инициализация, потом только мигание светодиодом. В Инициализации стояла одна секунда перед началом вместо 20 мс. Видно было по светодиоду, как долго он тупил, прежде чем начать мигать. Потом снова поставил задержку 20 мс. и светодиод стал почти сразу включаться...
Вот сейчас поймал этот импульс добавив команды строба по обе стороны задержки... Флешку не нашел, пришлось фотографировать...
Еще понял одну хреновину... Мне надо разобраться, когда должны быть стробы подняты или опущены между отправками команд....
Собственно, он и вопрос. )))
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 16:37:21
Albert_V
Для проверки портов - отключите Watchdog и индикатор и попробуйте "искусственно зацикливать" куски программы что бы можно было осциллографом увидеть ожидаемый сигнал.
Иногда бывает полезно с отдельного выхода контроллера "создать сигнал синхронизации" для осциллографа и смотреть сигналы в ждущем режиме.
Я не знаю, какие средства отладки у Вас есть в наличии, поэтому мне сложно что-то ещё посоветовать.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 16:39:41
СКАЗОЧНИК
Заказал еще логический анализатор... Но он пока придет...
Между посылками команд (или данных) где должны быть линии RS, E?