для справки инициализация МЭЛТовского ЖК чуть отличается от WINSTAR, по крайней мере у меня робило (W) не стабильно пока под datashet-овскую не подогнал.
_________________ Настоящий кот всегда либо голоден,
либо невыспался ...
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Прочитал эту статью попробовал подключить индикатор к микрокотроллеру правда подключал немного другим образом в статье он подключен так
A0,R/W,E,DB7,DB6,DB5,DB4
при таком подключении все работает на ура никаких как говориться проблем нет но после того как немного меняю расположение сигналов для того что бы удобно было панельку ставить на такое
как в статье написано немного изменяю процесс инициализации самого дисплея по принципу Формат посылки: 0b00000000=0bx,A0(RS),R/W,E,DB7,DB6,DB5,DB4
на такой - 2.txt
то на индикаторе только видно первую строчку еле еле и видно что она вся из квадратиков. Что я мог прописать не так проверил уже несколько раз дожно быть так:(( но вот что то видно не учел т.к с микроконтроллерами и индикатором только начинаю работать.
Записи символов и выборе области даннных мы переставляем тетрады регистра swap-помоему короче на BD4-BD7 индикатора должны приходить Px0-Px3 ноги порта соответсвенно иначе тебе нада сдвигать перед выводом в порт полубайт. В твоёт случае влево на 2 разряда т.е. умножить на 4. Въедь просто в работу индикатора и программы по лучше и ты поймёшь в чём ошибка сам.
_________________ Настоящий кот всегда либо голоден,
либо невыспался ...
Инициализация заключается в последовательности определённых байтов для того что бы контролллер индикатора принял байт нужен строб.-сигнал на выводе Е. 1 delay 0. Так вот представь теперь что байт это 8-мь разрядов а у тебя подключение по 4-х битной шине. При коды инициализации расчитаны так что значащами являются тока младший полубайт. Т.е. при инициализации тебе надо вывести определённый полубайт на на копыта которые подключены к BD4-BD0 индикатора. И дать строб выводом который питает "Е". При Выборе области WriteDDR ак у меня наз-ся . Ситуация уже несколько другая здесь мы уже перевели окончательно в 4-х битный режим и формат посыла такой: A0-"1"-Старший полубайт A0-0- A0-1-строб - младший полубайт A0-0.При записи символа при записи символа всё также только А0 не изменяется в WH индикаторах он кстати RS наз-ся. Ну теперь главное как это всё у тебя програмно организуется . При инициализации просто записывам в PORTx байт причем младший полубайт оказавается на DB4-DB7 при первом тобой указанном подключении ну и стробируем. тепереча представь если ты просто поменял копыта. У тебя байт выводится в DB4 DB5 Е А0. При выборе памяти и выводе символа мы переставляем тетрады swap окрляем старший посылаем. Затем этотже байт не "пререворачиаем" а просто округляем "верхушку" и посылаем. Ну ты понял что получается при твоём втором подрлючении просто не туды выводится инфа.
_________________ Настоящий кот всегда либо голоден,
либо невыспался ...
Ага вот теперь понятно, только скажи вот что какой командой переставляются тетрады swap в обучалке на сэтом сайте что то не видел упоминания такого.
Я так понимаю что необходимо использовать команду логический сдвиг влево как ты говорил немного выше и втыкать ее в подпрограммы INIT_LCD16S2D: Init_next0: ?
Ага совершенно верно для перестановки тетрад используется команда
SWAP аргумент РОН сам понимаешь. Можно просто разделить число на 16 или сдвинуть на 4 разряда вправо тогда не нада округлять старший полубайт. Сдвигать тебе придётся не тока в инициализации . Также в функции выбора адреса и непосредственно вывода символа.
А вообче проще печатку переделать наверно чем так извращаться тем более в асме. На крайняк проводками перемычки кинуть.
_________________ Настоящий кот всегда либо голоден,
либо невыспался ...
Почему используется 2а nop'а? ведь при f=10MHz T=1/f=10^-7s=100ns
Ведь 100ns>40ns, получается можно исключить эти 2а nop'а?
Но почему-то если так считать, то не прокатывает общение с LCD не в данном месте, а вообще с остальными командами... и в коде ведь не спроста везде nop'ов больше чем по моему рассчету?
Боясь перегреть дорожки я решил использовать флюс. Припаялось идеально. Но не перестарайтесь. Флюс очищает площадки, растворяя медь и если его вовремя не убрать, то может растворить до конца.
Я сошёл с ума или просто валерьянка несвежая? Мяусеньки.
С валерьянкой все в порядке. Существуют активные флюсы, медь они, конечно, не сильно растворяют, но бед, если не отмыть, натворить могут.
По этому поводу уже было обсуждение.
_________________ Оптимизм х (Опыт + Знания) = const
Всем привет!
Извините за вторжение но не хотелось засорять форум создавая похожую тему! Пользуясь случаем задаю свой вопрос:
Скажите пожалуйста стробирующий сигнал должен быть постоянным или прерываться? и если он должен прерываться, то в какое время и для чего?
И Еще не могли бы Вы рассказать мне весь процесс (на какие выводы, в какой момент времени надо подавать какие уровни) чтобы вывести символ например "А"
Читал даташит на дисплей, но смотрю в книгу вижу фигу я с этим впервые сталкиваюсь , боюсь сам не разберусь!
Спасибо! Очень надеюсь на вашу помощь!
_________________ Век живи! - Век учись!
ICQ-15B87330h
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения