Контроллер для lcd матрицы

Контроллер для lcd матрицы

Всем кто умеет читать привет.
В связи с тем, что в последнее время практически у всех, скопилось много старой ненужной и сломанной техники с ЖК матрицами я и решился написать этот пост, про свой опыт.
Валялась у меня матрица от ноутбука Дел 15.6", решил попробовать сделать из неё монитор для видео наблюдения. Заказал на aliexpress Контроллер LVDS MT561-B V2.1 цена в районе 300 рублей, чтоб не угорать.
Прислали в полном комплекте. Кабель LVDS 30 пинов но поскольку у моей матрицы 1 канал пришлось его перебрать, смотрим схему и не забываем соединять GND я не стал их рисовать на схеме это и так понятно.
Была затыка с контактами 3,4 Контроллера LVDS на плате они помечены как NC что значит, нет контакта.
Перемычку разрешения устанавливаем на "F".
В остальном всё проще пареной репы, работает на пять,

P.S В связи с обращениями форумчан я решил дописать для тех кто не особо понимает но очень хочет.
Не бойтесь писать что не особо понимаете, в этом нет не чего страшного, просто я буду это понимать и не буду сыпать сокращёнными терминами на английском которые для многих тёмный лес, а буду объяснять на нормальном гражданском языке
Часто спрашивают что такое BL, это сигнал enable или EN это одно и то же, по русски вкыл, этот сигнал и управляет платой подсветки, то есть этот сигнал включает подсветку монитора или делает экранчик светлым.

Добрый день, хабр. Сегодня я хотел бы поделиться некоторым опытом, касающимся подключения цветных LCD-индикаторов к микроконтроллеру. Эта тема уже поднималась на хабре (http://habrahabr.ru/post/139384/), поэтому данный пост может рассматриваться как дополнение к уже написанному моими уважаемыми коллегами.

Читайте также:  Масло для смазки дверных петель

В посте, на который приведена ссылка в начале, рассматриваются LCD-индикаторы, подключаемые с помощью интерфейса SPI. Такой способ подключения является простым, но не единственным. Множество индикаторов имеют «на борту» лишь упрощенный контроллер, не имеющий памяти для хранения изображения, и в силу этого, требующий непрерывного обновления изображения. Такие индикаторы применяются повсеместно в электронных гаджетах, и для их функционирования необходим специальный контроллер LCD, встроенный в микроконтроллер. Примером такого индикатора может служить MI0350CT-3 производства фирмы Multi-Inno Technology. Это достаточно типичный представитель цветных LCD, имеющий разрешение 320*240 и резистивный сенсор.
Итак, у нас появляется некоторая проблема. Пусть каждый пиксел представлен в памяти 32-битным значением (из них используется только 24, но данные выровнены по 4-байтным границам). Итого, под одну видеостраницу нам понадобится 320*240*4 = 307200 байт = 300 кбайт RAM. Не в каждом микроконтроллере есть такое количество памяти. Поэтому, как правило, для работы LCD нужна внешняя память, а значит, и контроллер внешней памяти на кристалле микроконтроллера.
Справедливости ради нужно заметить, что требования к объему памяти можно снизить, если использовать не 24-бита на пиксел, а меньшую глубину цвета, но, с другой стороны, мы можем захотеть разместить в памяти системы несколько видеостраниц, чтобы иметь возможность быстрого переключения между ними. Позже мы вернемся к этой теме.
Для примера рассмотрим подключение LCD к микроконтроллеру LPC2478. Это немного устаревший представитель микроконтроллеров фирмы NXP (на ядре ARM7, а не на современном Cortex M3), но для наших целей это несущественно. Этот микроконтроллер содержит всё необходимое: контроллер внешней памяти (с возможностью подключения как SRAM, так и SDRAM), и контроллер LCD с возможностью очень гибкой настройки.
Для экспериментов я использовал плату SK-MLPC2478 имеющую, помимо микроконтроллера LPC2478, микросхему статической памяти (CMOS SRAM) K6R4008V1D-TI10 объемом 512Kx8 bit. К плате подключен вышеупомянутый индикатор MI0350CT-3.
Есть еще один подводный камень: данный индикатор требует для питания подсветки источник с выходным током 20 мА при напряжении около 20 В. В качестве такого источника можно использовать, например, импульсный повышающий преобразователь, который питается входным напряжением +5В, и питает нагрузку стабилизированным током 20 мА. Если нагрузка не подключена, то преобразователь работает в режиме стабилизации выходного напряжения (U вых = 20 В). Схема преобразователя приведена на рис 1. Принцип действия и расчет повышающего преобразователя здесь рассматриваться не будет, интересующиеся этой темой могут обратиться к документации на микросхему MC34063A.

Читайте также:  Маринад для судака на мангале

Рис. 1. Преобразователь напряжения.

Рассмотрим вкратце подключение и работу LCD такого типа. LCD использует 24 сигнала для информации о цвете, сигнал CLK для пиксельной синхронизации, сигналы HSINK и VSINC для импульсов горизонтальной и вертикальной синхронизации. Помимо этого, индикатор имеет интерфейс SPI для настройки вспомогательных регистров, сигнал #RESET и сигнал DEN (data enable). Интерфейс SPI в данном случае предназначен не для передачи изображения в контроллер дисплея, а для конфигурирования вспомогательных регистров. Эти регистры позволяют выбрать режим работы индикатора, регулировать яркость, контрастность и другие параметры. Однако регистры управления индикатора по умолчанию устанавливаются в нужное нам состояние, и, если мы не собираемся их изменять, сигналы SPI можно просто проигнорировать. Сигнал #RESET можно просто установить в неактивное (единичное) состояние. В дальнейшем он нам не понадобится.
Итак, основными сигналами, необходимыми для работы данного типа индикатора, являются: сигналы данных, несущие информацию о текущем цвете пиксела в формате RGB, сигнал тактирования CLK, сигналы вертикальной и горизонтальной синхронизации, а также сигнал разрешения данных. Рассмотрим временные диаграммы.

Рис. 2. Временная диаграмма передачи данных в LCD.

На рис. 2 показана самая «крупномасштабная» временная диаграмма передачи данных, изображающая передачу данных одной строки изображения. Передача происходит по фронту сигнала CLK, и сопровождается высоким уровнем сигнала разрешения данных DEN. Передача происходит в формате RGB, при этом биты Data0 — Data7 соответствуют синему цвету, Data8 — Data15 — зеленому, Data16-Data23 — красному.
Перед передачей данных строки и после передачи данных вставляются «пустые», не несущие информации импульсы CLK. Передача строки предваряется импульсом горизонтальной синхронизации HSYNC (LCD_LP).
Тактовая частота индикатора составляет 6,4 МГц (её можно уменьшить, но тогда становится заметным мерцание кадров).

Рис. 3. Временная диаграмма передачи кадра в LCD

Временная диаграмма передачи полного кадра в LCD показана на рис. 3. Передача кадра начинается с 13 «пустых» строк, далее следуют 240 строк с изображением, после которых опять идут «пустые» строки. Передача кадра начинается с импульса вертикальной синхронизации.
Также подключим к микроконтроллеру резистивный сенсор. Описание этого подключения будет приведено ниже.
Полную схему подключения индикатора к микроконтроллеру я приводить не буду, в силу ее очевидности, приведу лишь таблицу соответствия выводов индикатора и пинов контроллера.

Таблица 1. Соответствие сигналов LCD и выводов контроллера

Сигнал SK-MLPC2478 (connector X6) LCD pin Порт микроконтроллера Примечание
GND 1 53, 54 земля
+5V 2 не используется
DATA6 3 18 данные
+3.3 V 4 41, 42 питание
LCD CLK IN 5 не используется
DATA 7 6 19 данные
DATA 19 7 31 данные
DATA 18 8 30 данные
DATA 22 9 34 данные
DATA 23 10 35 данные
DATA 20 11 32 данные
DATA 21 12 33 данные
DATA 14 13 26 данные
DATA 15 14 27 данные
DATA 12 15 24 данные
DATA 13 16 25 данные
DATA 11 17 23 данные
DATA 10 18 22 данные
DATA 1 19 13 данные
DATA 0 20 12 данные
DATA 9 21 21 данные
DATA 8 22 20 данные
DATA 17 23 29 данные
DATA 16 24 28 данные
LCD LE 25 не используется
LCD PWR 26 не используется
LCD FP 27 37 Вертикальная синхронизация
LCD CLK 28 38 Тактирование индикатора
LCD LP 29 36 Горизонтальная синхронизация
LCD ENAB 30 52 Разрешение данных
DATA 5 31 17 данные
DATA 4 32 16 данные
DATA 3 33 15 данные
DATA 2 34 14 данные
SPENA 35 43 P0.20 интерфейс SPI, serial port data enable
36 Не используется
#RESET 37 6 P0.19 сброс
38 Не используется
SPCK 39 49 P0.17 интерфейс SPI, serial port clock
SPDA 40 50 P0.18 интерфейс SPI, serial data
YU Connector X7.15 8 AD0/P0.23 Резистивный сенсор
XR Connector X7.13 9 AD1/P0.24 Резистивный сенсор
YD Connector X7.10 10 P0.26 Резистивный сенсор
XL Connector X7.12 11 P0.25 Резистивный сенсор

Собираем макет устройства (рис. 4 — 6):

Рис. 4. Платы макета устройства

Рис. 5. Макет устройства (частично собран)

Рис. 6. Макет устройства в сборе

Теперь, когда всё подключено, можно приступить к написанию кода. Первое, что нужно сделать, это сконфигурировать и протестировать внешнюю SRAM память:

Следует понимать, что быстродействие внешней памяти является важным фактором. В самом деле, поток данных в нашем случае составляет Fclk * N, где Fclk — тактовая частота индикатора, N — количество байт в памяти, отведенных под 1 пиксел. Итого получаем 6.4*10^6 * 4 = 25.6 Мбайт/с. Для памяти с 8-битным интерфейсом это означает максимально допустимое время доступа 39 нс. Требования к быстродействию памяти можно снизить, если использовать память с 16 или 32-битным интерфейсом и/или уменьшить используемую глубину цвета.
Конфигурируем LCD в, выставляя длительности сигналов в соответствии с документацией индикатора:

Теперь записываем в ROM тестовую картинку и копируем ее в RAM:

Рис 7. Тестовая картинка

Картинка записывается в виде массива unsigned int [240][320], и копируется по базовому адресу внешней памяти (0x80000000).
Работа встроенного в микроконтроллер механизма поддержки LCD заключается в том, что данные считываются из RAM контроллером DMA, и подаются на контроллер LCD, где накладывается изображение курсора и данные подаются на вход LCD. Также контроллер LCD может обеспечивать поддержку палитры для режимов от 1 до 8 бит на пиксел. Палитра реализована в микроконтроллере как 256 16-битных регистров и, таким образом, обеспечивает отображение 8-битного цвета в 16-битный (5 бит/цвет + 1 бит общей интенсивности).
Курсор имеет отдельную палитру из двух 32-битных регистров, она обеспечивает отображение монохромного изображения курсора в 24-битное цветовое пространство. Курсор может быть размером 64×64 пиксела либо 32х32 пиксела, и содержит как само изображение курсора, так и маску инверсии изображения.
Теперь можно запустить тестовою программу и посмотреть на результат.

Рис. 8. Результат работы.

Подключение резистивного сенсора

Принцип действия резистивного сенсора широко известен (те, кому он неизвестен, могут ознакомиться с ним, например, здесь http://ru.wikipedia.org/wiki/Сенсорный экран ). Поэтому перейдем сразу к описанию подключения сенсора к микроконтроллеру. В данном устройстве используется сенсор с четырехпроводной схемой подключения. Схема подключения показана на рис. 9.

Рис. 9. Схема подключения резистивного сенсора к микроконтроллеру.

Идея, лежащая в основе такого подключения, состоит в следующем. Каждый вывод микроконтроллера может находиться в одном из следующих состояний: выход с логическим 0, выход с лог. 1, вход (т. е., фактически, неподключенный вывод), и вход, подтянутый к напряжению питания через резистор. Выводы YU и XL могут также служить входами АЦП.
Вся процедура определения координат нажатия может быть условно разделена на три фазы. В первой фазе выводы, к которым подключен сенсор, находятся в следующем состоянии: (рис. 10).

Рис. 10. Определение координат нажатия. Фаза 1.

При замыкании пленок сенсора на вход микроконтроллера поступает сигнал лог. 0, и программа переходит к фазе 2, определению x-координаты нажатия (рис. 11). Затем следует фаза 3, определение y-координаты. (рис. 12).

  • Цена: $22.58 (1480руб на момент покупки)
  • Перейти в магазин

Обзор и колхозинг неплохого монитора из матрицы от ноутбука и сабжа.

Запилинг и допилинг подставки из говна и палок, решение проблем с питанием, и многое другое вас ждет под катом.

Давеча заимел потраха ноутбука hp dv9700.
В свое время ноутбук стоил неплохих денег, компоненты соответственно были хорошего класса/качества.
Мощный на тот момент процессор core 2 duo t8100, 4 гб оперативной памяти и очень бодрая видеокарта — 8600m.
Но к сожалению в ноутбуке помер видеочип, на замену была заказана мать, которая тоже не завелась.
Кроме такого набора из интересного, в ноутбуке был сканер отпечатков пальцев, годная камера (даже сейчас отличное качество, распиновка той самой камеры), ну и конечно дисплей!
Матрица размером в 17 дюймов!
Разрешение конечно не супер, всего 1440х900, но на халяву и уксус сладкий =D

Давно хотел заиметь себе второй монитор, но авито в последнее время не радует, и покупать монитор 8-10 летней давности с разрешением 1024х768 за 2-2,5к деревянных никакого желания нет.
Поэтому я решил сделать полноценный монитор с недавно полученной матрицы, благо китайские магазины изобилуют lvds контроллерами.

Первым делом крышка ноутбука была снята с петель и полностью отделена от основания.
Далее выкручены все болты по периметру матрицы, и снята верхняя крышка.
Матрица была без креплений, поэтому была снята сразу после крышки.
На ее задней стороне были найдены опознавательные знаки, а именно маркировка матрицы — N170C2-L02


После 15 секунд гугления был найден даташит на матрицу, это несомненно радует ибо в нем есть некоторая информация которая нам потребуется в дальнейшем при работе с дисплеем и заказе контроллера. Даташит

Характеристики:
Рабочая зона дисплея 367.2 (H) x 229.5 (V) (17.0” диагональ)
Разрешение :1440х900
Количество отображаемых цветов: 262,144
Покрытие дисплея: Глянцевое
Тип подсветки: 1 CCFL лампа
Напряжение питания матрицы: 3.3в (!)

Важным параметром тут является напряжение питания логики матрицы, в даташите указано максимальное — 4в, это означает что при неправильной настройке lvds контроллера, логику матрицы можно сжечь (у lvds контроллера есть 2 напряжения на выбор — 3,3в и 5в, обычно китайцы не трогают перемычку и по стандарту на матрицу приходит сразу 5в).

Попутно в датаршите была найдена распиновка на lvds матрицы,

Этот момент тоже стоит осветить =)

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

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

Как раз на такой готовый набор вы увидите обзор чуть ниже.

Заказ разместил 4 июля 2016 года. Продавец обработал заказ достаточно быстро и отправил его 7 июля попутно отправив мне фото с тестом контроллера.
Посылку получил с утра 20 июля.

Фото не фейк, прямо на дисплее лежит чек с моим фио и адресом, а так же инфой о заказе.
Посылка кстати отправлена как заказная и любой домочадец с пропиской у вас в квартире ее не получит, только тот кто указан на посылке может ее забрать.

На почте девушка посоветовала вскрыть посылку снимая на видео ибо ее вес был всего 126 грамм, хотя упаковка была достаточно крупной.

Внутри упаковки был огромный пенопластовый бокс в котором в пакетике лежало 3 платы и 3 шлейфа.

  • Сам лвдс контроллер
  • Инвертор питания лампы
  • Плата с клавишами
  • Шлейф lvds
  • Шлейф инвертора
  • Шлейф клавиш

Все упаковано очень аккуратно и качественно, продавцу за это жирный плюс!

Колхозинг монитора начался еще за долго до покупки модуля.
Первым делом я решил запилить подставку (ножку) и прикинуть, как все будет смотреться на рабочем столе.
К сожалению нормальной подставки у меня нет, я конечно нашел ножку от телевизора самсунг но она оказалась на много шире чем монитор
В закромах после ремонта нашел кусок дсп? просверлил отверстие и вкрутил саморез.

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

Сверху на брусок накрутил задную крышку от ноутбука, вот так варварски, на пару саморезов =)

Собрал крышку с матрицей, запитал инвертор ламп от батарей и поставил на стол.
Ну а после того как вид мне понравился устроил я заказал контроллер и принялся ждать =D

После получения я сразу принялся проверять сей девайс.

Подключил все провода и шлейфы, перевел джампер питания матрицы на 3.3v

шлейф лвдс к плате нужно подключать в соответствии с меткой на штекере (точка краской)

Шлейф питания инвертора

Подключение кнопок видно снизу.
Подключать надо начиная с 1 контакта, пустые штырьки в разъеме это нормально, некоторые контроллеры имеют управление через пульт, эти штырьки нужны для ик приемника.

Подключение инвертора
В инвертор надо вставить штекер ламп, на штекере есть метки, это его верхняя часть.
Шлейф питания можно удлинить или укоротить.

Плата с кнопками и их назначения

Подал питания и меня озарил красный свет индикатора питания.
Кроме него я ничего не видел…
Матрица сверкала квадратом малевича 16х9
Нажатие на кнопку питания не давало никакого результата…

Первым делом проверил питание и его просадки, но проблем тут не обнаружилось.
Сигнала активации подсветки матрицы тоже небыло.

Но внезапно иногда подсветка стала включаться! но изображение было просто белым

Проверив все напряжения питания я решил копать.
Матрица питается от 3.3v, во время включения подсветки те самые 3,3в приходили но изображение отсутствовало.
Тут я обратился к фото от продавца, там видно (плохо) что джампер настроен на 5в.
Тут я решил на свой страх и риск поставить его на 5в.
Мигание белой подсветкой сменилось на мигание черного экрана с синей табличкой и надписью на китайском.

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

В один момент черт меня дернул подкинуть источник сигнала, и это была победа!
Ноутбук за 1300$ было жалко поэтому я подключил raspberrypi первого поколения, и тут все заиграло красками!
Светодиод на плате управления загорелся зеленым а экран радостно показал лог загрузки линукса.

После тестирования на работоспособность с ноутбуком я решил налепить всю электронику на задную крышку монитора.

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

Выпаял разъем питания ибо он своими ножками мешал ровно прикрутить контроллер к крышке, а так же не нужен был, ибо я использовал для питания ноутбучный бп.

Оценить статью
Добавить комментарий