Какие проблемы с клавиатурой? Я бы сделал так (вы можете делать как хотите): 1. (условие) не надо постоянно выводить информацию на индикатор. Согласны? Если ДА - запрашивайте у подпрограммы вывода на индикатор вывод на индикатор (ACK + флаг "выполнение" с её стороны) 2. Если вывода на индикатор нет (флаг "выполнение" со стороны программы вывода на индикатор сброшен) - выставляете A0, E и R/W в "0" и опрашиваете клавиатуру (с использаванием DB4-DB7). Поясните, пожалуйста, что такое МЭИН? Если это MAIN - это всё то, что выполняется не по прерываниям. _____ Если хотите - пишите в ЛС или создайте новую тему. Здесь это уже могут расценить как Off-Top.
_________________ С Уважением, Альберт (Albert_V).
Тему другую создам позже, если возникнут вопросы по клавиатуре с дисплеем. ))) Как только переделаю программу на чтение флага занятости дисплея, выложу сюда результаты. Не нарьше, чем завтра... Благодарю за помощь. Уверен, что я на грани победы уже.
ну сейчас уже большеватый стал. Все зависит от того, сколько макросов в основной программе используется, т.е. чем больше букв выводим, тем больше код. И еще я не очень оптимально пишу ибо дилетант. А так на то сообщение, что на фотографии, компилируется в 370 Байт (4,5 %) памяти флеша у АТМеги8...
З.Ы. еще можно учесть, что теперь используется управление чтением/записью (правда не везде еще прописано). И подключать дисплей можно абсолютно к любым пинам любых портов контроллера.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Вот там все. ))) Основной файл, где происходит уже использование макросов и вывод букв - LCD.asm Файл с макросами на вывод букв и смену знакоместа в двух строках, инициализацией дисплея, задержками, стробами - LCD4_macro.inc Файл с подпрограммами вывода данных, конфигурацией портов - LCD4.asm
Только предупреждаю, эта библиотечка не доделанная еще. Сейчас добавляю в нее чтение флага занятости. Но она работает, правда у меня с толкача..
Кажется я понял о чем вы просили... Как вывести свой символ, а не тот что уже прошит в памяти дисплея? Если про это, тогды извиняйте, еще не реализовывал, мне пока не нужны были. А вообще, где-то несколько страниц назад про это было очень подробно расписано. ))))) Там посмотрите, тоже доходчиво написано: http://easyelectronics.ru/avr-uchebnyj-kurs-podklyuchenie-k-avr-lcd-displeya-hd44780.html
Да, чтобы нарисовать один из семи своих символов - нужно подать команду с адресами для 0-го - 0x01000000, для 1-го - 0x01001000, ... для 7-го - 0x01111000, а потом 8 байт данных, рисующих этот символ. Если нужно изменить что-то в символе, необязательно перерисовывать его весь. Можно сразу стать командой на нужную строку нужного символа, и перерисовать данными только её.
Символ будет потом доступен под номером, соотвественно, от 0 до 7.
2 levaclaus: Не может быть 16 пользовательских символов доступно. Если посмотрите на мой предыдущий пост, то видно, что для адресации пользовательских символов доступно всего лишь 8 групп по 8 адресов (0x01aaabbb). Если всё же утверждаете, что их там 16 - как вы создаёте, допустим, символ 08 (девятый по счёту)?
2 СКАЗОЧНИК: К слову о качестве современных компиляторов. Моя библиотека на C тоже позволяет независимую распиновку, а код, выводящий слово "test", занимает 358 байт. При этом есть функции позиционирования, вывода символа и строки. Кстати, если хотите - скажите модель вашего контроллера и распиновку (pins.h в моих исходниках) дисплея - я могу собрать для Вас этот код, чисто для проверки работоспособности Вашего девайса. У меня всё работает - вот прямо сейчас.
Блин. Извините. Я писал название... Куда делось не понимаю... А вообще АТМега8
Че то у меня в железе.... Не запустилась и ваша... Точнее, также с толкача пытается показать слово test.... если отверткой прикасаться к выводам кварца..
Причем подозреваю, что это такой совсем китайский дисплей все таки... Т.к. если МК перевести от внутреннего тактирования на 8 МГц, то по идее дисплей должен запуститься. Кварц не влияет, т.к. частота внутренняя, да еще и ниже, значит задержки стали в два раза больше. Но дисплей молчит...
Вот название дисплея... На него нашел только похожие даташиты, но никакого полного соответвтия. LCM1602K-NSW-BBW-R
Ээээ... стоять... кварц запускается с толкача? Да это кварц коцнутый, менять его надо. Может он стартует на овертоне а не фундаментальной частоте. Подключив частотомер можно ничего и не увидеть - емкость щупа может вернуть всё на свои места. Сделайте прошивку простую мигалку, убедитесь что с расчетным периодом в 1000мС светодиод мигает ровно с той же частотой.
Может я еще где туплю? Может порты как-то не так настраиваю? ну это же не 16 и старше Меги, где всяки ДЖИТАГи. Замерил то при мигающем светодиоде (разобрался) показывает 20 мА.
осциллографом не смотрел, но по программе идет сначала инициализация, потом только мигание светодиодом. В Инициализации стояла одна секунда перед началом вместо 20 мс. Видно было по светодиоду, как долго он тупил, прежде чем начать мигать. Потом снова поставил задержку 20 мс. и светодиод стал почти сразу включаться...
Вот сейчас поймал этот импульс добавив команды строба по обе стороны задержки... Флешку не нашел, пришлось фотографировать...
Еще понял одну хреновину... Мне надо разобраться, когда должны быть стробы подняты или опущены между отправками команд.... Собственно, он и вопрос. )))
_________________ Станислав
Последний раз редактировалось СКАЗОЧНИК Сб янв 10, 2015 16:37:26, всего редактировалось 1 раз.
Для проверки портов - отключите Watchdog и индикатор и попробуйте "искусственно зацикливать" куски программы что бы можно было осциллографом увидеть ожидаемый сигнал. Иногда бывает полезно с отдельного выхода контроллера "создать сигнал синхронизации" для осциллографа и смотреть сигналы в ждущем режиме. Я не знаю, какие средства отладки у Вас есть в наличии, поэтому мне сложно что-то ещё посоветовать.
_________________ С Уважением, Альберт (Albert_V).
Сейчас этот форум просматривают: kotneko и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения