Из чего состоит модуль дисплея
В любительских конструкциях (да и не только любительских) в большинстве случаев возникает необходимость вывода различной информации в наглядном виде. Иногда для этого хватает обычного светодиода, а иногда требуется что то более серьезное, включая передачу информации на ПК.
Сегодняшняя статья представляет собой небольшой обзор компонентов и устройств, которые чаще всего используются для автономного отображения информации в различных устройствах. С кратким описание работы некоторых из них.
Статья ориентирована на начинающих любителей. Она не претендует на полное и всестороннее освещение вопроса. Это именно небольшой обзор самых распространенных вариантов.
Но давайте обо всем по порядку.
Рамка
Это своеобразная основа, на которой крепятся все указанные выше элементы. Сама рамка устанавливается непосредственно на каркас смартфона.
Вот такой “сэндвич” уместили разработчики в дисплейном блоке, толщина которого не превышает пары миллиметров. Теперь понятно, почему экран смартфона такой дорогой, а его замена часто влетает в копеечку.
В закладки
7. Рамка дисплея
Упомяну про эту часть в самом конце, т.к. она полностью обрамляет защитное стекло и весь дисплей. Ниже представлена рамка iphone 5 черного цвета.
Как вы видите, дисплей iphone весьма непрост. И далеко не монолит как представляют вам на многих сайтах. При наличии навыков и оборудования все эти части можно заменить по отдельности, что гораздо дешевле для клиента и выгоднее для сервисного центра.
Например, модуль в сборе для iphone 6 plus стоит в районе 20 тыс. руб. (на момент написания статьи) без учета стоимости работ :) Хотя, при падении телефона разбивается, как правило, только защитное стекло и его замена на iphone 6 plus обойдется в несколько раз дешевле чем замена всего дисплея.
Аналогичная ситуация, например, с samsung galaxy S3, s4 и т.д. где стоимость модуля достигает 10 тыс руб., и смотря на курс доллара, мы понимаем, что ситуация вряд ли изменится.
О том как происходит замена дисплея на iphone по частям я напишу в следующий раз. И хотя, на youtube и в интернете уже множество видео и постов на эту тему, с выходом дорогостоящих смартфонов с дисплеями большой диагонали она становится все актуальнее.
Со смартфонами старых моделей все не так плохо, взгляните, хотя бы, на цены для дисплейных модулей «стареньких» iphone:
- Дисплей для iphone 4g с доставкой из Белгорода
- Дисплей для iphone 5s с доставкой из Белгорода
- Дисплей для iphone 6 (хоть и новый, но цены чуть упали) также в Белгороде
С другой стороны, модуль дисплея пусть и дороже, но на него вы получаете полноценную гарантию как на отдельное устройство и сможете заменить самостоятельно в домашних условиях избежав похода в сервисный центр.
Опять же, в нашем сервисном центре при замене защитного стекла на iphone, вы получаете такую же гарантию как и при замене всего дисплея, а платите в РАЗЫ меньше.
В закладки
Главная часть любого современного смартфона – его дисплей. Это первое, что встречает нас при знакомстве с гаджетом. С дисплеем мы сталкиваемся сотни раз в день, его чаще всего приходится менять при падении айфона.
Любой производитель техники уделяет этому модулю едва ли не самое большое внимание, ведь от качества картинки на экране и отзывчивости сенсорной панели зависит восприятие устройства пользователем.
Чтобы лучше понимать, насколько технологичный и сложный модуль находится на передней части наших смартфонов, давайте разберемся, из чего же он состоит.
Сенсорная панель
Её еще называют тачскрином или просто сенсором. Отвечает за распознавание нажатий пользователя.
Оригинальный элемент выполнен из тонкого слоя стекла и позволяет с точностью до миллиметра определить место нажатия. При этом сенсор обладает поддержкой технологии мультитач.
Данный элемент страдает при падении гораздо реже, чем защитное стекло.
3. Сенсорное стекло (сенсорная панель, она же тачскрин, она же сенсор)
Именно по средствам сенсорной панели, процессор телефона получает информацию о том, в каком месте вы прикоснулись к стеклу, затем через видеоподсистему выполняемые действия отображаются на матрице.
Поляризационный фильтр
Специальная прослойка, которая делает изображение матрицы видимым для человеческого глаза.
Без неё мы не смогли бы вообще ничего рассмотреть на экране.
Disclaimer
Описанные ниже устройства являются довольно нишевыми, сделаны мною just for fun, но примененный подход может быть использован для решения аналогичной задачи универсализации там, где это потребуется. Текст разбавлю пояснениями для начинающих. Основная цель — спроектировать единую плату под все имеющиеся индикаторы и различные идеи их использования.
Статья получилась объемная, так что я разделил hardware и software части. К вашему вниманию часть первая — hardware.
Сегментные индикаторы (знакосинтезирующие)
В таких индикаторах можно не только изменять отображаемую информацию, но и менять внешний вид символов, которые теперь состоят из отдельных цельных фрагментов - сегментов. Но вот внешний вид сегментов изменить нельзя. Если в индикаторе нет, например, сегмента в виде части окружности, то отобразить его нет возможности.
Примером являются классические светодиодные 7-сегментные индикаторы. Хотя количество сегментов может быть и иным.
Случилось так, что по наследству мне досталась целая коробка семисегментных индикаторов с гордой надписью «Комплект часы». Давно хотелось пустить её содержимое в дело, а когда дошли руки — оказалось, что внутри целый зоопарк разномастных индикаторов, разных размеров, цветов, с общим катодом и с общим анодом. По количеству штук так двадцать. И чтобы не пилить «очередные часы» пришла идея сделать, собственно, сабж — максимально универсальный семисегментный дисплей.
Что из этого получилось — под катом.
6. Подсветка.
Источник света. Служит для того чтобы изображение, выводимое ЖК-экраном было видно человеческому глазу т.к. сами по себе ЖК кристаллы не излучают света.
Приступим к деталям
Начнем с питания семисегментных индикаторов большого размера, где каждый сегмент представляет собой цепочку из нескольких последовательно включенных светодиодов. Такие дисплеи уже не получится зажечь «цифровыми» уровнями напряжения, так как падение на цепочке светодиодов больше этого значения. Конкретное значение указывается в даташите на дисплей, оно зависит от характеристик светодиодов, цвета и их количества и может варьироваться от 6 до 12 Вольт. Ток через каждый сегмент также превышает допустимые значения тока через отдельный пин для большинства контроллеров и составляет от 20 до 50 мА. Соответственно, нужно использовать напряжение 12 Вольт и коммутирующие ключи для управления сегментами и общими выводами. Также не стоит забывать о динамической индикации — последовательном переключении разрядов с частотой превышающей частоту восприятия глаза человека. Это позволяет значительно снизить энергопотребление практически без потери визуальной яркости дисплея.
Общее питание было решено брать от порта USB, как наиболее универсального стандарта на данный момент. После непродолжительного гугления я выбрал готовый модуль повышающего DC-DC преобразователя на МТ3608. Он компактный, дешевый (<0.5$), регулируемый, с достаточно высоким КПД — всё что нужно для наших целей. От резервного питания отказался, так как под рукой есть Интернет, где можно получить актуальную информацию в любой момент.
Питание цифровой части обеспечит линейный low-dropout стабилизатор LM1117-3.3, классическое решение для нетребовательных применений.
Теперь по транзисторным ключам.
Для управления индикатором с общим катодом на сегменты нужно подавать плюс питания, общий контакт, катод, подключить к земле. Для данных целей удобно использовать микросхемы источников тока (source drivers IC), как пример UDN2981. На картинке ниже подключение индикатора к драйверу и упрощенная схема одной ячейки для лучшего понимания пути прохождения тока. Стоит заметить, что в классической схеме должны быть токоограничивающие резисторы в цепи каждого сегмента, они упущены по причинам использования другого метода ограничения тока — МАХ7219 имеет изменять скважность управляющих импульсов, что в сумме с возможность регулировки напряжения питания индикаторов даст необходимый результат.
Для индикаторов с общим анодом — наоборот, общий контакт подключается к плюсу питания, а сегменты коммутируются на землю. В плане управления индикаторы с общим анодом более простые, так как не требуют коммутации высокого напряжения, по этой причине они более распространены. Для управления сегментами удобно использовать микросхему-массив составных транзисторов Дарлингтона (Darlington Transistor Arrays), например всеми любимую ULN2803.
Значительным преимуществом перед UDN2981 является стоимость, которая в разы меньше. На картинке ниже подключение индикатора к драйверу и упрощенная схема одной ячейки.
Можно заметить, что верхние части схем очень схожи. Пара драйверов UDN2981 и ULN2803 подобрана неспроста. Относительно ножек вход/выход они pin-to-pin совместимы. Это дает возможность сделать универсальное посадочное место на плате добавив всего несколько перемычек под запайку для ножек питания. Бинго!
Чтобы упростить задачу динамической индикации я решил не изобретать велосипед, не городить 595-е сдвиговые регистры, а взять надежное и проверенное решение — специализированный драйвер семисегментного дисплея MAX7219. Эта микросхема умеет хранить во внутренней памяти до восьми цифр и самостоятельно коммутировать разряды с заранее установленной яркостью. По этой причине и не нужны резисторы последовательно с каждым сегментом. Управляется драйвер по шине SPI. Как по мне, микросхема имеет всего один недостаток — высокую стоимость. Имела. Пришли китайцы и наклепали полный функциональный аналог со стоимостью в несколько центов. Название такое же, правда маркировка отличается, отсутствует оригинальный логотип Maxim. В работе отличий не замечено, временные диаграммы такие же, не греется, отказов пока не было. Но для ответственных применений все-таки рекомендую ставить дорогой оригинал.
Вот такой набор MAX7219-MATRIX-KIT можно купить на Ali и в локальных магазинах для ардуинщиков по цене в четыре раза ниже оригинального драйвера MAX7219. Да-да, вы меня правильно поняли, набор с матрицей, платой и рассыпухой. Дешевле. В четыре раза. Выбор очевиден же?
Пока всё звучит очень хорошо и просто, берём драйвер дисплея, который всё делает за нас, в зависимости от типа индикатора ставим нужные ключи и вуа-ля! Все почти так и есть, кроме одного «но». MAX7219 рассчитан на работу с дисплеями с общим катодом с напряжением сегмента до 5В и никак иначе. Что это дает в сухом остатке? Перебирая разряды индикаторов драйвер подключает их на землю, поддерживая высокий уровень на катодах остальных разрядов. А теперь вернемся к схемам выше и проанализируем, что будет в случае с индикатором с общим анодом.
Нетрудно понять, что мы получим инверсию — нужный разряд будет выключен, все остальные — активные. Вместо динамической индикации на дисплее будет сплошной засвет от соседних разрядов. Чтобы избежать такой ситуации между контроллером и драйвером нужно добавить микросхему инвертирующую логические уровни. Так как максимальное количество разрядов шесть, гуглим «hex inverter» и тут же находим 74hc04. Отлично, а для общего катода вместо микросхемы сделаем перемычки или можно использовать pin-to-pin совместимую микросхему-буфер 74als34/74as34 (hex noninverter, но обязательно с выходом push-pull, открытый коллектор/сток типа 74hc07/74als35 работать не будет из-за отсутствия подтяжки к питанию).
В итоге имеем финальные схемы подключения индикаторов. Для общего катода все просто — драйвер плюс ключи способные подавать на сегменты повышенное напряжение. В даташите на MAX7219 приводится схема подключения индикаторов размера 2.3 дюйма и все это запитано от 5 Вольт, но мои экземпляры наотрез отказались работать при таком низком напряжении, сегмент начинал слабо светиться при подаче 7.2В (1.8В на светодиод). Катоды подключены напрямую к MAX7219, контроллер может прокачивать через себя от 320мА на каждый канал (>45мА на сегмент), чего с головой достаточно для данных типоразмеров индикаторов.
Для общего анода все немного сложнее. Тут уже нужно использовать разнотипные ключи для верхнего и для нижнего плечей плюс инвертирующий буфер для управления разрядами. Инвертирование сигналов для сегментов получаем автоматически при использовании ULN2803.
Как видим, со стороны драйвера MAX7219 и управляющего всем этим ESP8266 нет никакой разницы какой именно тип индикатора установлен в модуле, модифицировать прошивку не требуется.
Замечу, что при использовании внешних драйверов встроенное в контроллер ограничение тока сегментов (которое задается резистором на входе Iset) корректно работать не будет, поэтому интенсивность будем регулировать напряжением питания при максимальной скважности от MAX7219. Драйвер позволяет устанавливать интенсивность скважностью встроенного ШИМ генератора от 1/32 до 31/32 с шагом 1/16.
Для управляющей части на ESP8266 ничего выдумывать не нужно, берем типовое включение модуля, заводим линии SPI на MAX7219, UART для прошивки на внешний разъем. Дополнительно решил добавить преобразователь протокола UART в virtual COM port через USB, его устанавливать необязательно, но места на плате предостаточно, пускай будет такая возможность. Как преобразователь я выбрал СН340, как максимально простое и бюджетное решение. В версии чипа СН340G преобразователь даже не требует частотозадающего кварца, он уже встроен в конвертер, а из обвеса всего пара конденсаторов, проще не бывает.
Полная схема в хорошем качестве тут.
Со схемой определились, теперь можно приступать к топологии печатной платы. Как я уже упоминал, все эти заморочки именно через плату. Хотелось заказать партию плат на нормальном производстве под все вышеперечисленные устройства и не дорабатывать их по месту напильником и скальпелем. После непродолжительных размышлений на плате вырисовались аж целых восемь посадочных мест под семисегментные индикаторы:
- По одному для 2.3" и 3" по центру платы — для дисплея с одной цифрой
- По два для 2.3" и 3" — для дисплея с двумя цифрами
- Три для 2.3" — соответственно, для дисплея с тремя цифрами
Такая комбинация позволяет расширить разрядность до шести цифр, а так же комбинируя расположение и размер индикаторов изготовить табло для различных, предположим, настольных игр и, конечно же, часы! На контакты продублированы сигналы управления всеми сегментами и выведены линии подключения 3 и 4 разряда для трехдюймовок, и 4, 5 и 6 разряд для двухдюймовок.
Дополнительно, два оставшихся свободных канала MAX7219 подключены к двум цепочкам дискретных светодиодов, расположенных над и под индикаторами. Их, например, можно будет использовать для фоновой подсветки, так сказать эффект ambilight.
Размер платы выбран таким образом, чтобы она не выходила за края индикаторов. В таком случае можно скомбинировать дисплей с одинаковыми расстояниями между цифрами для бо́льших и 6ти-разрядный для меньших индикаторов.
По углам платы расположены четыре отверстия под болт М3 для крепления модуля к несущей конструкции.
Микросхемы, если это было возможно, выбраны в выводных корпусах DIP, так как вопрос миниатюризации для данного устройства не актуален, а на плате они выглядят уже почти стимпанково, на фоне привычных BGA монстров. Это придает особого шарма, как у ламповых усилителей.
Посадочное место под модуль ESP-07 также pin-to-pin совместимо с модулями ESP-12S/E/F.
Плата проектировалась за два вечера, по этой причине использовался простой принцип разводки как у автороутеров — разделение горизонтальных и вертикальных линий на разные слои. В итоге плата получилась двухсторонняя, несложная и визуально красивая.
Плата была отправлена в производство как раз в канун китайского Весеннего Фестиваля и карантинных мер в КНР. Рассматривал три популярные площадки для изготовления мелкосерийных прототипов — PCBway, Seeed и JLCpcb. На последней стоимость получилась на 20 долларов дешевле (при партии в 20 шт) и значимым плюсом для меня было то, что фабрика не закрывалась на праздничную неделю. Суммарная стоимость составила 44 доллара, с учетом доставки 21$ и купона на скидку -5$. В пересчете на плату — чуть больше 2 долларов за штуку. Несмотря на разгар эпидемии коронавируса, от отправки gerber-ов на фабрику к моменту получения прошел 21 день. Качество плат на высоте.
За время пока в Китае изготавливались платы, в местном рекламном агентстве были заказаны основы из прозрачного акрила, куда можно закрепить платы и светорассеиватель. Теперь можно посмотреть, что получилось из задуманного.
Вот так выглядит вариант платы, запаянной под индикаторы с общим катодом. На фото указаны названия микросхем и обведены перемычки под запайку.
А вот так — под индикаторы с общим анодом.
На фото ниже различные комбинации индикаторов разных размеров. Как вы можете понять, их также можно удвоить, добавив slave-модуль.
Далее осталось только написать скрипт под конкретную реализацию, чем и займемся в следующей части.
Всем спасибо за внимание!
P.S.: Если кто-то заинтересовался проектом — пишите в личку, осталось еще с десяток плат или могу выслать gerber-файлы.
Когда ЭЛТ-мониторы преобладали, в их пользу выдвигали следующий аргумент: несмотря на все усовершенствования, ЖК-дисплеи никогда не превзойдут по качеству изображения трубочные. Они, как и прежде, будут находить применение лишь там, где требуются энергоэффективность и малая толщина [1]. Прошли десятилетия, и теперь мы знаем, правы ли были сторонники этого аргумента. Но сегодня интересно взглянуть на ЖКИ того времени: действительно ли они настолько некачественные? Каково это — смотреть на CSTN-матрицу в 2019 году?
Слева TFT, справа CSTN, оба дисплея из девяностых
До перехода на TFT в портативных компьютерах находили применение самые разные дисплейные технологии. Поначалу применяли такие же ЭЛТ-мониторы, как в настольных компьютерах, только поменьше. Например, в Compaq Portable (1983), IBM 5155 (1984) или Commodore SX-64 (также 1984).
IBM 5155, автор: Soupmeister, лицензия: CC-BY-SA-2.0, отсюда
Таскать такой ПК с собой повсюду было тяжело, совсем другое дело — ноутбук с TN-ЖКИ (twist nematic), например, IBM 5140 (1986), Toshiba T1000 (1987). У этих дисплеев малы контрастность и угол обзора.
Toshiba T1100 с монохромным TN-дисплеем, автор: Johann H. Addicks, лицензия: GFDL, отсюда, ссылка битая, в оригинале тоже
Некоторые производители экспериментировали с газоразрядными матрицами, так увидели свет ноутбуки Toshiba T3200 (1987) и IBM PS/2 P70 (1991). Они обеспечивали высокую контрастность и несколько градаций яркости красно-оранжевого света, но стоили довольно дорого. Наконец, были разработаны STN-ЖКИ (supertwist nematic), как, например, в Электронике МС1504 и его прототипе Toshiba T1100. Контраст получался значительно лучше — от 1:5 до 1:50, а нескольких градаций яркости было достаточно для деловых применений (использовать ноутбук в быту было пока слишком дорого). Но что если пользователь хочет цветное изображение? На этот случай ему предложили две технологии: TFT и CSTN (color supertwist nematic). Первый ноутбук с TFT — NEC PC9801NC — был представлен в 1990 году, качество изображения для тех лет было выше всех похвал, но стоила «такая игрушка» значительно дороже других и так недешёвых портативных компьютеров. Ну а CSTN-дисплей — это просто STN-дисплей, на который наложен светофильтр. Довольно долго в ноутбуках применяли матрицы обоих типов. А в вагонах нью-йоркского метро CSTN-мониторы работают до сих пор.
Один из них, источник: Transit +PLUS
Автору захотелось посмотреть на CSTN-дисплей. Как? Для начала — просто купить старый ноутбук с ним и попользоваться. В нём оказался процессор AMD 5x86-P133. То есть, самое динамичное, что на нём можно запустить — это DOS-игры (да ладно, он и MPEG1 потянет в программе QV — переводчик). Конечно, играть в них здорово, но захотелось посмотреть, как на таком дисплее выглядит, к примеру, YouTube или современная игра — но это невозможно.
В общем, надо как-нибудь добавить к нему VGA- или HDMI-вход — и можно подавать сигнал с чего-нибудь современного. TFT-экраны от ноутбуков так переделывают в мониторы довольно часто. Просто покупают плату, подходящую к матрице — и готово. А можно сделать и свою приставку на ПЛИС, преобразующую VGA- или HDMI-сигнал в поток данных о пикселях.
Когда-то выпускались и платы для превращения в VGA-мониторы CSTN-матриц, но такую уже не найти. Но можно приспособить для этого отладочную плату на ПЛИС ML505.
Готовый результат. Довольно непривычно наблюдать такое на CSTN-дисплее: 16 ГБ ОЗУ.
Начнём с азов. Подобно любым матричным дисплеям, CSTN-дисплей имеет строки и стобцы. Вы светодиодной матрицей от микроконтроллера когда-нибудь управляли? Здесь то же самое, но напряжения — переменные. Нужно подать определённые сигналы как на выбранные, так и на невыбранные строки и столбцы — и пиксель на пересечении выбранных строки и столбца покажет то, что нужно. Форма сигналов получается весьма сложной, значение имеют и среднеквадратическое значение напряжения, и сдвиг фаз между напряжениями на строке и столбце, и смещение… И вот так, пиксель за пикселем, формируется изображение.
К счастью, от ПЛИС не требуется вырабатывать все эти сигналы, да ещё и на таком огромном количестве линий. Всё это проделывает модуль, встроенный в дисплей. Там импульсный преобразователь повышает постоянное напряжение, оно проходит через делитель и повторитель, так получается напряжение смещения. Драйверы строк и столбцов превращают это напряжение в переменное необходимой формы. Всё, что требуется — подать в дисплейный модуль поток данных о состоянии пикселей.
На TFT-ЖКИ с интерфейсом DPI (digital parallel interface) за один такт поступают сразу все данные об одном пикселе. На линии строчной и кадровой синхронизации поступают импульсы после каждых, соответственно, строки и кадра. Пиксели просто непрерывно передаются строка за строкой, кадр за кадром. Если передача полного кадра занимает 1/60 с, значит, частота обновления составляет 60 Гц. Разрядность шины данных равна глубине цвета в битах, обычно 16 (5 бит на красный и синий, 6 на зелёный), 18 (по 6 бит на каждый из цветов), or 24 (по 8 бит на каждый из цветов). LVDS — это то же самое, только биты передаются не параллельно, а последовательно по дифференциальным парам, ну а в MIPI DSI они ещё и объединяются в пакеты. Шина SPI/i80 позволяет передавать контроллеру различные команды, а тот, выполняя их, формирует сигналы для DPI или аналогичного интерфейса. Который, в свою очередь, чем-то напоминает VGA, только данные о яркости каждого из цветов поступают не в аналоговом, а в цифровом виде. Существуют преобразователи VGA в DPI и обратно. Очень удобны платы, позволяющие получать VGA-сигнал от Raspberry Pi, хотя изначально этот компьютер вырабатывает только HDMI и композитное видео.
На дисплейный модуль CSTN-матрицы надо подавать сигналы, очень похожие на подаваемые на TFT-матрицу с интерфейсом DPI. В даташите на SX21V001 [2] показано, как управлять CSTN-дисплеем с разрешением в 640х480:
Тут изображена передача целого кадра. На линию CL1 сигнал поступает после каждой строки, на FLM — после каждого кадра. А ещё там шина данных из 16 линий. Вообще-то, на этом рисунке допущена ошибка: во время передачи первой и второй строк по линиям UD0-UD7 поступают данные Y1 и Y2, а не X1 и X2, а по LD0-LD8 — соответственно, Y241 и Y242. Здесь U и L — это, соответственно, upper и lower, то есть, дисплей состоит из двух матриц разрешением в 640х240, расположенных одна над другой. Вот он, загадочный «dual scan» из старой рекламы ноутбуков, от которого происходит горизонтальная полоса через весь экран. У STN- и CSTN-дисплеев контрастность обратно пропорциональна числу строк, поэтому такое разделение позволяет её увеличить. Но это не единственное, чем они отличаются по способу управления от TFT.
Непонятно, почему горизонтальную ось здесь назвали Y… Но в любом случае, CL2 здесь — линия для подачи тактовых импульсов, переключающих пиксели. Но по шинам UD и LD за один такт передаются не данные об одном многобитном пикселе, как в TFT, а данные сразу о нескольких пикселях по три бита на каждый. Один бит на цвет, три бита на пиксель — всего восемь цветов.
Но как же так? Понятно, что у CSTN-дисплеев количество цветов мало, например, 4096 или 32768, но ведь не 8 же. Оказывается, здесь применяется ШИМ. Светодиодами же так управляют, значит, и пикселями ЖКИ можно. Нужна, например, яркость в 50% — включаем пиксель в чётных кадрах и выключаем в нечётных. Этот способ называют FRC (frame rate control), ну а ШИМом в данном контексте называют управление яркостью пикселей тем же способом, но в пределах не двух или более кадров, а одного. FRC осуществляет внешнее устройство, а ШИМ — микросхемы дисплейного модуля, если там есть поддержка этой функции. Автору неизвестны CSTN-дисплеи с ШИМ, но он предполагает, что таковы матрицы HPA-типа. В любом случае, раз ШИМ недоступен, необходимую глубину цвета можно получить с помощью FRC.
Ценой этого будет мерцание, поэтому в CSTN-дисплеях бывают чудовищные (по сравнению с TFT) частоты кадров. Например, в этом модуле изначально было 120 Гц, а автор разогнал его до 240.
Перед разработчиком возникло сразу несколько трудностей:
— входной сигнал имеет частоту кадров в 60 Гц, её надо удваивать или даже учетверять
— во входном сигнале кадр не делится на верхнюю и нижнюю половины по 640х240 пикселей каждая, а здесь надо разделить
— а ещё нужно реализовать FRC, иначе глубина цвета будет 3 бита на пиксель
Первые два пункта означают, что необходим фреймбуфер, и не простой, а двухпортовый. Ну а третья задача решается при помощи GLDP LUT (grayscale-level display pattern lookup table) [3]. У таблицы поиска два вида входных данных: цвет, который надо отобразить, и состояние счётчика кадров. И один вид выходных данных: те три бита, которые надо подать на субпиксели того или иного пикселя в данный момент. Значит, потребуются следующие узлы:
Первым делом надо заполнить весь экран каким-нибудь цветом. На этой стадии необязательно знать, где находится какой пиксель, достаточно убедиться, что дисплейный модуль подаёт на матрицу сигналы необходимой формы. Код для заливки в ПЛИС — здесь.
Теперь попробуем что-нибудь вывести, и с неполной яркостью в том числе. Нужны такие таблицы поиска для FRC, чтобы минимизировать мерцание. Автор придумал две таблицы, применяемые к пикселям в шахматном порядке. Поэтому каждые два соседних пикселя мерцают несинхронно. Код — здесь.
Итак, показывать изображение мы уже плату «научили», следующее, что потребуется — фреймбуфер. При 640х480 и 5 битах на каждый из цветов его объём составит около 600 килобайт. Немного, но в ПЛИС столько нет. Хорошо, на плате есть ОЗУ типа DDR2 и Xilinx MIG для управления им. Реализованы два FIFO, один на чтение, другой на запись. Арбитр решает, будет ли следующий обмен данными с DDR2 чтением или записью. Буферов два, запись идёт в один, чтение из другого, а при смене кадров они меняются местами. Код арбитра — здесь.
Осталось реализовать видеозахват, в одном из предыдущих проектов автора уже есть похожая наработка, после доработки код преобразователя из VGA в DPI стал таким.
Для автора это третий проект на ПЛИС, было интересно поработать с Xilinx MIG и DDR2, а также с несложным конвейером. Запланирован более качественный FRC с дельта-сигма-модуляцией, а также опыты с более поздними CSTN-панелями, использующими технологию HPA (High Performance Addressing) фирмы Sharp.
Спасибо за внимание!
1. Li, W., & Guo, Q. (2000). Liquid Crystal Display Application Technology. Beijing: Electrical Industry Press.
2. HITACHI (1999). SX21V001-Z4 Customer’s Acceptance Specifications.
3. Hsueh, Y., & Lee, J. (2008). Image improvement method for LCD frame rate controller. 2008 IEEE International Symposium on Consumer Electronics. doi:10.1109/isce.2008.4559534
Для начала, хочу отметить, что дисплеи iphone отличаются по конструкции и технологии формирования изображения от большинства смартфонов, но не кардинально. Принципы, которые работают во всех ЖК-дисплеях, такие же:
- Матрица , состоящая из ЖК-кристаллов подсвечивается при помощи источника света (подсветки)
- Изображение от матрицы проходит через поляризационный фильтр, в результате чего получается изображение, которое воспринимается человеческим зрением.
Если есть желание, прочитайте подробнее о том, из чего состоит экран ноутбука и как происходит его замена, здесь. В телефонных дисплеях тоже самое, только гораздо меньшего размера (размер пикселя — меньше, матрица и подсветка — тоньше).
Теперь я опишу составные части дисплея в порядки их нахождения от поверхности (там где пользователь касается экрана).
Модуль дисплея iphone состоит из следующих элементов:
Символьные индикаторы
Позволяют изменять отображаемую в виде целостных символов информацию. В качестве примера можно привести классические газоразрядные лампы, которые отображают цифры от 0 до 9. Или различные наборы символов, вроде Hz или %. Фактически, такие индикаторы можно рассматривать как объединение в одном модуле нескольких единичных индикаторов. Совсем не обязательно газоразрядных.
Целостный символ это символ, вид которого изменить нельзя. Его можно только включить (отобразить) или выключить. Например, внешний вид цифр газоразрядного индикатора изменить нельзя, но можно изменить отображаемую информацию выключив один символ и включив другой.
Характерной особенностью таких индикаторов является один или несколько общих выводов, которые объединяют отображаемые символы в группы. Например, в газоразрядных цифровых индикаторах общим является анод.
Если общих выводов нет, то индикатор, строго говоря, является просто набором единичных индикаторов, а не символьным индикатором. Хотя о терминологии тут можно и поспорить.
Другой характерной особенностью является то, что отображаемые символы или группы символов объединены семантически или функционально. Так в газоразрядном цифровом индикаторе объединяющим фактором является то, что он отображает все десятичные цифры, которые могут составлять один разряд числа. Панель, отображающая текущий режим работы и состояние магнитофона (воспроизведение, запись, ускоренное воспроизведение, переметка, и т.д) тоже может являться символьным индикатором.
Функциональное (семантическое) объединение отображаемых символов дает возможность задавать отображаемый индикатором символ с помощью "кода состояния", с точки зрения устройства в целом. А это позволяет уменьшить количество соединений между устройством и модулем отображения информации. Но требует установки в модуле отображения дешифраторов.
Во многих случаях на символьных дисплеях может отображаться лишь один символ из набора. Но могут быть и исключения. Например, кратковременная пауза в воспроизведении (для магнитофона) может отображаться одновременно светящимися символами воспроизведения и паузы.
Несколько символьных индикаторов могут быть объединены в символьный дисплей. Пример такого дисплея можно увидеть в электронных часах на газоразрядных лампах.
2. Тонкий слой прозрачного клея.
В большинстве сенсорных телефонов внешнее стекло (или сенсорный экран) клеятся не к корпусу устройства, а непосредственно к матрице (экрану). Это позволяет убрать воздушный зазор между сенсорной панелью и матрицей, плюс, уменьшает толщину устройства в целом.
5. ЖК-дисплей (матрица)
О том, что такое матрица — по ссылке выше. Это 2 пластины между которыми находятся жидкие кристаллы. Под действием электрического тока, кристаллы поворачиваются под определенным углом и пропускают излучение от подсветки.
В ноутбуках и многих других устройствах матрица представляет собой устройство в корпусе которого объединена и подсветка и кристаллы и поляризационный фильтр. В iphone — это все отдельные части, которые крепятся друг у другу.
Технология, по которой изготавливается ЖК дисплеи iphone использует технологию IPS. С той лишь разницей, что это не стандартная IPS, а улучшенная и в apple ей дали название Retina. Многие производители ЖК-экранов развивают свои технологии на основе IPS и называют их по-своему, добавляя некоторые нововведения.
1. Защитное стекло iphone.
Именно по нему вы водите пальцем когда пользуетесь iphon’ом. Оно служит для того, чтобы сенсорная панель и матрица не изнашивались и не могли повредиться в результате удара или падения. Ведь лучше разбить стекло чем более дорогие элементы дисплея.
Стекло в iphone, начиная (если я не ошибаюсь) с 4й версии имеет олеофобное покрытие (лат. олео — масло/жир и фобос — боязнь). Переводя на русский — покрытие на котором не задерживается жир. Иногда говорят, что олеофобное покрытие «отталкивает» жир, но буквально это не совсем так. Жир никуда не улетает от такого покрытия, а просто не въедается и его можно легко удалить обычной безворсовой салфеткой.
Защитное стекло
Самый верхний слой дисплея, с которым взаимодействует пользователь.
Именно от качества стекла и олеофобного покрытия на нем зависят тактильные ощущения пользователя. При работе с iPhone палец просто скользит по поверхности, не прилипает при быстром нажатии и не упирается при резком свайпе.
Очень часто после падения айфона страдает именно стекло. Специалисты сервисных центров могут предлагать замену защитного стекла вместо замены всего дисплея. Процедура не из легких, но запчасти стоят дешевле.
Стекла новых моделей iPhone очень тонкие, изогнуты по периметру и имеют сглаженные края возле кнопки Домой и динамика.
Даже самые лучшие китайские стекла уступают по качеству оригинальным, при их замене чувствуется резкий переход или углубление кнопки, часто после замены начинают сбоить сенсоры на фронтальной поверхности смартфона.
Матрица
Состоит из двух пластин, меду которыми расположены жидкие кристаллы. Под действие тока данные кристаллы начинают пропускать соответствующее излучение подсветки.
Так устроена IPS-матрица, применяемая во всех моделях iPhone кроме нового iPhone X.
Сама система немного доработана специалистами Apple, а позже названа маркетологами Retina.
Единичные индикаторы
Раньше это были в основном разнообразные лампочки: накаливания, неоновые (включая лампы с люминофором).
Сегодня в большинстве случаев это светодиоды.
Причем эти источники света могут подсвечивать какой либо символ. Или могут быть выполнены в виде какого либо символа.
Характерным отличием таких индикаторов является то, что их видимый образ невозможно изменить. Их можно только включить или выключить. Возможность плавной регулировки яркости ситуации не изменяет, так как видимый образ остается неизменным.
К единичным индикаторам относятся и различные мнемонические индикаторы и подсвечиваемые таблички, если отображаемую ими информацию изменить нельзя.
Слой дополнительных сенсоров
Этот слой появился в iPhone начиная с модели iPhone 6s и нужен для распознания силы нажатия на дисплей.
Специальная сетка из конденсаторных плат подключена к источнику питания. Её задача сверхточное измерение расстояния от пальца до матрицы. Программные алгоритмы анализируют информацию с данной сетки и позволяют работать технологии 3D-Touch.
Подсветка
Источник света, который расположен за матрицей. Он отвечает за подсветку кристаллов, чтобы изображение становилось ярким и четким.
Сами по себе кристаллы не светятся, а лишь пропускают свет подсветки через себя.
4. Поляризационная пленка (поляризационный фильтр)
Для чего нужен- видно из картинки. Описывать принцип его действия не буду, слишком много.
Постановка задачи
Что я понимаю под максимальной универсальностью? Спроектировать модуль, с помощью которого или его комбинаций можно создать любой (или практически любой, в разумных пределах) дисплей для отображение информации с использованием этих самых семисегментных индикаторов. В голову приходит сразу с десяток применений — часы, конечно же, куда без них; туда же таймеры, счетчики чего угодно; термометры; табло для разных игр; дисплеи для отображения цифровой информации — курсов валют, индексов бирж и т.п. В общих чертах задача абсолютно тривиальная, но усложняется зоопарком типов индикаторов. В наличии одноразрядные китайские индикаторы с размером цифры 2.3 дюйма (тип FJ23101, четыре светодиода на сегмент) и 3 дюйма (тип CL-30011, пять светодиодов на сегмент), разных цветов и с различным типом подключения — с общим катодом и с общим анодом. Чтобы покрыть использование всех этих типов пришлось посидеть над схемой и разводкой, которая давала бы возможность без изменения топологии печатной платы управлять разными индикаторами. Поискав вечерок в интернете мне не удалось найти универсальных решений или схем, что и стало поводом для написания данной статьи.
По приведенным примерам использования становится понятно, что модуль должен поддерживать различную разрядность, от одной цифры для простых счетчиков событий, до шести для индексов некоторых финансовых бирж. Я решил ограничиться двумя цифрами для большего трехдюймового размера и тремя для меньшего, с возможностью подключения еще одного модуля в виде slave-а.
При выборе управляющей части долго думать не пришлось, выбор сразу пал на готовые модули ESP-07 на контроллере ESP8266 от Espressif. Дешевизна и простота использования этих модулей, возможность легкого подключения к Интернету, обширная комьюнити разработчиков и элементарность программирования этого контроллера отмели все другие варианты.
Слой прозрачного клея
Защитное стекло клеится непосредственно к матрице. Это позволяет убрать воздушную прослойку и уменьшить толщину дисплея.
Качественный клейкий слой не будет искажать цвета, будет препятствовать попаданию пыли под стекло и надежно удержит верхний слой даже при самой активной эксплуатации.
При замене стекла могут использовать низкокачественный клейкий слой, который со временем изменит свой цвет, начнет искажать картинку или пропускать частички пыли.
Читайте также: