sonyps4.ru

Жк индикаторы мэлт. Жидкокристаллические индикаторы производства мэлт

Java Script. Как включить?

  1. скидка 50% на любые парикмахерские услуги (окрашивание, ламинировние, омбре, колорирование, лечение и пр.) до конца марта!! Успейте поспользоваться!) 6 мастеров! Опыт работы от 4 до 12 лет. 89303554465
  2. В браузере "Опера" 30.0. JavaScript включается Меню-Настройки-Сайты-JavaScript-разрешить.
  3. Как включить JavaScript (яваскрипт) ?
    Инструкции по включению JavaScript (яваскрипт) для основных браузеров.

    Internet Explorer
    Mozilla Firefox
    Opera
    Safari
    Google Chrome

    1. Чтобы включить JavaScript выберите в меню Safari пункт "Правка", затем "Настройки".
    2. На появившейся панели выберите вкладку "Безопасность".
    3. Установите галочку "Подключить JavaScript". Теперь закройте панель и перезагрузите браузер (закройте, а потом откройте его) .

    1. В браузере Google Chrome нет необходимости включать JavaScript, он включен.
    P.S. JavaScript может быть отключен в том случае, если браузер Google Chrome запущен из командной строки с параметром --disable-java. Но это опция для разработчиков.

    1. Чтобы включить JavaScript выберите в меню Opera пункт "Инструменты", затем "Настройки".
    2. На появившейся панели выберите вкладку "Дополнительно". В левой части окна выберите "Содержимое".
    3. Установите галочку "Включить JavaScript". Теперь нажмите кнопу "Ок" и перезагрузите браузер (закройте, а потом откройте его) .

    1. Чтобы включить JavaScript выберите в меню Mozilla Firefox пункт "Инструменты", затем "Настройки".
    2. На появившейся панели выберите вкладку "Содержимое".
    3. Установите галочку "Использовать JavaScript". Теперь нажмите кнопу "Ок" и перезагрузите браузер (закройте, а потом откройте его) .

    Internet Explorer

    1. Чтобы включить JavaScript выберите в меню Internet Explorer пункт "Сервис", затем "Свойства обозревателя".
    2. На появившейся панели выберите вкладку "Безопасность", выберите зону "Интернет",
    затем нажмите внизу кнопку "Другой".
    3. Вы увидите список пунктов. Найдите в нм пункт "Активные сценарии" и нажмите "Разрешить" (или "Включить"). Теперь нажмите кнопу "Ок" и перезагрузите браузер (закройте, а потом откройте его) .

    Нужно на клаве нажать кнопку F12 и выбрать включить JavaScript,

    Но Java Script тут не причм - это обыкновенный глюк.

    Ну если сильно надо скачай: http://www.java.com/ru/download/manual.jsp?locale=ruhost=www.java.com скачай и установи.
    Он будет по умолчанию работать везде.

    ЗЫ: я уже много раз писал об этом глюке. Проекты на майле взаимосвязаны и пока на ответы не заходишь - глюка по Java Script нету, а как зашл - он появляется, но не на вс, а выборочно, как ему нравится. Сам статус Ученика ущербный - много чего нельзя, вот почему и для ученика Java Script как бы отключн. Ну, достигните же, наконец, Знатока и не мучайтесь - вс включится.

  4. в настройках
  5. JavaScript-код включается в HTML-код страницы и исполняется интерпретатором, встроенным в браузер. JavaScript заключается в теги lt;scriptgt;lt;/scriptgt; с обязательным 1 атрибутом type="text/javascript", хотя в большинстве браузеров язык сценариев по умолчанию именно JavaScript. При этом атрибут language (language="JavaScript"), несмотря на его активное использование, относится к не рекомендуемым (deprecated), отсутствует в DTD, поэтому считается некорректным 2.

    Скрипт, выводящий модальное окно с классической надписью Hello, World! внутри браузера:
    lt;scriptgt;
    alert(Hello, World!);
    lt;/scriptgt;

    Следуя концепции интеграции JavaScript в существующие системы, браузеры поддерживают включение скрипта, например, в значение атрибута события:

    В приведнном примере при нажатии на ссылку функция confirm(Вы уверены?); вызывает модальное окно с надписью Вы уверены? , а return false; блокирует переход по ссылке. Разумеется, этот код будет работать только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке произойдет без предупреждения.

    Использование кода JavaScript в контексте разметки страницы в рамках ненавязчивого JavaScript расценивается как плохая практика. Аналогом (при условии снабжения ссылки идентификатором alertLink)

    приведнного примера может выступать, например, следующий фрагмент JavaScript:
    window.onload = function()
    {
    var linkWithAlert = document.getElementById("alertLink");
    linkWithAlert.onclick = function()
    {
    return confirm(Вы уверены?);
    };
    };

    Есть и третья возможность подключения JavaScript написать скрипт в отдельном файле, а потом подключить его с помощью конструкции
    lt;scriptgt;lt;/scriptgt;

  6. Заходишь в Инструменты, затем Настройки, и выбираешь использовать Джава скрипт, т. е ставишь галочку напротив.

Safari считается самым быстрым браузером на iOS. Особенно эффективно интернет-обозреватель Apple работает на iPhone 6s и iPhone SE – самых производительных смартфонах на рынке. В тестах на быстродействие в реальных задачах, включая веб-серфинг, ни один другой гаджет не сравнится с флагманами Apple. Устройства безупречно работают с Safari, браузер функционирует без заметных лагов и замедлений. К сожалению, все это относится только к самым новым устройствам Apple, а для более ранних моделей характерно замедление быстродействия Safari.

Есть несколько способов, которые помогут вам вернуть производительность фирменного браузера Apple.

1. Очистить историю Safari и данные веб-сайтов

В процессе веб-серфинга Safari оставляет в памяти временные файлы. И вот настает момент «генеральной уборки», когда не мешало бы почистить данные. Сделать это очень просто. Нужно зайти в меню Настройки –> Safari и кликнуть кнопку «Очистить историю и данные сайтов». ОС предупредит, что при этом будет очищена история, файлы cookie и другие данные просмотра.


2. Отключить фоновое обновление контента

Приложения в iOS умеют подгружать информацию в фоновом режиме. Функция очень полезная, но она дополнительно нагружает интернет-канал и замедляет загрузку веб-страниц. Проследуйте в меню Настройки –> Основные –> Обновление контента и отключите использование приложений в фоновом режиме. Функцию можно отключить полностью или ограничить ее использование для некоторых приложений.


3. Закрыть все вкладки Safari

После каждого сеанса работы с Safari в программе остается открытыми большое количество вкладок. По мере использования обозревателя их число растет все больше, из-за чего Safari начинает притормаживать. Для того, чтобы закрыть все открытые табы, запустите Safari и нажмите на кнопку переключения вкладок. После этого выберите команду «Закрыть вкладки».


4. Очистить офлайн-список

Функция для отложенного чтения Safari расходует свободную память и влияет на работу браузера. При частом ее использовании объем кэша очень быстро вырастает до нескольких гигабайт. Чтобы почистить данные, откройте Настройки > Основные > Статистики > Хранилище > Safari, нажмите кнопку Изменить и удалите офлайн-список. Очистка кэша не повлечет за собой удаление объектов из списка для чтения.


5. Сбросить сетевые настройки

Если веб-серфинг нестабилен, выполните процедуру сброса сетевых настроек из раздела Сброс в основном меню iOS. Для этого перейдите в Настройки –> Основные –> Сброс –> Сбросить настройки сети. Таким образом вы «обнулите» все настройки сети, включая сведения о подключенных устройствах Bluetooth, пароли Wi-Fi, а также параметры VPN и APN.


6. Настроить быстрые DNS-серверы Google

Если вы обнаружили проблемы с быстродействием интернет-подключения или хотите увеличить скорость веб-серфинга, существует простой способ. Повысить скорость загрузки страниц можно с помощью быстрых DNS-серверов. Как правило на компьютерных устройствах с подключением к Интернету используется DNS-сервер, который предоставляет провайдер. Но если возникла необходимость увеличить скорость загрузки веб-страниц, следует настроить специальные DNS-серверы.


Шаг 1 : Откройте настройки на своем iPhone и iPad с iOS 8.

Шаг 2 : Перейдите в раздел Wi-Fi.

Шаг 3 : Сделайте тап на кнопке с буквой «i» рядом с названием беспроводной сети, для которой хотите задать кастомные серверы.

Шаг 4 : Здесь в поле DNS нужно ввести DNS-серверы Google: 8.8.8.8, 8.8.4.4.

7. Отключить JavaScript

Ускорить открытие страниц в Safari можно отключением движка JavaScript. Для этого следует открыть Настройки и перейти в раздел Safari, затем найти пункт Дополнения и перевести выключатель JavaScript в положение «Выкл.». После этого нужно выгрузить Safari из панели многозадачности. Стоит быть готовым к тому, чтобы включить JavaScript повторно, в случае если определенные веб-сайты не будут правильно загружаться.


8. Отключить проверку наличия Apple Pay

Причиной медленной работы Safari может быть новая функция в iOS 10. В ОС последнего поколения покупки в браузере стали удобнее, благодаря поддержке Apple Pay. При оформлении заказа в онлайн-магазине достаточно нажать соответствующую кнопку и завершить заказ с помощью сканера отпечатков Touch ID. На данный момент в странах СНГ платежная система «яблочной» компании не работает, поэтому опцию «Проверка наличия Apple Pay», заставляющую Safari сканировать каждую веб-страницу на предмет поддержки Apple Pay, следует отключить. Это положительно скажется на производительности браузера. Откройте раздел Настройки -> Safari и переведите ползунок «Проверка наличия Apple Pay» в неактивное состояние.

4-х битный режим в буквенно-цифровых ЖК индикаторах.

    1. В 4-х битном режиме включения ЖК индикаторов недопустимо изменение состояний сигналов R/W и A0 в течении всего цикла передачи байта, в том числе и при неактивном сигнале E между двумя передачами полубайтов. По любому изменению сигналов R/W и A0 внутренний счётчик полубайтов в ЖК индикаторе сбрасывается в состояние приёма старшего полубайта. Это является отличием наших ЖК индикаторов от импортных аналогов и направлено на повышение надёжности работы ЖК индикатора.

    2. Также, до сих пор у нас в документации не исправлена процедура инициализации 4-х битного режима включения ЖК индикатора. Должно быть так:
    в первых трёх командах подаётся код 0x3 на шину данных и один (вместо нормально двух) импульс E;
    обязательно делается задержка между командами не менее 40мкс без опроса состояния ЖК индикатора;
    четвёртая команда подаётся также одним импульсом E без опроса состояния ЖК индикатора перед командой, но уже с кодом 0x2 на шине данных;
    пятую и все последующие команды можно подавать как обычно, с ожиданием готовности индикатора (если необходимо) или формированием задержки между командами не менее 40мкс.

    3. Все циклы обращения к индикатору должны быть парными (обязательно передавать и старший и младший полубайты). Единственное исключение - первые четыре команды в процедуре инициализации.
    Или перед передачей старшего полубайта использовать возможность сброса внутреннего счётчика полубайтов в ЖК индикаторе из пункта 1. В последнем случае теряется совместимость с импортными ЖК индикаторами.

    4. Младшие 4 бита шины данных можно оставлять неподключенными - в ЖК индикаторе вся шина данных подтянута к Ucc через высокоомные резисторы.

    5. И не надо забывать выбирать правильный тип интерфейса (4 или 8 бит) при смене страницы кодировки знакогенератора.

Сколько реально памяти в ЖК индикаторах?

    Во всех буквенно-цифровых ЖК индикаторах встроено 80 байт внутренней памяти, по адресам 0x00..0x27 и 0x40..0x67. Часть её отображается на индикаторе, но вся память доступна как по записи, так и по чтению. Память сохраняет свое содержимое пока включено питание ЖК индикатора, независимо от того, включен или выключен ЖК индикатор.

    В графических ЖК индикаторах встроенной памяти:
    MT-6116 = 80 байт/строку * 4 строки = 320 байт (отображается 61 байт/строку * 2 строки);
    MT-12232 = 80 байт/строку * 4 строки * 2 кристалла = 640 байт (отображается 61 байт/строку * 4 строки * 2 половины ЖКИ);
    MT-12864 = 64 байта/строку * 8 строк * 2 кристалла = 1024 байт (отображается 64 байта/строку * 8 строк * 2 половины ЖКИ).
    Размер памяти от буквенного суффикса ЖК индикатора не зависит.

    В сегментных индикаторах с параллельным интерфейсом (MT-10T7, MT-10T8, MT-10T9) чтение встроенной памяти невозможно, размер памяти 10 байт + триггер блокировки.

Работают ли ЖК индикаторы с высокоскоростными контроллёрами? Какова максимальная скорость заполнения?

    Да, работают. Но надо не забывать про времена предустановки и удержания сигналов.

    Максимальная скорость записи в индикаторы:
    MT-10S1, MT-16S2, MT-20S2, MT-24S2, MT-20S4 - 25-30 тысяч символов/сек;
    MT-6116, MT-12232 - 0.5-1 млн. байт/сек (4-8 млн. точек/сек);
    MT-12864 - 100-130 тысяч байт/сек (1 млн. точек/сек).
    Большие (из указанных) скорости достигаются при опросе готовности индикаторов.

Как правильно включать подсветку ЖК индикатора?

    Все ЖК индикаторы рассчитаны на питание подсветки от источника питания самого индикатора. Т.е. плюс подсветки (вывод A) на вывод Ucc, минус подсветки (вывод K)- на вывод GND. Это верно как для 5-ти вольтовых индикаторов, так и для 3-х вольтовых.

Можно ли подключать 5-ти вольтовый ЖК индикатор к 3-х вольтовому контроллёру?

    В принципе, можно. Но надо учитывать разность в уровнях логических сигналов: для некоторых индикаторов уровень логической 1 может оказаться выше, чем способен сформировать управляющий контроллёр. Например, это касается вывода RES индикатора MT-12864, уровень лог.1 которого может быть не менее 3.75В (0.7*5.5В), хотя остальные выводы имеют уровень лог.1 всего 2.4В.

    Также, проблемы будут при использовании операции чтения из ЖК индикатора. В цикле чтения ЖК индикатор честно выдаст на выводы напряжение лог.1 вплоть до 5В и ток потечёт через защитные диоды в управляющем контроллёре, что может повлечь выход из строя как ЖК индикатора, так и управляющего контроллёра. Необходимо предусматривать схемы согласования уровней, ограничения тока по выводам и тому подобные меры.

Как правильно подавать команды в буквенно-цифровые и графические ЖК индикаторы?

    Есть несколько вариантов, выберите наиболее подходящий Вам или придумайте новый, не противоречащий документации на ЖК индикатор.
    1. Перед (или после) каждого цикла обращения выдерживать паузу не менее указанной в документации. Это самый простой, но и самый неоптимальный по затратам времени управляющего контроллёра способ.
    2. После каждого цикла обращений к ЖК индикатору опрашивать бит занятости и ждать пока индикатор не выполнит посланную команду. Это способ лучше первого, но всё ещё весьма неоптимальный.
    3. Ждать готовности ЖК индикатора перед каждым циклом обращения. Это, вероятно, самый удобный вариант управления ЖК индикатором из основной программы (не из прерываний). Хотя он и не обеспечивает минимальных затрат времени управляющим контроллёром на работу с ЖК индикатором, но освобождает максимум времени для других действий, кроме работы с индикатором.
    4. Можно так написать программу, выдающую команды в ЖК индикатор, чтобы между любыми двумя последовательными циклами обращений проходило не менее указанного в документации времени. Этот способ оптимален по затратам времени управляющего контроллёра (не делается ничего лишнего) и скорости вывода информации в ЖК индикатор, но весьма сложен в написании и отладке.
    5. Если циклы обращений к ЖК индикатору формируются в прерывании, то можно настроить частоту прерываний так, чтобы между вызовами проходило не менее указанного в документации на индикатор времени паузы. Если в системе допустимо иметь такие низкую частоту прерываний и скорость вывода информации в ЖК индикатор, то этот способ, наверно, лучший.
    6. Если нужна высокая скорость прерываний или вывода информации на ЖК индикатор, можно в прерывании опросить готовность индикатора и, если не готов, выйти из прерывания не формируя цикла обращения к индикатору.

    Разумеется, это не все возможные варианты, но их вполне достаточно в большинстве случаев.

Как правильно проверить готовность ЖК индикатора к обмену данными?

    В наиболее общем случае надо выполнить цикл чтения информации из ЖК индикатора, установив управляющие сигналы для получения байта статуса и проверить бит BUSY в считанном байте. Для буквенно-цифровых ЖК индикаторов с 4-х битном режимом включения надо не забывать получать оба полубайта, независимо готов или нет индикатор. Для управляющих контроллёров, в которых возможно выбирать режим работы шины данных (на ввод или на вывод) надо также не забывать переключать шину данных на ввод до формирования импульса E (строба чтения).

    Для буквенно-цифровых и графических ЖК индикаторов возможен и более быстрый способ проверки флага BUSY: начать цикл чтения, но проверять бит BUSY сразу на шине данных, не сбрасывая строб E, только лишь выдержав время задержки выдачи данных индикатором. При этом можно сохранять строб E активным до обнаружения сброса флага BUSY и только потом завершить цикл чтения байта статуса. Но завершить правильно необходимо в любом случае - например, для буквенно-цифровых индикаторов с 4-х битным режимом включения обязательно надо получить и младший полубайт байта статуса, хотя бит BUSY находится в старшем полубайте и, казалось бы, читать ещё и младший лишнее. Нет, не лишнее!

Могут ли ЖК индикаторы работать при отрицательных температурах?

    Мы выпускаем несколько разновидностей ЖК индикаторов, многие из которых предназначены для эксплуатации, в том числе, и при отрицательных температурах. Серийно производятся ЖК индикаторы с рабочей температурой до -30°C (температура хранения при этом до -40°C). Максимально допустимая рабочая температура от +50°C до +70°C (температура хранения от +60°C до +80°C). Но при применении ЖК индикаторов с расширенным температурным диапазоном надо понимать, что они, во-первых, дороже; во-вторых, при отрицательной температуре существенно возрастает время смены информации на стекле ЖК индикатора (от 0.2с при +20°C до 7с при -20°C и 15с при -30°C). Это время от записи новой информации в индикатор до окончания (на глаз) переходных процессов в стекле ЖК индикатора. Если информация в ОЗУ индикатора при записи не изменяется, то и никаких переходных процессов не будет. Т.е. время на переходные процессы нужно только при смене выводимой информации. К времени записи информации во внутреннее ОЗУ индикатора это время отношения не имеет.
    Если выводить меняющуюся информацию в индикатор чаще, чем указанное время, то ничего не испортится, но на индикаторе видно будет нечто среднее между старой и новой информацией.

Можно ли сменить тип интерфейса управления ЖК индикатором?

    Да, для ЖК индикаторов MT-6116, MT-6116B, MT-12232B можно сменить тип интерфейса управления с 68000 на 8080. При этом сигнал R/W станет сигналом /WR, а сигнал E - сигналом /RD. Активным может быть всегда только один из них. Выбор типа интерфейса 68000 осуществляется подачей на вывод RES перепада с лог.1 на лог.0 и оставлением лог.0 на всё время работы ЖК индикатора.
    Подробнее смотрите документацию на кристалл КБ145ВГ4 (Ангстрем) или SED1520DOA. Или связывайтесь с нами.

    Для ЖК индикаторов MT-12232A и MT-12232D смена типа интерфейса также физически возможна, но из-за наличия в схеме индикатора дешифратора обращений к двум кристаллам приведёт к неработоспособности ЖК индикатора.

Особенности ЖК индикаторов MT-6116, MT-12232.

    Все ЖК индикаторы MT-6116 и MT-12232 основаны на одном и том же кристалле и имеют некоторые особенности, которые надо учитывать при проектировании изделий на данных индикаторах:
    1. Хотя в индикаторе присутствует цепь начального сброса по включению питания, часто её оказывается недостаточно и для правильной работы индикатора надо подавать сигнал сброса снаружи. Эти индикаторы сбрасываются любым перепадом на выводе RES (и 0->1, и 1->0), причём этот же вывод выбирает тип интерфейса управления. Поэтому желательно подавать внешний сигнал сброса ЖКИ на вывод RES - удерживая RES=лог.0 не менее 10 мкс после подачи напряжения питания на ЖКИ и потом подавая перепад лог.0 -> лог.1 с длительностью фронта не более 10 мкс. До момента подачи перепада 0->1 ЖК индикатор может выдавать на шину данных случайную информацию (зависит от управляющих сигналов R/W, A0, E) и надо обеспечить режим ввода (или состояние Z) по шине данных в управляющем контроллёре на это время.
    Если же импульс сброса будет формироваться и в процессе работы, не только при включении питания, то на всё время лог.0 на выводе RES также надо переводить шину данных управляющего контроллёра в режим ввода (или состояние Z) для исключения конфликта на шине.
    2. Для ускорения обновления индикатора предусмотрен специальный режим чтения-модификация-запись, при котором адрес столбца увеличивается только после записи (флаг RMW). После установки этого режима можно прочитать байт из индикатора, при необходимости изменить его и записать обратно в индикатор, не добавляя команд установки адреса столбца. Без этого режима последовательность была бы следующей: установить адрес столбца, прочитать данные, снова установить тот же адрес столбца, записать новые данные. Здесь на целых две операции больше (если выполнять модификацию нескольких последовательных байтов).
    3. С другой стороны, с включенным режимом RMW ЖК индикатор не обрабатывает многие команды (например, точно не работает команда установки страницы). Поэтому надо не забывать сбрасывать этот режим, когда он не нужен.
    И в процедуре инициализации в нашей документации этот режим не сбрасывается и может оказаться, что после включения питания режим окажется установленным. В этом случае ЖК индикатор будет работать неправильно. Лучше добавить в процедуру инициализации команду сброса режима RMW.
    4. При чтении информации из внутренней памяти индикатора нужно делать "пустой" цикл чтения - после команд установки адреса столбца первый цикл чтения не выдаст полезной информации, реальные данные будут выданы только начиная со второго цикла чтения.

      Индикаторы обеспечивают указанные в документации выходные напряжения при следующих максимальных выходных токах:
      1. Все буквенно-цифровые (MT-xxSx): Ioh=0.4мА, Iol=1.2мА.
      2. MT-6116x: Ioh=0.4мА, Iol=0.4мА.
      3. MT-12232x: Ioh=0.4мА, Iol=0.4мА.
      4. MT-12864x: Ioh=0.2мА, Iol=1.6мА.

    ЖК индикатор ничего не показывает, что делать?

      Чаще всего, информация на ЖК индикаторе не появляется по причине неверно выставленной контрастности - реально индикатор работает, изображение есть, но его не видно. Проверить это можно чтением записанной ранее информации из ЖК индикатора (неприменимо для сегментных индикаторов).

      Если есть подозрение на неисправность ЖК индикатора, рекомендуем:
      * проверить наличие питания ЖКИ,
      * уровни управляющих сигналов,
      * настройку контрастности,
      * отсутствие помех на управляющих выводах и питании ЖКИ,
      * форму управляющих сигналов (особенно при длинном кабеле подключения индикатора),
      * соблюдение временных параметров при управлении индикатором,
      * правильность процедуры начальной инициализации индикатора,
      * включить другой аналогичный ЖК индикатор,
      * обратиться к нам.

    А нет ли примера программы для вывода на ЖК индикатор?

      Есть, вот архив с примерами программ для вывода на наши ЖК индикаторы. Программы написаны на подобии языка C и предназначены для пояснения алгоритмов работы с ЖКИ. Они подробно прокомментированы, но компилиться не будут - нужно доопределить функцию задержки времени и имена сигналов управления ЖКИ.

    Не нашли ответа на свой вопрос? Свяжитесь с нами.

      На этом сайте работает форум , где мы отвечаем на любые вопросы по нашим ЖКИ. Рекомендуем, прежде чем писать письмо с вопросами, внимательно с ним ознакомиться.

      По вопросам программирования наших ЖКИ: Петухов Дмитрий Владимирович "[email protected]".
      По техническим вопросам: Козлов Сергей Владимирович "[email protected]".
      По вопросам закупок: Отдел продаж "[email protected]".

Незавершенный вариант, который позже будет дополнен практикой.

Выбор практического примера на SED1520 выпал не случайно. Во-первых об этом просил один из участников форума, а во-вторых графические дисплеи на основе этого драйвера и его клонов имеют самую низкую стоимость и вполне доступны для приобретения. Конечно, существуют еще дисплеи от сотовых телефонов, которые можно купить еще дешевле, а иногда и просто выдернуть из старого ненужного телефона. Но в этом случае отлаживать устройство придется только в железе. А пайка шлейфов к дисплеям от сотовых, в которых обычно используются миниатюрные нестандартные разъемы, у начинающих может вызвать затруднения. Исключение составляет дисплей Nokia 3310 , для которого модель Протеуса существует в природе, но об этом мы поговорим позже. А пока рассмотрим модель драйвера SED1520 и как мы можем адаптировать ее под свои нужды. Все модели драйверов дисплеев находятся в библиотеке Optoelectronics\LCDControllers . Конкретно модель SED1520 и окно ее свойств показаны на рис 152. Даташит SED1520 доступен для скачивания при наличии подключения к Интернет и нажатии соответствующей кнопки.
Как видим, у модели имеются только выводы входов, а выходные сигналы колонок (SEG0…SEG60 ) и строк (COM0…COM15 ) уже жестко прописаны в программной модели Протеуса. Это и вызовает некоторое затруднение при моделировании МТ-12232А (МЭЛТ), но оно вполне преодолимо с некоторыми условностями. Для начала немного информации о выводах модели из даташита. Сразу же напомню, что SED1520 может работать в двух режимах: интерфейс с контроллером серии 68xxили интерфейс с контроллером серии 80xx. Нас интересует первый, поскольку он принят стандартом де-факто и для других микроконтроллеров (AVR, PIC). Для наглядности ниже синим цветом указано то, что относится к 68xx, а зеленым то, что относится к 80xx.
· DB – двунаправленная восьмиразрядная шина команд/данных.
· A0 – вход драйвера, определяющий что в данный момент передается по шине данных: A0=0 – команда, A0=1 – данные для вывода на индикатор.
· R/W(WR) – вход драйвера. Для 68xxопределяет чтение (R/W=1) из SED1520 или запись (R/W=0) в него. Для 80хх WR=0 при записи сигналы на шине данных стробируются положительным перепадом (передним фронтом) 0=>1 импульса на этом выводе.
· E(RD) – вход драйвера. Для 68xxопределяет тактирование (выбор) данного драйвера. (По E=1 производится запись/чтение в конкретный кристалл – это очень важный для нас сигнал.) Для 80хх RD=0 означает, что шина D0…D7SED1520 направлена на вывод данных.
· CS – вход драйвера. Обычно CS=0. Эффективен при использовании внешнего генератора тактовой частоты.
· RES – вход сброса драйвера. Перепад сигнала на этом входе производит сброс микросхемы драйвера и установку для нее определенного интерфейса. Если был RES=0 и произошел переход 0=>1, то происходит сброс и устанавливается интерфейс 68хх. Если был RES=1 и произошел переход 1=>0, то происходит сброс и устанавливается интерфейс 80хх. (Это тоже очень важный для нас сигнал.)
Теперь заглянем в свойства модели SED1520 , а конкретно в раскрывающийся список. С некоторыми параметрами оттуда мы уже знакомы, но в стандартном окне они не видны и мы сможем их увидеть только с установленной галочкой Edit all properties as text или в режиме Make Device на третьей вкладке. Итак, сначала о тех, что видны в раскрывающемся списке:
· Controller Colums (да-да, именно Colums , а не Columns – и у англичан бывают грамматические ошибки) CONTRWIDTH по умолчанию равно 61 – количество колонок (SEG ) в контроллере.
· Controller Lines CONTRHEIGHT по умолчанию равно 16 – количество строк (COM ) для модели контроллера.
· Controller Display X Offset BMPXOFF смещение картинки (на экране) по горизонтальной оси X. По умолчанию нулевое.
· Controller Display YOffset BMPXOFF смещение картинки (на экране) по вертикальной оси Y. По умолчанию нулевое.
· Segments Output Direction ADCMODE направление вывода из памяти драйвера на экран. По умолчанию 0 – прямое, слева направо. При установке в 1 картинка выводится в обратном направлении справа-налево. Это вполне реальный параметр реального контроллера из даташита. Как мы увидим позже, именно с ним будут «заморочки» в МЭЛТ-овских индикаторах.
Остальные параметры имеют свойство Hidden (скрытые) и видны только при установке флажка Edit all properties as text , но среди них есть важные для нас и я их тоже опишу. В первую очередь это уже знакомые нам WIDTH (высота) и HEIGHT (ширина) но теперь уже экрана дисплея в пикселях. По умолчанию они соответственно 16 и 61. Также знакомы нам параметры трассировки: TRACE , TRACE_CWR , TRACE_MWR и TRACE_MRD . Все они по умолчанию Warning Оnly – режим предупреждений. Свойство PRIMITIVE для данной модели имеет значение DIGITAL,SED1520 . Свойство MODDLL задано как LCDPIXEL.DLL . Надеюсь, эти свойства не нуждаются в особых комментариях. А вот со следующими двумя мы еще не встречались, поэтому коснусь их подробнее.
· CTRLID – идентификатор контроллера. По умолчанию равен 0x100 . Если в модели индикатора используются два или более контроллера, эти значения должны отличаться. Так у нас и будет в наших моделях – второму этот параметр мы присвоим как0x101 .
· RAMSIZE – объем внутренней памяти драйвера в байтах. По умолчанию указан как 320 – это вполне реальное значение и его мы трогать не будем.
Ну, вроде с описанием моделиSED1520 пока все, пора приступать к реализации моделей индикаторов на нем. О построении графики моделей дисплеев мы уже говорили выше, но каждая модель графического индикатора имеет еще в свойствах и собственный MDF-файл, в котором реализована схематика соединения контроллеров. Вот о ней и пойдет речь. Для начала возьмем и воспроизведем по извлеченному из DISPLAY.LML файлу MDFсхематику одной из существующих в ISISмоделей на базе SED1520 , например, того же EW12A03GLY . Извлеченный MDFи воспроизведенная по нему схема находятся во вложении в папке GLCD_recovery . Эта же схема представлена на рисунке 153.
Структуру модели индикатора EW12A03GLY можно условно разделить на две части: цифровую и аналоговую. Аналоговая часть имитирует нагрузки по выводам питания и подсветки и особенного интереса для нас не представляет, поскольку это в основном обычные резистивные нагрузки, за исключением диода, имитирующего светодиодную подсветку экрана и источника отрицательного напряжения, имитирующего встроенный в этот конкретный индикатор преобразователь напряжения. А вот на цифровой части остановимся отдельно. Мы видим, что в данном случае используются два контроллера SED1520 , у которых большинство выводов объединено, а раздельными являются только выводы выбора E1 для левого кристалла и E2 для правого. Для данного конкретного индикатора выводы R/W(WR) завешены на землю, поскольку не производится чтение из контроллеров, а выводы сброса RES наоборот соединены с питанием и, кроме того, им присвоен параметр INVERT=$RES$ для того, чтобы наш индикатор все время запускался в режиме интерфейса с МК серии 68хх.
Примечание. Напомню, что RES ограниченное с двух сторон знаком доллара означает имя вывода со знаком надчеркивания (инверсный). При таких записях надо быть предельно внимательными, особенно, если вывод имеет длинное имя и только часть из него с надчеркиванием. Например, если вы захотите проинвертировать вывод E у SED1520 , то необходимо писать его имя полностью со всеми скобками и т.п., т.е. INVERT=E($RD$) . Иначе это свойство работать не будет.
Выводы CS драйверов также завешены на землю, как и в большинстве реальных графических индикаторов на основе спаренных SED1520 .
Какие же еще изменения внесены в свойства контроллеров прописанные по умолчанию. Как я уже и предупреждал ранее, для правого контроллера изменен CTRLID=0х101 , чтобы кристаллы имели различные идентификаторы. Для обоих кристаллов количество строк CONTRHEIGHT=32 вместо 16. Надеюсь, понятно почему, ведь это индикатор 122х32. По той же причине для правого кристалла, работающего на правую часть экрана индикатора, установлено горизонтальное смещение картинки по оси Xна 61 пиксель - BMPXOFF=61 . Еще хотелось бы обратить ваше внимание, что для ряда параметров – ширина и высота экрана, а также параметры отладки конкретные значения заменены на имена параметров в угловых скобках. Если кто-то подзабыл, напомню, что таким образом обеспечена возможность задания значений этим параметрам с основного родительского листа или точнее, в данном случае, из свойств графической модели (Рис. 154).
Особенно хочу отметить, что не стоит пренебрегать заданием этим способом параметров трассировки (отладки) у сложных моделей, каковыми являются индикаторы. Если этого не сделать, то невозможно будет для уже скомпилированной модели включить режим отладки, а он очень важен для нас, в чем мы убедимся чуть ниже.
Ну вот, теперь надеюсь, всем стало ясно, почему программные VSM модели графических дисплеев прописаны как Shematic и имеют собственные MDF файлы. Я не стану больше останавливаться на зарубежных моделях LCD122х32 на основе SED1520 , поскольку в большинстве своем они построены почти одинаково с обязательным разнесением входов E для левого и правого кристаллов, т.е. у реального индикатора имеются входы E1 для тактирования левого кристалла и E2 для правого. Для примера на рисунке 155 диаграмма цикла записи из даташита EW12A03GLY , рассмотренного выше. Правда не знаю, зачем производитель этого индикатора приделал там и чтение, хотя и в даташите вывод R/W(WR) четко прорисован на землю.
Из диаграммы видно, что запись команды управления (при сигнале А0=0 ) или байта данных изображения (при сигнале А0=1 ) производится по положительному импульсу на входе E1 в левый кристалл и на входе E2 в правый. В других дисплеях возможно и чтение из кристаллов, но при этом учитывается логический уровень на входе R/W(WR) , который должен к моменту подачи тактового E при чтении быть в состоянии логической единицы, тогда будет верна нижняя часть диаграммы READ.
Ну а мы переходим к графическим индикаторам «местного пошива» и конкретно займемся дисплеями MT-12232 компании МЭЛТ. Эти дисплеи формата 122х32 точки на основе Ангстремовского клона КБ145ВГ4 , совместимого с SED1520, выпускаются с различными буквенными индексами, и уже тут скрывается первый «подводный камень». Дело в том, что индикатор MT-12232B среди остальных выделяется как белая ворона, поскольку выполнен по западным стандартам и полностью совместим по сигналам с большинством европейских и китайских дисплеев на базе SED1520 . Он также имеет два раздельных входа тактирования E1 и E2 для разных кристаллов. Временная диаграмма для этого дисплея приведена на рисунке 156. Как видим, все отличие от предыдущей диаграммы в наличии сигнала R/W(WR) , обеспечивающего чтение из кристаллов.
Фактически для моделирования этого дисплея достаточно использовать уже существующую модель AGM1232G . Все отличие состоит в 3-м выводе контрастности , который МЭЛТ не задействовал и обратной полярности выводов подсветки BL (19, 20). Поскольку ни то ни другое на процесс вывода данных на индикатор не участвует и реализовано только для имитации аналоговых свойств (нагрузки) эти выводы можно просто оставить «в воздухе». Ну а для тех, кому нужно соответствие «буква в букву» в папке MT12232B вложения находится графическая модель индикатора – поддиректория Model_with_Child . На дочернем листе Model.DSN находится переделанная под MT12232B подсхемаAGM1232G (Рис. 157). Скомпилированный с нее файл модели MT12232B.MDF и тестовый проект находятся в подпапкеTest_MT12232B .
Ну а мы далее на примереМТ12232А рассмотрим особенности остальных индикаторов этой серии. Здесь МЭЛТ решил ввернуть свою «изюминку», которая проявляется в особенностях программирования и управления этими дисплеями. Не знаю, насколько это оправдано технологически, но с точки зрения моделирования здесь все становится с ног на голову.
Первая особенность дисплеев с индексами A, С, D и т.д. в отсутствии раздельных выводов E для управления кристаллами. Вывод E в этих индикаторах всего один и используется для тактирования как левого, так и правого контроллера КБ145ВГ4 . Для обращения к конкретному кристаллу используется CS . Наличие лог. 1 на нем активирует обращение к левому драйверу, отвечающему за вывод информации в левую часть экрана. Лог. 0 на выводе CS означает работу с правым кристаллом, обслуживающим правую часть экрана.
Вторая особенность как раз и касается правого кристалла. Дело в том, что здесь МЭЛТ использовал еще и обратную последовательность подключения столбцов (колонок) драйвера к сегментам ЖКИ, т.е. выходу SEG00 правого кристалла соответствует 122-я колонка дисплея, а выходу SEG60 – 61-я колонка. Для нормального отображения картинки в правой части дисплея при начальной инициализации контроллеров необходимо для левого кристалла подать команду ADC=0 (прямой вывод) а для правого ADC=1 (обратный вывод) изображения. Эта особенность легко выполнима в реальной жизни, но при моделировании в Протеусе накладывает некоторые ограничения. Модель SED1520 может воспроизводить данные в обратном порядке по команде ADC=1 , но выходы SEG мы «перепаять» задом наперед, как в реальном дисплее МЭЛТ не можем – они просто отсутствуют и жестко прописаны в программной модели. Поэтому при моделировании придется в программе инициализации для обоих кристаллов использовать ADC=0 , а уже для реального «железного» дисплея перед прошивкой контроллера изменять это значение для одного из кристаллов в единицу. Как правило, инициализация проводится один раз при включении (запуске) устройства, поэтому очень больших проблем данный момент не вызывает. Главное – держать это на контроле и не забыть поменять значение при компиляции реальной прошивки.
Первая же особенность легко преодолима схемотехническим методом. Подсхема для компиляции MDF файла для МТ12232A примет вид как на рисунке 158.
Я специально оставил узел дешифрации сигналаE в первозданном виде, хотя можно было сделать и компактнее, убрав инвертор U4 и задав свойство INVERT для входов D0 элементов U3 и U5 . Вообще здесь уместны различные вариации по теме, но у меня заработало уже в таком виде, а большего и не надо. В папке вложения MT12232A ,как и длямодели с индексом B, расположены соответствующие Model_with_Child с дочерним листом, содержащим эту схему,и Test_MT12232А , в которой есть и готовый MT12232A.MDF .
Подводя итог этому материалу, хочу немного коснуться особенностей процедуры начальной инициализации и вывода информации на индикаторы МЭЛТ. В сети можно встретить различные варианты этой процедуры. В частности, в даташите на MT12232A производитель рекомендует следующую последовательность операций:
1. после подачи напряжения питания удерживать вывод RES в состоянии логического “0” еще не менее 10 мкс;
2. подать перепад на вывод RES c логического “0” в логическую “1”, длительность фронта не более 10 мкс;
3. ожидать сброса бита RESET в байте состояния или выждать не менее 2 мс;
4. подать команду снятия флага RMW (END);
5. подать команду включения обычного режима работы (Static Drive ON/OFF);
6. подать команду выбора мультиплекса (Duty Select);
7. подать команду включения дисплея (Display ON/OFF).
Первые три операции общие для обоих кристаллов дисплея и выполняются однократно. Они переводят дисплей в режим работы с МК 68xx. Остальные необходимо проделать для каждого кристалла в отдельности, причем в рекомендуемом производителем примере перед операцией 4 для каждого кристалла выдается еще и команда RESET (0xE2 ). Примеры программ от МЭЛТ находятся во вложении вместе с даташитами. Пункты алгоритма начальной установки, начиная с 4 можно переписать боле подробно следующим образом:
4. подать команду (A0=0, RD/WR=0 ) сброса RESET (DB7…DB0=0xE2 ) в левый кристалл (CS=0 ), стробируем (1-0-1) сигналом E ,
подать команду (A0=0, RD/WR=0 ) сброса RESET (DB7…DB0=0xE2 ) в правый кристалл (CS=1 ), стробируем E .
5. подать команду (A0=0, RD/WR=0 ) сбросаRMW(DB7…DB0=0xEE ) в левый кристалл (CS=0 ), стробируем E ,
подать команду (A0=0, RD/WR=0 ) сброса RMW(DB7…DB0=0xEE ) в правый кристалл (CS=1 ), стробируем E .
6. подать команду (A0=0, RD/WR=0 ) нормальный режим (DB7…DB0=0xA4 ) в левый кристалл (CS=0 ), стробируем E ,
подать команду (A0=0, RD/WR=0 ) нормальный режим (DB7…DB0=0xA4 ) в правый кристалл (CS=1 ), стробируем E .
7. подать команду (A0=0, RD/WR=0 ) выбора мультиплекса 1/32 (DB7…DB0=0xA9 ) в левый кристалл (CS=0 ), стробируем E ,
подать команду (A0=0, RD/WR=0 ) выбора мультиплекса 1/32 (DB7…DB0=0xA9 ) в правый кристалл (CS=1 ), стробируем E .
8. подать команду (A0=0, RD/WR=0 DB7…DB0=0xС0 ) в левый кристалл (CS=0 ), стробируем E ,
подать команду (A0=0, RD/WR=0 ) установки верхней строки в 0 (DB7…DB0=0xС0 ) в правый кристалл (CS=1 ), стробируем E .
9. подать команду (A0=0, RD/WR=0 DB7…DB0=0xA1 ) (Внимание! Здесь для Протеуса должно быть А0 , а для реального индикатора А1 ) в левый кристалл (CS=0 ), стробируем E ,
подать команду (A0=0, RD/WR=0 ) установки обратного соответствия (DB7…DB0=0xA0 ) в правый кристалл (CS=1 ), стробируем E .
10. подать команду (A0=0, RD/WR=0 ) включения дисплея (DB7…DB0=0xAF ) в левый кристалл (CS=0 ), стробируем E ,
подать команду (A0=0, RD/WR=0 ) включения дисплея (DB7…DB0=0xAF ) в правый кристалл (CS=1 ), стробируем E .
Инициализацию можно выполнять как в той последовательности, которая указана выше, т.е. поочередно для каждого кристалла по одной команде, так и полностью все процедуры с 4-й по 10-ю сначала для одного (CS=0 ), а затем для другого (CS=1 ). Это уже зависит от того, кому как удобнее оформить программу. Необходимо только помнить про 9-й пункт, который в реальности будет отличаться.
К сожалению, все готовые библиотечные фунции на СИ для дисплеев MT12232A , найденные во всемирной паутине содержат те или иные ошибки. В основном это попытки подогнать стандартные функции вывода для дисплеев на базе SED1520 под особенности MT12232A . Поэтому рекомендовать их для использования без внимательного изучения и коррекции я сейчас не могу. Но приведу в качестве примера вывод графического массива с логотипом МЭЛТ, который взят из примера производителя. В примере LOGO.DSN из папки LOGO_MT12232A вложения использован слегка модифицированный пример MT12232-CV приложенный к материалу о драйвере MT12232A c сайта ChipEnable :
http://www.chipenable.ru/index.php/how-connection/103-podkluchenie-mt12232-k-avr.html
К сожалению, рекомендовать полностью использовать данный материал для моделирования дисплея MT12232A в Протеусе не могу, но, во всяком случае, начальная инициализация и вывод графического массива на экран модели проходят корректно, что подтверждается примером (Рис. 159).
Возможно, позже при наличии свободного времени я дополню этот материал новыми примерами, тем более, что сам индикатор у меня теперь есть в наличии и можно будет проверить соответствие модели «железу». А пока мы оставляем данный материал, подводим итог, поскольку уже давно не выкладывалась оффлайн версия материала, и переходим к рассмотрению активных моделей с элементами управления.
Рисунки 152, 153,154.
Рисунки 155, 156,157.
Рисунки 158, 159.



Загрузка...