alex_avr (alex_avr2) wrote,
alex_avr
alex_avr2

Categories:

Подключаем дисплей из Playboy к микроконтроллеру

Поддавшись общей истерии я таки купил себе несколько плейбоев. Покупал я их исключительно из-за комплектующих. Плеер мне не нужен и даже платка с дисплеем и линуксом мне как-то тоже особо не нужна. А вот перспектива поиметь большие цветные экранчики по 90 рублей мне нравилась. Ведь даже небольшие монохромные экранчики стоят в несколько раз дороже(разве что совсем мелкие телефонные можно найти дешевле 100р), а большие цветные - так вообще заооблачные суммы(в большинстве кстати накрученные).

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



Что вышло из этой затеи и какие нюансы есть - смотрите под катом.



Итак, что же мы имеем.

Гугл довольно быстро выдал нам даташит на этот дисплей: KWH040GP03-F01

-Разрешение 480х272
-Бит на пиксель - 24, то есть 16 миллионов цветов
-Диагональ 4 дюйма

Как видим - вполне неплохие параметры. Поехали дальше, электрические параметры:
-Питание матрицы - 3.0-3.6В, 30мА
-Питание подсветки - ~24В, 20мА, рекомендуется режим постоянного тока.

Ну китайцы тут конечно маху дали, додумались сделать подсветку на напряжение 24 вольта, соединив последовательно 7 светодиодов. Ну ничего, буст прикрутим, не впервой :)

Остальные технические характеристики найдете в даташите, от себя добавлю:
-Угол обзора конечно оставляет желать лучшего. Но бывает и хуже. Для дисплея за 90р очень даже неплохо
-Изображение выглядит слегка "полосатым". В целом ничего страшного, мы же не собираемся на нем фильмы смотреть.
-Дисплей достаточно контрастный и яркий, однако возможности регулировать контраст нет (правда может быть можно поковырять схему на полиамидной пленке).

Теперь что касается интерфейса. Китайские даташиты это конечно что-то с чем-то. Но в целом все очень быстро становится понятно. У дисплея есть параллельный вход, разрядностью 24 бита, соответственно 8 бит на красный, зеленый и синий. Сюда мы будем подавать тот цвет, который мы хотим увидеть. Далее, есть линия стробирования CLK, линия вертикальной и горизонтальной синхронизации, линия DATA ENABLE и глобальное включение/выключение дисплея.

Интерфейс крайне простой - подаем импульс на линию вертикальной синхронизации, это переход в начало экрана. Потом подаем импульсы на линию горизонтальной синхронизации - каждый импульс начало новой строчки. И далее, в масштабах каждой строчки устанавливаем нужный нам цвет на параллельной шине и дергаем вниз CLK. Разумеется все это должно быть в определенных временных рамках, кроме того везде нужно подавать "холостые" импульсы, перед тем как слать цвета реальных пикселей. Все это нарисовано в даташите на временной диаграмме и в табличке с указанием числа импульсов.

Теория хорошо, а практика еще лучше.

В первую очередь озаботимся подключением дисплея. От дисплея идет полиамидный шлейфик. Разъем для него я решил отпаять с родной платы. Как оказалось это одна из самых геморройных операций. Сначала взялся за фен. Долго грел, вроде все прогрел а он не отпаивается. Начал отдирать, кое как отодрал. Как оказалось этот гадский разъемчик приклеен к плате и просто нагреть недостаточно. А когда начинаешь прикладывать усилие, нагретый пластик разумеется деформируется. Далее решил отпаять с еще одной платы просто паяльником. В целом результат получился существенно лучше. Ну и наконец-то третий раз я просто взял резак и срезал этот разъем. Самый эффективный метод. Единственное но - остатки дорожек на разъеме потом долго надо счищать паяльником.

Делаем плату под разъем, по давно отработанной лазерно-утюжной технологией с фольгой. Результат как всегда безупречен :)



Если вы посмотрите на плату, то увидите, что я сделал специальные площадки, по 8 штук, на параллельной шине. Сделаны они для того, чтобы можно было все линии шины запаять вместе. В описываемом примере я запаял их все вместе по 8 штук. Таким образом у меня получилось всего 8 возможных цветов - белый, красный, желтый, зеленый, голубой, синий, фиолетовый, черный. При этом, вместо 24 линий у меня осталось только 3. Вообще разрядность можно менять в широких пределах. На оригинальной плате, кстати, используются не все разряды, а кажется только старшие 6. На своей плате я предусмотрел использование старших 4х разрядов, что даст 4096 цветов.

Запаиваем разъем:



И все остальное:



Затем я прицепил все это дело к валявшейся под рукой макеткой с мегой32, исключительно для теста. За 15 минут была написана программа. Первая версия, написанная без какой либо оптимизации экономии ресурсов обновляла экран примерно за 10 секунд. Выглядело это весьма стремно - как бегущая сверху вниз горизонтальная полоса. Сначала я подумал что где-то в алгоритме косяк и проблемы с синхронизацией, но потом постепенно стало доходить в чем дело. А дело оказалось в том, что встроенный в дисплей контроллер настолько прост и туп, что видимо не содержит даже никакой памяти. Просто выводит на стекло все что в него шлют. Изображение на стекле же в свою очередь практически полностью пропадает примерно за пол секунды. Таким образом, нельзя один раз записать в дисплей картинку, чтобы она осталась там. Делать это надо постоянно и с достаточно большой частотой. В принципе ничего странного в этом нет, но после дисплеев с более продвинутыми контроллерами это было несколько непривычно.



В результате я занялся оптимизацией программы и улучшил скорость ее работы в 20 раз, добившись скорости записи 0.45с. При такой скорости на дисплее уже формируется картинка, однако по ней постоянно "бегает" вертикальный белый градиент. Как это выглядит можете посмотреть на видео:



На этом цель была достигнута - дисплей подключен, алгоритм общения проверен, картинка получена.
Даташит нам говорит что "типикал" частота обновления экрана 60 Гц, что является вполне типичным значением для ЖКИ. В реальности, чтобы мерцание было практически не заметно я думаю хватит герц 20-30. Для таких скоростей уже нужен достаточно производительный контроллер. Скорее всего, когда я соберусь серьезно использовать этот дисплей, попробую реализовать контроллер на STM32F, по идее производительности должно хватить. Кроме того в контроллер заодно можно будет интегрировать шрифты, всякие картинки и прочие графические фишки.

UPD:
Еще интересный момент - линия DATA ENABLE никак не влияет на получаемый результат, хотя в даташите довольно четко нарисовано за что она отвечает. При этом независимо от того, 0 на ней или 1, выводится одно и тоже, причем то что нужно. Мой это баг или китайцев сказать затрудняюсь. Вопрос требует более детального изучения. Надо учитывать что у меня очень простая картинка и если где-то что-то немного уедет то этого можно и не заметить. Предрекая вопросы, скажу что все стробы идут в полном соответствии с колонкой "Typ." в соответствующей таблице(число 41 там кстати несколько странно смотрится).

UPD2:
А вот и даташит на дисплей из PSP: LQ043T3DX02 (спасибо aterentiev)
Если присмотреться, то видно, что наш китайский друг полностью слизан с онного(и скорее всего предназначался как левая запчасть). В этом ДШ упоминается что низкая частота обновления может снизить качество отображения и вызвать мерцание. А еще там отсутствует та самая линия DATA ENABLE и все тайминги прописаны четко, в отличие от китайского.




Tags: Электроника
Subscribe

  • 14 лет под землёй

    Традиционная запись 2 ноября: ровно 14 лет как я осознанно изучаю подземку 🙂 Ну и традиционная фотография. Это самая страшная фотография под землёй,…

  • Снежные Ловозёрские тундры

    В Москве снега до сих пор нет, между тем я ещё больше месяца назад успел по нему накататься, заехав наверх Ловозёрского горного массива, что на…

  • Мониторинг температуры, влажности и давления в бункере

    Недавно реализовал свою маленькую мечту. Кто был в Бункере 703 (а благодаря нему я уже развиртуализовался с многими френдами из ЖЖ) знают, что она из…

promo alex_avr2 july 2, 2018 13:00 41
Buy for 200 tokens
Думаю многие слышали рассказы про огромные бункеры под Москвой, подземные города, секретное метро на случай ядерной войны. Многое в этих рассказах очевидно преувеличено, что-то придумано, но безусловно, основаны они не на пустом месте. Совсем недавно небольшой кусочек этих подземных тайн был…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 33 comments

  • 14 лет под землёй

    Традиционная запись 2 ноября: ровно 14 лет как я осознанно изучаю подземку 🙂 Ну и традиционная фотография. Это самая страшная фотография под землёй,…

  • Снежные Ловозёрские тундры

    В Москве снега до сих пор нет, между тем я ещё больше месяца назад успел по нему накататься, заехав наверх Ловозёрского горного массива, что на…

  • Мониторинг температуры, влажности и давления в бункере

    Недавно реализовал свою маленькую мечту. Кто был в Бункере 703 (а благодаря нему я уже развиртуализовался с многими френдами из ЖЖ) знают, что она из…