Что такое контроллер дисплея
В современных условиях производители электронных приборов и оборудования поставлены в жесткие условия конкуренции на внутренних рынках сбыта — это системы безопасности, коммутационное оборудование и оборудование для связи, автомобильная электроника, измерительная аппаратура, автоматизация производства. Что касается внешних рынков, то на экспорт электроника российских производителей поступает в основном в составе вооружения.
Если говорить о предметной конкуренции
(например, электронные изделия для
одного и того же применения, выпускаемого разными предприятиями), то конкурентоспособность определяется функциональностью, ценой и эргономичностью прибора.
При прочих равных условиях потребитель
остановит свой выбор на изделии, где в наилучшей степени проявляется оптимизация
взаимодействия системы «оператор – прибор». Сказанное относится в первую очередь
к органам управления и индикации, размещенным на лицевой панели. Оснащение
приборов цветным дисплеем позволяет значительно повысить уровень комфортности
восприятия информации.
Схема подключения индикатора
Нарисовал схему подключения. Для питания дисплея нужно напряжение 3,3V. Если запитывать микроконтроллер от 5V, то ставим резисторные делители и микросхему 78L33. В случае питания всей схемы от 3,3V резисторные делители не нужны. Вроде Atmega8A может работать от 3,3V при условие, что частота не выше 8 МГц. Лично я не пробовал. У меня все собрано на отладочной плате с питанием от 5V. Перед самим дисплеем ставить по питанию электролит большой емкости ни в коем случае не надо. В самом начале работы контроллер подает на дисплей команды инициализации. Для заряда конденсатора нужно время. Пока он зарядится и дисплей начнет работать пройдет некоторое время, и команды инициализации он не получит. Конечно это миллисекунды, но в даном случае эффект ощутим.
Схема распиновки дисплея
У дисплея Nokia 1202 9-ти битный SPI интерфейс. У выбранного нами микроконтроллера такой роскоши нет. По этому для связи с дисплеем мы используем не аппаратный, а программный SPI, так сказать "ногодрыг”. Как создавать новые проекты в CodeVision рассказывать не буду - думайте сами. Скажу только, что все выводы PORTB надо настроить на выход. В настройках проекта нужно поставить галочку на "Store Global Constants in FLASH Memory”. Данное действие нужно для того, чтоб массивы шрифтов и наших картинок хранились во флеше.
Итак, проект мы создали. Выбрали микроконтроллер, задали тактовую частоту, настроили проект. Что дальше? А дальше нужно добавить библиотеки для работы с дисплеем и библиотеки задержек. Распаковываем архив. Там есть два файла. Их нужно скопировать в определенные папки. Надеюсь CodeVision вы установили прямо на диск C:\. Если да, то файлы копируем по соответствующим путям:
C:\cvavreval\inc для файла 1100.inc, и
C:\cvavreval\lib для файла 1100.h .
Еще хочу сказать, что назначение пинов микроконтроллера можно изменять в файле 1100.h. Тогда и схема подключения изменится. Начинаем кодить. Просто выведем какую-то надпись на дисплей основным шрифтом 5*8. В самом начале добавим библиотеки.
В самом низу до основного цикла while(1)<> делаем инициализацию дисплея и его очистку.
lcd_init(); // инициализация дисплея
lcd_clear(); // очистка дисплея
Нашу надпись поставим так же до основного цикла. Пусть сперва контролер выведет послание на дисплей, а после крутится в основном цикле. Пишем вот это:
print_string("Выводим надпись",5,0);
print_string("Какую сами хотим",0,1);
print_string("БУХАРЬ",10,2);
Думаю здесь все понятно. Первая цифра – координата по оси x на дисплее. Она может принимать значение от 0 до 96. Вторая – строка. Она от 0 до 7. В принципе там помещается 8 с половиной строк, но на пол строки мы читать не будем. Компилируем и прошиваем. Смотрим результат. Можно так же установить Proteus, и протестировать в нем. Контроллер можно настроить для работы от внутреннего генератора на частоту заданную в проекте с задержкой при старте 64 мсек. Добавляю архив с скомпилированным проектом. Частота 8 Мгц.
Но как уже писал в начале, в библиотеке есть еще и другие символы. Правда там нет букв, а только цифры. Теперь немного усложним задачу. Пусть надпись не будет инертной, а изменяется. Допустим считает от 0 до 9 с интервалом в 1 секунду. Когда дойдет до 9, после обнулится и снова наново. Возьмем цифры большие размером 24*32. Ну чтож приступим. Можно взять предыдущий проект и удалить три строки "print_string”. Сразу после добавления библиотек объявим некую глобальную переменную m.
Можно и просто написать:
В даном случае ей автоматически присвоится значение 0. В основном цикле пишем вот это:
char_24_32(m,35,2); //функция вывода символа 24*32
delay_ms(1000); // ждем 1 секунду
m++; // добавляем 1 к переменной m
if(m>9)m=0; // Условие. Если переменная m больше 9, то m равняется 0.
Что это и как понять, что сломалось?
Контроллер тачскрина является сложной электронной системой, точно реагирующей на прикосновения пальцами к дисплею. Если эта система неисправна, то нажатия будут получать плохую обратную реакцию. Более того, к симптомам поломок можно отнести полную неработоспособность тачскрина, что проявляется в виде полос на дисплее или помех в верхней части телефона. Продолжать использовать телефона изредка ещё можно, но комфорта от этого не будет.
Среди причин, из-за которых ломается контроллер сенсорного экрана можно назвать:
- деформация корпуса;
- механические повреждения;
- резкие перепады температуры;
- попадание воды внутрь корпуса.
В основе корпуса мобильного телефона лежит тонкий алюминий. В связи с этим, любая нагрузка на телефон в первую очередь негативно сказывается на самом корпусе, что и является причиной различных деформаций. Нередки случаи, когда из-за механических повреждений, задевается и материнская плата, в связи с чем возникают повреждения в пайке её компонентов. За счёт того, что контактные площадки отходят от микросхемы, контроллер тачскрина полностью выходит из строя.
Если внутрь мобильного телефона попадает жидкость, то на контактах микросхем возможно возникновение короткого замыкания. В результате либо устройство полностью выйдет из строя, либо сенсор касания потеряет свою чувствительность. Подобные проблемы особенно характерны для iPhone 6 Plus. Среди других моделей iPhone такая проблема, распространена меньше. Связано это с тем, что у них более прочный корпус, а дисплей в сборе с тачскрином имеет большую прочность.
Как заменить контроллер тачскрина?
Ремонт мобильного телефона, при неисправном контроллере тачскрина это сложный технологический процесс, во время которого на материнскую плату оказывается сильное термическое воздействие. Если учитывать все факторы риска, то при неправильном ремонте, из строя могут выйти и другие компоненты. Лучшим вариантом будет обратиться в сервисный центр, который имеет в распоряжении профессиональное оборудование. Таким образом, можно будет достичь значительного снижения термоудара, что в разы повысит шансы на успех.
Сам процесс ремонтной работы состоит из нескольких этапов:
- смартфон полностью разбирается с обязательным извлечением материнской платы;
- защитная пленка с тыльной стороны материнской платы полностью демонтируется;
- неисправная микросхема демонтируется и чистятся контакты;
- контактные площадки зачищаются и выравниваются;
- путем термовоздушной пайки устанавливается новая микросхема;
- приклеивается новая защитная пленка;
- полная сборка мобильного телефона.
За счёт того, что контроллер тачскрина относится к деликатным элементам матрицы, его ремонт следует доверять только проверенному сервисному центру или осуществлять самостоятельно, при полной уверенности в своих способностях. Лучшим вариантом будет приобретение защитных аксессуаров, который защитят тачскрин от механических повреждений или попадания влаги.
На сей раз хочу вам рассказать как подключить дисплей от мобильного телефона Nokia 1202 к микроконтроллеру Atmega8. Программируем в среде CodeVision. Кое где могу и ошибаться. Сам только не давно разобрался что к чему. Опыта в программировании не имею и библиотеки для работы с дисплеем писал не я. Они скопированы с одного проекта в интернете. Там прописаны все нужные функции и есть шрифт 5*8 латинские буквы и кириллица. Есть так же пару символов 12*16 и 24*32, которые использовал автор библиотек в своем устройстве. Если их удалить, то шрифт 5*8 будет занимать около 700 байт флеша микроконтроллера. Поэтому микроконтроллер для проекта надо брать "пожирней”. В моем случае использована Atmega8. Вполне достаточно. Все файлы - исходники, библиотеку и так далее, качаем здесь.
Графические контроллеры
фирмы
Solomon Systech Limited
Рис. 2. Блок-схема контроллера TFT SSD1926
Следует отметить, что видеопроцессоры
SSD1926 (рис. 2) и SSD1961 имеют прекрасные характеристики, облегчающие программисту обработку графики.
Возможности 2D-графического ускорителя:
- Прокрутка изображения и панорамирование экрана.
- Вращение изображения (угол 0°, 90°, 180°,
270°). - Два курсора. Цвет — один из трех плюс
прозрачный. Возможность мигания. - Рисование линии, прямоугольника, эллипса.
- Функция BitBLT (Bit block transfer). Растровые операции, заполнение цветом выделенного пространства, работа с видеобуфером, масштабирование, преобразование
цветовых пространств и др.
В задачах, где требуется большее разрешение экрана, можно применить TFT-дисплей
MTF-TW70SN911-AV (SP — вариант с сенсорной панелью), с экраном 800×480 точек.
Модернизация электронных
приборов путем использования
индикаторов со встроенным
контроллером
Наиболее бюджетный вариант модернизации выпускаемой продукции — замена монохромного индикатора на цветной, что сегодня
сделать достаточно просто. На рынке представлено значительное количество TFT- и OLED-дисплеев размерами от 0,66″ и выше. В большинстве своем малогабаритные индикаторы
имеют встроенный контроллер. Подобные
контроллеры отличаются разнообразием применяемых интерфейсов: I 2 C, SPI, параллельный, цифровой RGB. При этом доработка прибора не потребует значительных затрат.
Дисплейные технологии постоянно развиваются: сейчас доступны цветные TFT-индикаторы размерами 4,3″, 5,6″ и 7″ со встроенным контроллером (Microtips, Powertip,
Bolymin, Winstar и др.).
Рис. 1. TFT-дисплей MTF-TQ57SN741-AV (фирма Microtips)
Возьмем, к примеру, два дисплея производства фирмы Microtips — MTF —
TQ57SN741-AV (5,7″, 320×240×RGB, рис. 1)
и MTF-TV57NN831-AV (5,7″, 640×480×RGB)
(таблица).
Таблица. Технические характеристики дисплеев
По своим габаритам (144×104,6 мм) и ра
мерам видимой области (115,2×86,4 мм)
они аналогичны таким широко распространенным монохромным индикаторам с разрешением 320×240 точек, как PG320240x
(Powertip), MTG-F32240x (Microtips),
BG320240х (Bolymin), WG320240x (Winstar)
и др. Это позволяет провести модернизацию
прибора без корректировки конструкции его
корпуса.
На тыльной стороне индикатора размещена плата управления с контроллером и элементами схемы управления, а также разъем под плоский шлейф (26 контактов, шаг
0,5 мм — MTF-TQ57SP741-AV и 33 контакта, шаг 0,5 мм — для MTF-TV57NN831-AV),
на который выведены интерфейсные линии
контроллера SSD19хх.
Модернизация электронных
приборов путем использования
индикаторов со встроенным
контроллером
Наиболее бюджетный вариант модернизации выпускаемой продукции — замена монохромного индикатора на цветной, что сегодня
сделать достаточно просто. На рынке представлено значительное количество TFT- и OLED-дисплеев размерами от 0,66″ и выше. В большинстве своем малогабаритные индикаторы
имеют встроенный контроллер. Подобные
контроллеры отличаются разнообразием применяемых интерфейсов: I 2 C, SPI, параллельный, цифровой RGB. При этом доработка прибора не потребует значительных затрат.
Дисплейные технологии постоянно развиваются: сейчас доступны цветные TFT-индикаторы размерами 4,3″, 5,6″ и 7″ со встроенным контроллером (Microtips, Powertip,
Bolymin, Winstar и др.).
Рис. 1. TFT-дисплей MTF-TQ57SN741-AV (фирма Microtips)
Возьмем, к примеру, два дисплея производства фирмы Microtips — MTF —
TQ57SN741-AV (5,7″, 320×240×RGB, рис. 1)
и MTF-TV57NN831-AV (5,7″, 640×480×RGB)
(таблица).
Таблица. Технические характеристики дисплеев
По своим габаритам (144×104,6 мм) и ра
мерам видимой области (115,2×86,4 мм)
они аналогичны таким широко распространенным монохромным индикаторам с разрешением 320×240 точек, как PG320240x
(Powertip), MTG-F32240x (Microtips),
BG320240х (Bolymin), WG320240x (Winstar)
и др. Это позволяет провести модернизацию
прибора без корректировки конструкции его
корпуса.
На тыльной стороне индикатора размещена плата управления с контроллером и элементами схемы управления, а также разъем под плоский шлейф (26 контактов, шаг
0,5 мм — MTF-TQ57SP741-AV и 33 контакта, шаг 0,5 мм — для MTF-TV57NN831-AV),
на который выведены интерфейсные линии
контроллера SSD19хх.
Снял небольшое видео работы программы
Форум по обсуждению материала ПОДКЛЮЧЕНИЕ ДИСПЛЕЯ К МИКРОКОНТРОЛЛЕРУ
Самодельный функциональный генератор сигналов 0,1 Гц - 100 кГц на микросхеме ICL8038.
Обзор ещё нескольких схем и готовых конструкций Gauss Gun с Алиэкспресс.
Обзор электромагнитного пистолета из китайского набора для самостоятельной сборки.
Что такое изолятор и чем он отличается от токопроводящего материала. Занимательная теория радиоэлектроники.
Сенсорные экраны (тачскрины), интегрированные в ЖК-дисплеи (обычно TFT) или являющиеся частью печатной платы, де-факто становятся неотъемлемой частью пользовательского интерфейса в современных портативных устройствах. Основанные, главным образом, на резистивной или емкостной технологии, эти прозрачные или непрозрачные поверхности заменяют механические кнопки и переключатели, обеспечивая пользователя дополнительными удобствами, далеко выходящими за рамки возможностей, предоставляемых простым нажатием кнопки.
Многими компаниями разрабатываются и выпускаются специализированные микросхемы контролеров сенсорных экранов. Основная задача контроллеров – разгрузить центральный процессор приложения и предоставить большую функциональность. Эти контроллеры могут увеличить стоимость конечной системы и требуют немного большей площади печатной платы, но зато они позволяют разработчикам значительно быстрее продвигать на рынок свои проекты, снабженные надежным и проверенным сенсорным интерфейсом.
В статье мы рассмотрим контроллеры сенсорных экранов с интерфейсом I 2 C.
По другую сторону подключения
Сегодня пользовательские интерфейсы далеко ушли от механических переключателей и замыкающихся контактов. Жесты для масштабирования и прокрутки изображения могут сделать больше, чем любая дискретная кнопка или переключатель. Круговые движения также заменили механический поворотный переключатель JOG, популярный в ранних моделях iPod. Слайдеры, в которых использовались аналоговые переменные резисторы, тоже заменяются сенсорной технологией.
Для реализации всех этих возможностей и гибкости сенсорных интерфейсов требуется бóльшая вычислительная мощность процессора, позволяющая обрабатывать, декодировать, подавлять дребезг и передавать намерения пользователя хост-процессору приложения. Это означает, что нужно либо выбирать более мощный (следовательно, более дорогой) процессор, либо использовать специализированный контроллер.
На использование в приложениях имеют право оба варианта. Современные микроконтроллеры и микропроцессоры, как правило, имеют высокую производительность и развитую периферию, включая аналого-цифровые и цифро-аналоговые преобразователи, операционные усилители и компараторы, которые могут использоваться для реализации примитивного сенсорного интерфейса. Однако для оперативного определения и реагирования в реальном времени такой подход требует написания кода для хост-процессора, и так загруженного функциями приложения. Следовательно, понадобится больше встроенной Flash-памяти для хранения программного кода, больше блокнотной памяти и ОЗУ, что, в свою очередь, может потребовать приобретения более крупного и дорогого микроконтроллера.
Размер микроконтроллера, как правило, является основным ограничением для любого портативного устройства, поэтому крайне нежелателен сенсорный интерфейс, для поддержки которого требуется много линий ввода/вывода. Практика показывает, что чем меньше выводов микроконтроллера используется для выполнения функции, тем лучше был организован процесс конструирования. Именно по этой причине для подключения к микроконтроллеру сложных функциональных устройств используются последовательные интерфейсы, не расходующие драгоценных линий ввода/вывода.
I 2 C – достаточно простой, но эффективный, двухпроводной двунаправленный интерфейс обмена данными, позволяющий периферийным устройствам выполнять сложные функции, используя лишь две линии ввода/вывода хост-процессора. Этот интерфейс настолько прост, что при отсутствии в микроконтроллере встроенного аппаратного I 2 C порта легко может быть реализован на программном уровне.
Как вы можете ожидать, этот общепризнанный стандарт используется для обмена данными между специализированным контроллером сенсорного интерфейса и хост-микроконтроллером с использованием минимального количества линий ввода/вывода. Кроме того, стоит заметить, что многие контроллеры тачскринов являются специализированными процессорами или системами-на-кристалле (SoC). Это означает, что они оптимизированы для сенсорных интерфейсов, но могут выполнять и другие функции системы, дополнительно освобождая ресурсы центрального процессора.
Рисунок 1. | Процессор, встроенный в контроллер Cypress True Touch, поддерживает многие алгоритмы работы с сенсорными интерфейсами и способен выполнять дополнительные периферийные функции. Обмен данными с хост-процессором ведется по шине I 2 C. |
В дополнение к интерфейсу I 2 C контроллер снабжен портами USB, SPI и UART. Благодаря встроенной памяти (32 Кбайт Flash, 2 Кбайт ОЗУ) он может быть адаптирован под специфические требования сенсорного интерфейса. Скорее всего, для выполнения основного приложения мощности процессора не хватит, но он и не предназначен для этого. Прибор больше напоминает программируемый периферийный чип с встроенным микроконтроллером.
Еще один игрок на арене сенсорных устройств и интерфейсов – компания Atmel с технологией QTouch. В контроллере AT42QT1060-MMUQS39, например, предназначенном для применения в смартфонах и мобильных устройствах, интегрированы две необходимые функции: сенсорный интерфейс и ШИМ драйверы для управления светодиодами (Рисунок 2).
Рисунок 2. | Помимо средств мониторинга сенсорных кнопок, контроллер Atmel QTouch содержит ШИМ-драйверы с поддержкой функции диммирования светодиодов. Контроль всех сенсорных функций и диммирования осуществляется по I 2 C. |
Технология QTouch основана на цифровом пакетном переносе заряда для определения изменения емкости сенсорной кнопки. Для подавления радиочастотных излучений и снижения влияния внешних шумов используются пачки амплитудно-манипулированных сигналов с расширенным спектром. Одновременно это позволяет уменьшить влияние на чувствительные высокочастотные каскады, используемые в сотовых телефонах. Для оценки возможностей контроллеров и разработки приложений компания выпускает несколько отладочных и демонстрационных наборов и программную библиотеку функций поддержки сенсорного интерфейса (Рисунок 3).
Рисунок 3. | Демонстрационная плата QTouch Xplained. |
И слайдеры тоже
Компания IDT выпускает интересный контроллер LDS6000NQGI8, предназначенный для реализации сенсорных слайдеров и колец. Получившая название PureTouch технология, используемая в контроллере, основана на преобразовании емкости в цифровой код посредством работающего на частоте 500 кГц сигма-дельта конвертера и коммутационной матрицы (Рисунок 4).
Рисунок 4. | Сигма-дельта преобразователь емкость-код и коммутационная матрица, встроенная в контроллер Pure Touch, позволяют использовать несколько сенсорных слайдеров, колец JOG и дискретные сенсорные площадки. |
Важной особенностью контроллера LDS6000N является встроенная схем калибровки, постоянно оценивающая внешние шумы и изменяющая уровни порогов срабатывания. Наряду с интерфейсом I 2 C контроллер имеет порт SPI, который может использоваться в качестве последовательной линии связи с хост-микроконтроллером. Для выбора одного из двух интерфейсов используется специальный вывод.
Если приложению требуется более высокое разрешение и большее количество сенсорных входов, можете обратить внимание на созданный компанией STMicroelectronics контроллер сенсорной клавиатуры STMPE24M31QTR, основанный на технологии S-Touch. Прибор поддерживает до 24 сенсорных входов и может управлять слайдером или колесом с разрешением 256 шагов. Он содержит также 8 блоков ШИМ для управления 16 светодиодами с функциями диммирования и мигания. Интерфейс I 2 C работает на частоте 400 кГц, а все входные линии снабжены ESD защитой до 8 кВ. Микросхема имеет также 16 линий ввода/вывода общего назначения и предназначена, в первую очередь, для мобильных телефонов, портативных медиа-плееров, ноутбуков и игровых консолей.
Компания предлагает оценочный набор STEVAL-ICB003V1, содержащий 8 сенсорных кнопок, интерфейс энкодера и четыре семисегментных светодиодных индикатора (Рисунок 5). Кроме того, для детального ознакомления с решениями на основе емкостных сенсорных элементов компанией организовано онлайн обучение.
Рисунок 5. | Оценочный набор STMicroelectronics представляет собой решение для лицевой панели управления на основе технологии S-Touch. |
Freescale также выпускает интересную микросхему для организации сенсорного интерфейса. MPR121QR2 – представитель второго поколения контроллеров, поддерживающий до 12 сенсорных кнопок. Отличительной особенностью MPR121QR2 являются встроенные схемы фильтрации и подавления дребезга, а также улучшенный механизм обнаружения изменений емкости.
Каждая выборка значения емкости сравнивается с базовым значением для определения статуса электрода (есть касание или нет касания). Базовая емкость отслеживается контроллером автоматически на основе изменения фоновой емкости.
Разработчик имеет возможность установить пороги срабатывания и время подавления «дребезга» при касаниях сенсора. Это необходимо для устранения джитера и ложных прикосновений из-за помех. Адрес контроллера на шине I 2 C конфигурируется, аппаратно что позволяет вести арбитраж устройств на шине. Как и другие компании, Freescale предлагает пользователям оценочные наборы и модули.
Заключение
Сенсорные технологии могут надежно заменить подверженные механическому износу механические кнопки и переключатели. Современные датчики касания могут конфигурироваться в виде простых слайдеров, колец и площадок, обеспечивая значительные преимущества для реализации интуитивного пользовательского интерфейса и дополнительные возможности для разработчиков, снижая, в тоже время, конечную стоимость системы. Контроллеры сенсорных экранов и кнопок с интерфейсом I 2 C снижают нагрузку на основной микроконтроллер приложения и могут выполнять дополнительные периферийные функции.
И снова привет, Хабр! Сделав перевод статьи об управлении ЖК-модулем с драйвером, но без собственного видео-ОЗУ, я решил перевести ещё одну публикацию на ту же тему. Здесь модуль уже попроще, монохромный, но «оживить» его не менее интересно.
Дисплей, с которым собирается работать автор, взят из старой ленточной библиотеки. Контроллер не сохранился, но поиск чего-либо связанного с «263645-001» показал, что там был ПЛИС. Считается, что непосредственно управлять такими ЖК-модулями от Arduino и т.п. невозможно, нужно промежуточное звено — контроллер серии SEDxxxxx, который не «дружит» с макетными платами, а входов имеет больше, чем сам модуль. Но это не так. Вот целых четыре аналогичных проекта:
А некоторые вообще управляют от восьмиразрядных AVR VGA-мониторами…
В общем, у автора всё получилось, ПО под лицензией MIT — здесь.
Чтобы убедиться, что всё работает, надо сначала попробовать вывести однобитное растровое изображение из флеш-памяти микроконтроллера. Для получения отрицательного напряжения взяты три «Кроны», на вывод V0 подано напряжение с делителя, в качестве которого применён подстроечный резистор. И вот на экране — Ленна:
Автор до сих пор не может понять, как умудрился перевернуть картинку (посомтрите, с какой стороны шлейф). В любом случае, на странице проекта на GitHub есть и этот пример.
Но от видео-ПЗУ толку мало, а 9600 байт для видео-ОЗУ в Arduino нет. На помощь приходит текстовый режим, при котором ПЗУ знакогенератора и видео-ОЗУ вместе взятые имеют меньший объём, чем видео-ОЗУ при графическом режиме. На эту тему сторонники РК и «Специалиста» могут ломать копья бесконечно.
Короткий пример на языке ассемблера AVR:
Для модуля F-51543NFU-LW-ADN / PWB51543C-2-V0 автор применил:
Arduino на AVR с тактовой частотой в 16 МГц (проверено на Uno, Leonardo и клоне, аналогичном ProMicro).
Источник отрицательного напряжения. У автора это — нестабилизированный DC-DC преобразователь A0524S-1W с развязкой входа и выхода. Подойдут также преобразователи на MC34063 (эту микросхему найти очень просто — достаточно разобрать самую дешёвую USB-зарядку для прикуривателя) или MAX749. Стабилизация не требуется, диапазон допустимых напряжений по этому входу у применённого здесь модуля достаточно широк. Номинал — минус 24 В, максимум — минус 30 относительно общего провода и 35 между Vdd и Vee. Потребляемый ток составит 6 мА.
Два N-канальных МОП-транзистора с управлением логическими уровнями. Автор применил IRL530n, запас, конечно, большой, зато точно не перегорят. Один транзистор управляет подсветкой, другой — источником отрицательного напряжения.
Подстроечный резистор на 250 кОм для подачи напряжения на вход V0. Выставить, чтобы на подвижном контакте было -16.8 В при температуре в +25 °C. Это из даташита, а так, конечно, такая точность не нужна.
Несколько 10-килоомных резисторов для подтягивания вниз.
Макетка и перемычки.
Что бы теперь такого сделать? QR-часы? Спросим котэ:
Котэ предлагает реализовать симуляцию какого-нибудь распространённого ЖКИ с контроллером. Чтобы к этому Arduino можно было подключить другое, «думающее», что работает с дисплеем на HD44780, только большим.
Берём пример с EGA и VGA — там при работе в текстовом режиме сделано именно так. Только здесь знаков поместилось всего 64, но хоть так всё в ОЗУ влезло, в отличие от графического режима. Правда, основной цикл событий замедлило, зато можно попробовать тайловую графику:
В Arduino на AVR столько ОЗУ нет, и точка. Даже в Mega. 320x240 даже при одном бите на пиксель — это уже 9600 байт. Всего для четырёх полутонов потребуется вдвое больше. С внешним ОЗУ, например, 23LC512 в режиме SQI можно попробовать реализовать что-то похожее на DMA, но проще и выгоднее переделать всё на ESP32, где и статического ОЗУ больше, и DMA легче делается.
Если вы хотите просто подключить такой дисплей к ПК через USB, можно попробовать применить для этого ATmega32u4 — ресурсов хватит даже для градаций яркости (при помощи FRC, о том, что это такое, рассказано в моём предыдущем переводе). Но не у «меги», используемой как преобразователь интерфейсов, а у ПК, который будет сам сканировать ЖКИ на лету со скоростью в 5.4 мегабит в секунду.
Когда модуль ещё стоял в ленточной библиотеке, там и GUI, и градации яркости — всё было.
Обновления будут. А пока…
И это — не фотомонтаж, а результат управления с ПК. А мы перейдём с Hackaday.io на GitHub — там в README.md ещё много интересного.
FLM — First Line Marker — маркер первой строки, может также называться FRAME, VSYNC, и т.п.
CL1 — Row latch pulse — импульс записи строки, может также называться. LOAD, HSYNC, и т.п.
CL2 — Pixel shift clock — импульс смены пикселя, может также называться. CP (change pixel), и т.п.
M — чередующийся сигнал, благодаря которому пиксели управляются переменным напряжением, может также называться BIAS (смещение), и т.п.
D0-D3 — четырёхразрядная параллельная шина данных.
Выводы общего провода, питания подсветки (например, VLED±), питания модуля (VEE и V0)
Не пренебрегайте даташитами. Модуль может требовать другое отрицательное напряжение, или оно может оказаться положительным, или преобразователь может быть встроенным. Может отличаться логика, например, при единице на CL1 не будет реакции на CL2. Может быть другая подсветка (CCFL (осторожно, инвертор «кусач») вместо светодиодов), или на плате не указана цоколёвка, тогда без даташита её точно не узнать. Наугад что-либо подключать нельзя.
Передать строку кусками по четыре бита, запись производится по спаду на линии CL2. Передав строку, записать её по спаду на линии CL1 (ага, всё-таки, чуть-чуть ОЗУ в модуле есть — на одну строку). Следующая строка будет выбрана автоматически. Передав весь кадр, вернуться в начало при помощи сигнала FLM. В даташите на LC79401 есть пример. Запись производить с достаточной скоростью, импульсы на CL1 подавать равномерно. Контроллер чуть замешкался — экран некрасиво мигнул.
После каждого кадра менять логический уровень на входе M на противоположный, чтобы пиксели управлялись переменным напряжением. Иначе дисплей портится:
Пример для вывода изображения из флеш-памяти (см. начало статьи) называется в этом репозитории clglcd_simple
Как уже было сказано, проделать то же самое с ОЗУ в Arduino на AVR невозможно — его не хватит, поэтому…
Согласно даташиту, можно передавать данные по четырёхразрядной шине и «дёргать» CL2 с частотой до 6 МГц. Поэтому можно быстро-быстро передать строку, потом микроконтроллер немного порешает другие задачи, а как таймер ему «скажет» — он «дёрнет» CL1 и повторит цикл.
При генерации знаков для горизонтального разрешения в 320 пикселей всё это удаётся проделывать за 20 мкс (320 пикслей /4 бита = 80 импульсов, CL2 «дёргаем» с частотой в 4 МГц). На остальные задачи остаётся 39.5 мкс. CL1 «дёргаем» каждые 59.5 мкс и получаем частоту кадров в 70 Гц. Ну, там ещё процедурв обработки прерываний будут и прочее, в общем, микроконтроллер будет занят управлением дисплеем 45% времени. «Целых» 45 или «всего» 45? Наверное, второе: перезаписать данные в видео-ОЗУ можно достаточно быстро.
Хотите, чтобы микроконтроллер тратил меньше времени на управление индикатором, и больше на другие задачи? Можно уменьшить частоту кадров до 50 Гц, можно разогнать микроконтроллер до 20 МГц. При любом из этих способов между проуедурами обработки прерываний пройдёт больше тактов.
Таймер сравнения выхода переключает линию CL2 через каждые четыре тактовых импульса со скважностью в 50%. Одновременно данные поступают на выходы порта PORTB, подключённые к четырёхразрядной шине данных модуля таким образом, что смена их происходит в момент нарастания уровня на CL2, а в момент спада они остаются неизменными. Конечно, без ассемблера такое не проделать:
8 тактов — и переданы четыре полубайта. А что именно передавать — зависит от того, какой символ находится в соответствующей ячейке видео-ОЗУ, какие именно пиксели, соответствующие этому символу, надо передать из ПЗУ знакогенератора, и что хранится в соответствующих ячейках этого ПЗУ.
Самое неудобное здесь — необходимость останавливать таймер ровно через 80 импульсов. Некоторые таймеры, например Timer4 в 32u4, так не могут.
Для получения сигнала, подаваемого на линию CL1, автор применил другой вывод микроконтроллера, предназначенный как для таймера, так и для быстрого ШИМ. Что из этого применено здесь, понятно. Переключается он каждые 952 такта. Или если считать после делителя тактовой частоты на 8 — получается через каждые 119 импульсов. В этот момент запускается процедура обработки прерывания и заставляет микроконтроллер подать на линии управления новые данные, которые потребуются при следующем импульсе на CL1. Ну а уровень на линии M меняется с вдвое меньшей частотой. И ЖКИ не портится. Все сигналы вместе выглядят так:
Знакогенератор состоит из 256 символов — хватит для 866, KOI-8R или 1251. В видео-ОЗУ помещается 40хN символов, где N — количество строк, зависящее от высоты символа. Ширина символа — всегда 8 пикселей, а высота может быть 6, 8, 10, 12, 15, 16. Чем она меньше, тем меньше требуется ПЗУ для знакогенератора и больше видео-ОЗУ. При шрифте 8х8 (40 символов на 30 строк) надо 1200 байт ОЗУ и 2048 байт ПЗУ. При шрифте 8х16 (на этом модуле смотрится лучше всего) ОЗУ надо 600 байт, а ПЗУ — 4096. От переводчика: можно шрифт хранить в виде 8х8, а по вертикали масштабировать вдвое программно, и обойтись 600 байтами ОЗУ и 2048 — ПЗУ. Чтобы хранить в ПЗУ несколько шрифтов, нужно держать адрес начала шрифта не в константе, а в переменной, но выводить текст сразу несколькими шрифтами не получится, если, конечно, не менять этот адрес на лету процедурой обработки прерывания прямо во время передачи пикселей в дисплей.
Шрифт хранится так: сначала верхние строки всех 256 символов, потом на одну строку ниже, и так далее. В папке misc репозитория есть скрипт на Python, который автоматически преобразует TTF-шрифт в файл заголовка clglcd_font.h с массивом PROGMEM в необходимом формате. Классические пиксельные шрифты под CC-BY-SA 4.0 можно взять здесь.
Но на этот раз с подробностями. Знакогенератор в ОЗУ, как указано выше, вмещает всего 64 знака, их можно обозначить номерами от 0 до n либо от 255-n до 255. Хранятся они аналогично: верхние строки всех символов, затем следующие, и так далее. Только выровнено всё это с учётом того, что знаков не 256, а 64. Для знаков размером 8х16 пикселей потребуется 16*64=1024 байта. В репозитории есть пример работы со знакогенератором в ОЗУ.
Если задействовать одновременно оба знакогенератора — 256-символьный в ПЗУ и 64-символьный в ОЗУ, придётся смириться с тем, что не только останется меньше ОЗУ, но и уменьшится скорость передачи данных о строках в модуль — вместо 8 тактов загрузки двух полубайтов потребуется 12, то есть, не 20 мкс, а 30, а вместо 45% времени на управление ЖКИ уйдёт 60.
Как указано выше, в этом случае микроконтроллер работает просто преобразователем интерфейсов. Потребуется ATmega32u4, а что как делать, описано здесь. Учтите, что модуль может испортиться от зависания программы на ПК.
Так вот что это за четырёхпроводной шлейф — от резистивного сенсора, оказывается.
Как указано выше, потребуется отрицательное напряжение, которое в первых опытах можно снять с трёх «Крон», а потом собрать преобразователь, например, на MAX749. Сигналы управления питанием, а также сигнал DISPOFF (это сигнал инверсный, модуль включён при единице) подтянуть резисторами вниз. Во время прошивки и сброса микроконтроллера появление там логических единиц недопустимо.
Отрицательное напряжение подавать после напряжения +5В, а логическую единицу на линию DISPOFF — когда на линиях управления уже присутствуют данные: хотя бы одна единица на шине данных, единица на CL1. Иначе может выйти из строя модуль.
FLM — на любой цифровой выход.
DISPOFF — на любой другой цифровой выход.
Остальное зависит от того, как вы запитываете модуль. Автор предпочитает управлять подсветкой и Vee по отдельности.
Поместить в скетч файлы clglcd.h and clglcd.cpp
Сделать резервную копию файла clglcd_config.h и отредактировать его с учётом того, что куда подключено, а также того, какие функции вам нужны: знакогенератор в ОЗУ, и т.п. Внимание, в коде указаны не названия выводов Arduino, а названия выводов микроконтроллера согласно даташиту. Названия выходов теймеров сравнения расшифровываются так: например, 2,B — это OC2B, что на Arduino Uno соответствует PD3. В примерах приведены варианты подключения, которые заработали у автора.
Сгенерировать файл шрифта clglcd_font.h Python-скриптом в папке misc (см. выше).
Посмотреть в примерах, как инициализировать, включить и выключить дисплей. Поместить в массив screen текст, который вы желаете отобразить для проверки.
Скомпилировать и залить скетч. Проверить логическим анализатором, что на дисплей пойдут правильные сигналы, а вольтметром — что все напряжения питания в норме. Только после этого подключать дисплей.
Добавить в скетч код, который будет что-нибудь делать, например, принимать текст по последовательному порту и отображать.
Обновлять дисплей надо постоянно, чем занимаются процедуры обработки прерываний. Если прерывания прекратятся более чем на 30 мкс, дисплей начнёт моргать, а если более чем на 60 мкс при единице на линии FLM — он может выйти из строя. Если надо прекратить прерывания надолго, сначала выключайте дисплей сигналом DISPOFF (повторяю, это сигнал инверсный, модуль включён при единице). Конечно, если он будет выключаться на две секнуды каждый раз, когда надо обработать данные от датчика влажности и температуры, это мало кому понравится, но лучше уж так, чем испортить модуль. Ещё лучше поручить всё остальное отдельному микроконтроллеру. Особенно недопустим обмен информацией тем же самым микроконтроллером с устройствами, работающими по протоколу 1-wire, и адресными светодиодами. Клоны Arduino Pro Micro достаточно недороги, чтобы купить два.
Зато будут прекрасно работать аппаратно реализованные интерфейсы: последовательные порты, шина I 2 C, SPI в ведущем режиме. В ведомом — только если ведущее устройство допускает периодическое «отваливание» ведомого на 25-35 мкс. Конечно же, всё ещё зависит от того, сколько «ног» осталось не занято после подключения дисплея.
USB на 32u4 работает отлично, если не опрашивать конечную точку управления слишком часто (медленный код процедуры обработки прерывания). Драйвер CDC и его API оказались достаточно быстрыми.
Далее в файле README.md на GitHub повторён перечень аналогичных проектов, такой же, как на странице проекта на Hackaday.io
Методы подключения цветного
индикатора к микроконтроллеру
Сопряжение индикаторов с микроконтроллером можно осуществить двумя методами:
либо как устройство на параллельной шине,
либо подключение к независимым GPIO-портам процессора. При этом следует учитывать,
что гораздо большей скорости прорисовки изображения можно добиться при подключении
индикатора к интерфейсу внешней памяти.
Рассмотрим вариант такого подключения
на примере процессора STR912FAW44X6
(рис. 3). Этот процессор имеет мультиплицированную внешнюю шину с сигналом ALE
для защелкивания адреса. В нашем случае используются сигналы A0/D0–A15/D15, WRH,
CS. Недостатком такого подключения является невозможность чтения информации
из индикатора.
Рис. 3. Фрагмент схемы подключения индикатора MTF-TQ57SP741-AV к процессору STR912FAW44X6 (STMicroelectronics)
Для питания светодиодной подсветки
индикатора (рис. 4) требуется напряжение
10 В (типовое значение) при токе через светодиоды 200 мА. Для формирования этого напряжения можно применить любой из индуктивных повышающих DC/DC-конвертеров.
В нашем случае это микросхема LM2733х
производства National Semiconductor (рис. 5).
Рис. 4. Схема светодиодной подсветки дисплея
Рис. 5. Схема формирователя напряжения 10 В для светодиодной подсветки индикатора MTF-TV57NN831-AV
При инициализации MTF-TQ57SP741-AV
в регистры контроллера записываются значения, обеспечивающие соответствующие
настройки интерфейса и режимы работы индикатора.
Рис. 6. Блок-схема контроллера TFT SSD1963
Интересен также 7-дюймовый дисплей
MTF-TW70SP911-AV. На его плате управления установлен контроллер SSD1963 (рис. 6),
имеющий следующие характеристики:
- встроенная видеопамять размером
1215 кбайт. - управление дисплеями разрешением
до 864×480 c глубиной цвета 24 bpp; - аппаратное вращение изображения на угол
0°, 90°, 180°, 270°; - аппаратное зеркальное отображение изображения;
- аппаратная поддержка оконного режима;
- программируемые яркость, контрастность,
насыщенность.
Более подробную информацию можно почерпнуть из оригинального описания
контроллеров SSD19хх (SSD1926 Application
Note, Solomon Systech). С примером же
инициализации дисплеев с контроллерами
SSD19хх можно ознакомиться на сайте фирмы КТЦ-МК [3].
Чаще всего выбор модели цветного дисплея
для электронного прибора определяется требованиями конкретного применения и в значительно меньшей степени — его стоимостью. Поскольку дисплеев большого размера
со встроенным контроллером не так много,
можно пойти на некоторое удорожание модуля визуализации, применив иное решение.
Рис. 7. TFT-дисплей LMS480KC04, изготовленный по технологии LTPS (низкотемпературный поликремний):
а) блок-схема дисплея; б) подсветка собрана из 12 белых светодиодов (ток I = 25 мА)
- Технология LTPS (Low Temperature Poly
Silicon), SOG (System On Glass). - Светодиодная подсветка.
- Диагональ — 4,8″.
- Формат — 15:9.
- Разрешение — 800×RGB×480.
- Время отклика — 25 мс.
- Частота кадров — 60 Гц.
- Интерфейс — 24-битный RGB.
- Количество цветов — 16,7 млн.
- Сенсорная панель —
встроенная 4-проводная, резистивная. - Яркость — 500 нит.
- Контрастность — 800:1.
- Угол обзора — 80/80/80/80°.
- Активная область — 104,4×62,64 мм.
- Габариты — 112×75×2,95 мм.
- Диапазон рабочих температур: –20…+60 °C.
- Температура хранения: –40…+85 °C.
Внешний контроллер управления дисплеем
можно реализовать на графических контроллерах от Solomon Systech — SSD1926/196x
или же Epson, например S1D13504 (рис. 8).
Рис. 8. Реализация управления TFT-дисплеем с помощью внешнего видеоконтроллера
Несомненный плюс решений от Solomon
Systech — наличие видео-ОЗУ на кристалле
контроллера.
Поскольку цифровой интерфейс RGB
(Direct support for 9/12/18/24-it TFT) является
стандартным, то очень просто будет переходить на различные модели дисплеев.
Рис. 9. Функциональная блок-схема дисплея LMS480JC01
Достаточно распространены также TFT-дисплеи с LVDS-интерфейсом. В том числе
и дисплеи малого формата. К примеру, дисплей LMS480JC01 фирмы Samsung (рис. 9),
имеющий следующие характеристики:
Интегрировать дисплей с LVDS-интерфейсом в разрабатываемый прибор достаточно
просто, используя специализированные микросхемы-сериализаторы: FIN3385 (Fairchild),
SN75LVDS83DGG (Texas Instruments) и др.
Рис. 10. Функциональная блок-схема драйвера LVDS SN75LVDS83DGG (Texas Instruments)
Таким образом, сегодня у разработчиков
электроники различного назначения имеется
масса возможностей, чтобы на рынок попадали конкурентоспособные, функциональные, имеющие современный облик приборы и оборудование.
Практически каждому пользователю современного смартфона известны проблемы, которые связанны с контроллером тачскрина. Если телефона на гарантии, то поводом для беспокойства нет. Но если гарантийный период окончился, то возникает проблема, как и где заменить эту деталь. Многие не желая обращаться в сервисные центры, пробуют самостоятельно осуществить замену матрицы, сенсорного стекла или контроллера. За счёт того, что все запчасти к телефонам можно купить в интернете, ремонт становится в разы проще.
Читайте также: