Tft lcd 40 pin распиновка. Заведи экран: свой TFT–дисплей
Начался новый семестр. В качестве курсовой работы в институте решил замутить такой вот девайс для вывода графики на дисплей от NOKIA.
Ты конечно понимаешь, мой друг, как можно использовать этот девайс в своих хакерских (и не только) целях. Если выбрать все детальки SMD-шные, то можно получить реально небольшое устройство для вывода на экран с портом RS232. Дисплей использовал: Nokia 6100/6610/7200/7250/3100 в рамке с коннектором.
Такой экран несложно найти в Интернет-магазинах, например www.siruist.ru , www.sparkfun.com или в палатках, где продают запчасти для мобильных телефонов (стоит он 150-200 руб) . Либо просто выдрать дисплей из старого телефона. Но если такой не нашёл - не беда. Изучив эту статью и исходные коды и поразмыслив головой, ты можешь завести дисплеи от Nokia N95 или Sony PSP.
Почему я выбрал такой дисплей – он удобен в пайке. Смотри на скриншоте распиновку.
Как видно, существует коннектор на дисплее к которому тяжело подпаяться (шаг 0.5мм). Поэтому лучше ищите дисплеи с такой распиновкой как здесь.
Распиновка дисплея:
VCC-Digital (3.3V)
VCC-Display (3.3V)
На рисунке вы можете видеть 3 дисплея:
На крайнем левом отсутствуют контакты для удобной пайки (только коннектор). На остальных контакты и коннектор присутствуют. Также важно, что встроенный контроллер у каждого экрана разный. Для этого дисплея существует 2 вида контроллеров:
У каждого контроллера своя система команд и, соответственно, софт для одного из них не будет работать для другого. Народ научился различать эти контроллеры по цвету коннектора: коричневый - Epson S1D15G10, зелёный - PCF8833.
Но это не факт. Я советую прошить микроконтроллер для 2 видов дисплеев и посмотреть результат. К примеру на скриншоте все дисплеи с контроллером PCF8833. Я писал исходный код микроконтроллера для PCF8833, но совершенно не сложно изменить его и для Epson`a!
Ну вроде с трудностями закончили, переходим к нашей схемке:
А остальное всё есть на схеме.
6.5В нам нужно на подсветку (от 6В до 7В = max). Регулируется подстроечным R8. Также ВАЖНО – разделить землю у дисплея (т.е. землю (выводы 8,9 коннектора) напрямую присоединить к входу 2 разъёма источника питания) – это нужно для защиты от помех. Желательно поставить 2 различных преобразователя из 5В в 3.3В – один для питания контроллера и периферии дисплея, второй – для непосредственно дисплея (выходы 1,6 – соответственно коннектора дисплея).
После разбора с железкой и пайкой приступаем к программированию для Atmega.
Открываем WinAVR, создаём проект, будем писать на С. Я отказался от assembler`a потому что код стал реально громоздким.
#include
#include
#include "lcd.h" //
определения для PFC8833
#include "font.h" //
определение шрифта
void sendCMD(byte cmd); //послать команду на PFC8833
void sendData(byte cmd); //
послать байт данных
void InitLCD(void); //
инициализация дисплея
void shiftBits(byte b); //
перестановкой выводов портов эмулируем SPI
void setPixel(byte r,byte g,byte b);
//
пишет в видеопамять дисплея 3 байта (r,g,b) с заданным цветом
…..
void PointXY(int x,int y,byte r,byte g,byte b)
//
рисует точку на экране с координатами x,y и цветом r,g,b
{
sendCMD(CASET); //
column set (po x)
sendData(x);
//
команда CASET – задаёт область рисования по x, от byte1 до byte2
sendData(x); //
у нас byte1=byte2 , так как рисуем точку
sendCMD(PASET); //
page set (po y)
sendData(y); //
аналогично для y
sendData(y);
sendCMD(RAMWR);
setPixel(r,g,b); //пишем в память
}
…
Я привёл только часть кода. Все исходники можно найти в . У данного дисплея – 4096 цветов, следовательно 12 бит на пиксел RRRRGGGGBBBB.
Так же я написал консольную прожку для компа для рисования (исходники также есть в архиве).
В итоге наш девайс способен выводить:
окружность;
прямоугольник (закрашенный/нет);
символ (первой половины ASCII (0x00
изображение (до (132 на 132)).
С символами нет проблем, ты можешь запросто добавить любой шрифт. Давайте взглянем на результаты:
Разберём всё подробно и по пунктам.
Всё это косается современных матриц с LVDS управлением. Начиная с 1999 года производитель наконец то начал стандартизировать свои матрицы и на сегодня мы имеем следущее документы по матрицам.
Последнего стандарта 4.0 от 2007 года я не имею, но всё ясно по последнему доступному документу
1. ЕЕПРОМ НА МАТРИЦЕ
На матрице как правило устанавливают микросхму памяти (еепром) в
которой прописаны характеристики матрицы, т.е. указание ноутбуку, какая
стоит матрица и как с ней работать. Еепром на матрице может стоять, а
может и не стоять (все современные матрицы имеют установленный еепром
согласно стандартизации, а старые матрицы могут еепром не иметь).
Большенство ноутбуков использует еепром матрицы, а в части
ноутбуков матрица выставляется джамперами или перемычками на шлейфах.
Прошу обратить внимание, на то, что на некоторых матрицах, гдее еепром
отсутствует все контакты выводов еепром могут быть подключены на массу
и при подключении такой матрицы в ноутбук, где еепром опрашивается,
возможно повреждение материнской платы, а именно выгорание видеочипа
или канала питания еепром. Если у вас есть матрица без еепрома, то
можно установить в неё еепром с разбитой или неисправной матрицы.
2. КРЕПЛЕНИЕ МАТРИЦ
Даже похожие матрицы могут иметь разницу в креплениях.
17" матирицы
, боковые крепления идентичные, но может возникнуть проблемы с плоскостными креплениями (наличие и отсутствие "ушей" рис. ниже) ,
также как исключение ACER 17xx series, где стоит матрица от настольного
лсд монитора. (Есть несколько вариантов и китайских буков, а так же
какой то ровер, но это мы не рассматриваем)
В случае, если они лишние, как правило, решается их демонтажём.
16" матрицы
, бывают двух типов, HITACHI и SHARP,
15.4" матрицы
боковые крепления идентичные, но может возникнуть проблемы с плоскостными креплениями (наличие и отсутствие "ушей") Исключение составляют 2х ламповые матрицы
15.2" матрицы
выпускались только одной фирмой и уникальны
15" матрицы
standart 1 это A=12,5 B=169,5
standart 2 это A=21,5 B=196,5
(см. рисунок)
Исключения состовляют несколько моделей старых матриц HITACHI, где хоть
и отверстия расположенны согласно стандарту но рамка матрицы заметно
смещена в сторону правого края и в вверх, и несколько моделей старых
китайских производителей того же типа, что и hitachi
14" обычные (НЕ широкоформатные матрицы)
Существует 2 основных типа с креплениями находящимися в разных
местах, тоесть расстояние от края до первого отверстия это обозначим А
, а от первого отверстия до второго В
14 standart 1 это A=15 B=69
standart 2 это A и B имеют другие значения, нет под рукой.
(см. рисунок)
Исключения состовляют несколько моделей старых матриц HITACHI, где хоть
и отверстия расположенны согласно стандарту но рамка матрицы заметно
смещена в сторону правого края и в вверх
Так же исключения составляют матрицы предназначеные под тачскрин, крепления совершенно другие даже по форме.
14" WIDE (широкоформатные матрицы)
Существует 2 основных типа с одинаковыми креплениями, но отличающиеся размерами самого экрана. Вот тут внимание, они не взаимозаменяемы
, более того имеют различные размеры, т.е. первый тип шире и ниже, а второй уже и выше. Сам попадал на это не раз.
Как пример:
13.3" обычные (НЕ широкоформатные матрицы)
которые попали под стандартизацию идентичны по креплениям, более старые
имеют столько вариантов, что учитывая древность, даже и не буду тут
упоминать.
13.3" WIDE (широкоформатные матрицы)
имеют идентичные крепления, но иногда различную (хоть и небольшую)
толшину рамки, к примеру в sony ставят гораздо тоньше чем в прочие
аппараты (как пример тонких матриц sharp lq133k1la4a
и ltd133ex2x
)
12.1" обычные (НЕ широкоформатные матрицы)
идентичны по креплениям, исключения составляют матрицы имеющие фронтальные отверстия в виде ушей сбоку.
12.1" WIDE (широкоформатные матрицы)
имеют идентичные крепления
3. РАЗЬЁМ ЛАМПЫ
Разьёмы на лампах могут быть 4 типов (см. рисунок)
разьём A используется практически на всех матрицах
разьём С используется гораздо реже и в основном на ноутбуках toshiba
разьём В используется на очень старых матрицах или матрицах от настольного монитора
разьём D используется очень редко на экзотических матрицах
4. РАЗЬЁМ ПОДКЛЮЧЕНИЯ МАТРИЦЫ
Наиболее часто используемые в матрицах разьёмы для подключения на рисунках ниже.
Обычный 20и пиновый разьём ставится на матрицах старого образца, так же как и 14 пиновый, который используется очень редко.
20и пиновый разьём slim, он же гребёнка, уже экзотика и встречается, как правило на старых аппаратах.
Повсеместно сейчас используют 30и пиновые разьёмы на матрицах от 14" до
20" дюймов и 20и пиновые new standart на матрицах меньше 14 и дюймов,
которые заявленны в современной стандартизации.
Стандартный разьём 20pin
Стандартный разьём 30pin
Стандартный разьём 14pin
Разьём pin slim он же гребёнка
ПИН | 30 PIN 1LVDS | 30 PIN 2LVDS | 20PIN STANDART | 20PIN STANDART + EEPROM | 14PIN STANDART | 20PIN NEW STANDART вар. А | 20PIN NEW STANDART вар. В
|
||||
1 | Ground | Ground | Pover suppli , 3,3V | Pover suppli , 3,3V | Pover suppli , 3,3V | Ground | Pover suppli , 3,3V
|
||||
2 | Pover suppli , 3,3V | Pover suppli , 3,3V | Pover suppli , 3,3V | Pover suppli , 3,3V | Pover suppli , 3,3V | Pover suppli , 3,3V | Pover suppli , 3,3V
|
||||
3 | Pover suppli , 3,3V | Pover suppli , 3,3V | Ground | Ground | Ground | Pover suppli , 3,3V | Ground
|
||||
4 | DDS 3V POVER | DDS 3V POVER | Ground | Ground | Ground | DDS 3V POVER | Ground
|
||||
5 | Reserved for LCD supplier test point | - LVDS differential data input, R0 - R5, G0 | - LVDS differential data input, R0 - R5, G0 | Reserved for LCD supplier test point | - LVDS differential data input, R0 - R5, G0
|
||||||
6 | DDC Clock | DDC Clock | + LVDS differential data input, R0 - R5, G0 | + LVDS differential data input, R0 - R5, G0 | DDC Clock | + LVDS differential data input, R0 - R5, G0
|
|||||
7 | DDC Data | DDC Data | Ground | Ground | DDC Data | Ground | |||||
8 | - LVDS differential data input, R0 - R5, G0 | - LVDS differential data input, R0 - R5, G0 | - LVDS differential data input, G1 - G5, B0 - B1 | - LVDS differential data input, G1 - G5, B0 - B1 | - LVDS differential data input, R0 - R5, G0 | - LVDS differential data input, G1 - G5, B0 - B1
|
|||||
9 | + LVDS differential data input, R0 - R5, G0 | + LVDS differential data input, R0 - R5, G0 | + LVDS differential data input, G1 - G5, B0 - B1 | + LVDS differential data input, G1 - G5, B0 - B1 | + LVDS differential data input, R0 - R5, G0 | + LVDS differential data input, G1 - G5, B0 - B1 | |||||
10 | Ground | Ground | Ground | Ground | Ground | Ground
|
|||||
11 | - LVDS differential data input, G1 - G5, B0 - B1 | - LVDS differential data input, G1 - G5, B0 - B1 | - LVDS differential data input, B2 - B5, HS/VS/DE | - LVDS differential data input, B2 - B5, HS/VS/DE | - LVDS differential data input, G1 - G5, B0 - B1 | - LVDS differential data input, B2 - B5, HS/VS/DE
|
|||||
12 | + LVDS differential data input, G1 - G5, B0 - B1 | + LVDS differential data input, G1 - G5, B0 - B1 | + LVDS differential data input, B2 - B5, HS/VS/DE | + LVDS differential data input, B2 - B5, HS/VS/DE | + LVDS differential data input, G1 - G5, B0 - B1 | + LVDS differential data input, B2 - B5, HS/VS/DE
|
|||||
13 | Ground | Ground | Ground | Ground | Ground | Ground | Ground
|
||||
14 | - LVDS differential data input, B2 - B5, HS/VS/DE | - LVDS differential data input, B2 - B5, HS/VS/DE | - LVDS differential clock input | - LVDS differential clock input | Ground | - LVDS differential data input, B2 - B5, HS/VS/DE | - LVDS differential clock input
|
||||
15 | + LVDS differential data input, B2 - B5, HS/VS/DE | + LVDS differential data input, B2 - B5, HS/VS/DE | +LVDS differential clock input | +LVDS differential clock input | _ | + LVDS differential data input, B2 - B5, HS/VS/DE | +LVDS differential clock input
|
||||
16 | Ground | Ground | Ground | Ground | _ | Ground | Ground
|
||||
17 | - LVDS differential clock input | - LVDS differential clock input | _ | DDS 3V POVER | _ | - LVDS differential clock input | DDS 3V POVER
|
||||
18 | +LVDS differential clock input | +LVDS differential clock input | _ | Reserved for LCD supplier test point | _ | +LVDS differential clock input | Reserved for LCD supplier test point
|
||||
19 | Ground | Ground | Ground | DDC Clock | _ | Ground | DDC Clock | ||||
20 | _ | - LVDS differential data input, even pixels, R0 - R5, G0 | Ground | DDC Data | _ | Ground | DDC Data
|
||||
21 | _ | + LVDS differential data input, even pixels, R0 - R5, G0 | _ | _ | _ | _ | _
|
||||
22 | Ground | Ground | _ | _ | _ | _ | _
|
||||
23 | _ | - LVDS differential data input, even pixels, G1 - G5, B0 - B1 | _ | _ | _ | _ | _
|
||||
24 | _ | + LVDS differential data input, even pixels, G1 - G5, B0 - B1 | _ | _ | _ | _ | _
|
||||
25 | Ground | Ground | _ | _ | _ | _ | _
|
||||
26 | _ | - LVDS differential data input, even pixels, B2 - B5, HS/VS/DE | _ | _ | _ | _ | _
|
||||
27 | _ | + LVDS differential data input, even pixels, B2 - B5, HS/VS/DE | _ | _ | _ | _ | _
|
||||
28 | Ground | Ground | _ | _ | _ | _ | _
|
||||
29 | _ | - LVDS differential clock input, even pixels | _ | _ | _ | _ | _
|
||||
30 | _ | + LVDS differential clock input, even pixels | _ | _ | _ | _ |
Рис. 2. |
1 . О назначении первого вывода я могу лишь строить предположения. Возможно, он сигнализирует о физическом присутствии LCD в системе. Во всяком случае, без него можно обойтись.
2
3 . Питание +2.8V
4 . Выбор кристалла. Активный уровень - низкий. Его полноценное задействование имеет смысл в том случае, если шина данных используется более чем для одного устройства. В простейшем случае достаточно подать на него константу - логический "0".
5 . Обязательно должен быть подключен и программно доступен. Этот сигнал принимает разные уровни в зависимости от того, что записывается в LCD: команда (0) или данные (1). Здесь можно запутаться. Дело в том, что в концепции разработчиков микросхемы вместо понятия "команда" используется понятие записи в "индексный регистр". Это почти то же самое, но с указанием на архитектуру кристалла. Индексный регистр является указателем адреса того регистра, куда будут записываться данные. Иначе говоря, команда - это номер в адресном пространстве регистров, предназначенных для записи данных. В качестве данных могут быть как настройки режимов, так и графическая информация.
6 . Строб записи. Активный уровень низкий. Подключать обязательно. Когда записываемая информация на шине данных сформирована, этот сигнал должен быть переведен в активное состояние и обратно. При этом происходит запись информации в LCD.
7 . Строб чтения. Активный уровень низкий. Можно не использовать, подав на него константу - логическую единицу. Нужен только в том случае, если предполагается читать что-либо из LCD.
8
9,10,11,12 . Выводы сенсорной панели, которой нет.
13 . Общий анод светодиодов подсветки. Соответственно, подключается к плюсу источника питания подсветки.
14,15,16,17 . Катоды светодиодов подсветки. Подключаются к минусу источника питания подсветки. Причем, вместе их лучше не соединять из-за разброса параметров светодиодов.
18 . На этот вывод лучше подать константу, а вот какую - это дело личных предпочтений. Я решил подать логическую единицу. Нет, не от того, что к единицам больше тяготею, чем к нулям. Дело в том, что при этом возможности данного дисплея раскрываются по-максимуму. Надо отметить, что разработчики очень "постарались" с разрядностью шины данных и внутренних регистров. Так вот, подав логическую единицу на этот вход, мы получим аж 9-разрядную шину данных и максимальный набор цветовых и яркостных градаций. При нуле на этом входе становится ненужным вывод 19 (DB9), а шина данных превращается в 8-разрядную.
19...27 . Шина данных DB9...DB17. Без нее не обойтись.
28 . Аппаратный сброс. Активный уровень - низкий. Он нужен, но в самом простом случае к нему можно подключить даже обычную кнопку с подтягивающим резистором.
29 . Питание +2.5...3.3 V.
30 . Питание +2.8V.
31 . Подключается к общему проводу.
32 . Этот вывод сделан для красоты. Подключения не требует.
Для связи с компьютером использован простенький конвертер USB-RS232TTL на микросхеме PL-2303. Вовсе не обязательно применять именно такой конвертер, но у этого есть свои преимущества. Главное из них заключается в отсутствии необходимости подключать дополнительное питание. Все питающие напряжения можно получить прямо от этого модуля. Кроме обычного для USB напряжения +5V, данный модуль имеет выход +3.3V. Зачем создателям микросхемы PL-2303 понадобилось утруждаться формированием этого напряжения, я не очень понимаю. Казалось бы, питание подключенных к модулю устройств - не их забота, но раз такое напряжение уже сформировано, было бы грех этим не воспользоваться. С помощью диода VD1 и резистора R29 напряжение 3.3V снижается примерно до 2.8V и используется для питания LCD. В качестве VD1 подойдет любой кремниевый диод.
Микросхемы DD2 и DD3 питаются напряжением 5V, которое также снимается с модуля преобразователя интерфейса. С помощью этой же цепи питания формируется ток питания светодиодов подсветки. Величина этого тока ограничивается резисторами R30...R33. Соединять катоды светодиодов подсветки между собой не рекомендуется.
На резисторах R3...R26 собраны делители напряжения. Они нужны для понижения уровня логической "1" сигналов, поступающих с выходов микросхем DD2, DD3 на входы LCD. Если этого не сделать, на входах LCD будет появляться напряжение логической "1", значительно превышающее напряжение питания LCD, что недопустимо.
Эмуляция интерфейса LCD выполняется путем последовательного наполнения сдвиговых регистров DD2 и DD3. Благодаря наличию в этих микросхемах дополнительного регистра хранения, процесс их наполнения не меняет состояние выходов до тех пор, пока не будет подан сигнал параллельной загрузки на выводы 12. Это позволяет управлять логическим уровнем любого разряда на выходах Q0...Q7 указанных микросхем, оставляя неизменными состояния остальных выходов.
Для наполнения сдвиговых регистров (74595) на вывод 14 микросхемы DD2 последовательно подаются вводимые данные, начиная со старшего разряда. Сдвиг выполняется положительным фронтом синхроимпульса на выводах 11 обеих микросхем. По окончании наполнения регистров на выводы 12 микросхем DD2 и DD3 подается импульс логической единицы, по фронту которого происходит одновременное (параллельное) отображение накопленных последовательным способом данных на выходах регистров. Передача сдвигаемых данных от DD2 к DD3 выполняется при помощи вывода 9 микросхемы DD2, который отражает состояние старшего разряда сдвигового регистра, минуя параллельный регистр хранения. В общей сложности для управления сдвиговыми регистрами как описано выше требуется три сигнала: данные, сдвиговый синхроимпульс и синхроимпульс параллельного вывода.
Указанные сигналы формируются программно на выходах DTR, RTS и TXD конвертера USB-RS232TTL. Сигналы DTR, RTS и TXD в данном случае используются нестандартно, но никакого "криминала" в этом нет, и, как показывает опыт, такой метод достаточно надежен. Задействованный в данной схеме конвертер не имеет удобно выведенных выходов DTR и RTS, поэтому пришлось прорезать окно в термоусадочной оболочке и припаять проводники напрямую к выводам микросхемы PL-2303. У данной микросхемы на выводе 1 формируется сигнал TXD, на выводе 2 - DTR, на выводе 3 - RTS. Но такой метод получения доступа к необходимым сигналам подойдет не всем - пайка мелкая. Расстояние между первым и четырнадцатым выводами микросхемы PL-2303 составляет всего 8,8 мм. Можно пойти другим путем - применить конвертер USB-RS232TTL в виде шнура-переходника. Тогда все необходимые сигналы можно снять с обычного разъема, как у COM-порта. Питание схемы в этом случае придется организовывать другим способом. При замене конвертера USB-RS232TTL на другую модель необходимо учитывать возможность инвертирования (или его отсутствия) некоторых сигналов в зависимости от модели конвертера. Нет никаких требований по инвертированию, которые влияли бы на выбор конвертера. Нужно лишь иметь в виду, что может потребоваться внести соответствующую поправку в программу (в самом начале скрипта, где описаны настроечные константы).
В цепи питания 5 В и 2,8 В полезно добавить конденсаторы емкостью 0,1...1 мкф, чтобы снизить вероятность сбоя из-за помех по питанию.
3. Программная часть
Аппаратная часть подключения данного LCD не содержит в себе ничего особенного, если не обращать внимания на девятиразрядность шины данных, что, впрочем, не страшно. А вот с точки зрения программирования данного дисплея можно сказать, что его создатели намудрили основательно: все внутренние регистры считаются 18-разрядными (даже индексный, использующий всего 7 разрядов), запись из-за этого всегда выполняется двумя операциями (сначала - старшие 9 бит, затем - 9 младших), инструкции в то же время 16-разрядные (что вызывает особый "перекос" с 18-разрядным внутренним регистром записи), а графические данные используют все 18 бит при условии, что шина данных работает в 9-разрядном режиме. Причем три элементарных цветовых пикселя в одной триаде передаются также за две операции записи: сначала 6 бит красного и 3 старших бита зеленого, затем 3 младших бита зеленого и 6 бит синего. Ко всему в придачу алгоритм инициализации придуман как будто с расчетом "чтобы враги не догадались" - для запуска данного LCD требуется обилие замысловатых настроек и команд.
Рис. 4. Каждый из этих симпатичных квадратиков нарисован на фоне цветового шума при помощи следующего алгоритма:
|
С учетом вышесказанного, рассматриваемый LCD трудно назвать простым для программирования. Делаю такой вывод, имея возможность сравнивать: в прошлом довелось "поиграться" с похожим экранчиком, имеющим также разрешение 240x320 и такую же диагональ. Но тот LCD удалось запустить в буквальном смысле голыми руками - схема подключения состояла только из батареек (питание), проводов, кнопок и не содержала никаких микросхем! Шина данных там была 8-разрядная. Каждая запись в LCD состояла из одной операции записи. Элементарные цветовые пиксели кодировались каждый своим целым байтом. Команды для инициализации приходилось набирать перемычками. Всего команд для запуска дисплея нужно было штуки три и это было не трудно. И все получилось! С описываемым в данной статье LCD такой фокус бы не прошел.
Рассмотрим основные принципы программирования LCD. Сигнал аппаратного сброса (вывод 28 LCD) может быть полностью аппаратным, или же, как в нашем случае, - программно управляемым. Работа с LCD начинается с подачи активного логического уровня на вход сброса, после чего данный сигнал возвращается в неактивное состояние. Далее программное взаимодействие с LCD состоит из операций записи в него и чтения из него. В самом простом случае можно обойтись только операциями записи. Так и сделано в рассматриваемом примере.
Теперь подробнее об особенностях данного LCD, которые необходимо учитывать при его программировании. Прежде всего необходимо знать, что запись любой информации в данный LCD выполняется в два этапа. Это позволяет передать 18 бит через 9-разрядную шину данных. Никаких специальных переключателей, позволяющих отличить первую половину данных от второй, не предусмотрено. "Склеивание" 18-разрядного слова происходит внутри дисплея автоматически. Нужно лишь соблюдать последовательность - первыми идут старшие биты, затем - младшие. Далее, чтобы избежать путаницы, будем называть такую двойную запись полным циклом записи (ПЦЗ).
Различают передачу в LCD команд и данных. Аппаратно эти два вида ПЦЗ четко разделены при помощи сигнала "RS" (вывод 5 дисплея). Данные тоже различаются: в зависимости от ранее переданной команды это могут быть установки режимов и настроек, либо отображаемые на экране графические данные. Во втором случае данные можно передавать многократно, не повторяя ввод команды, - внутренний счетчик адреса LCD после каждого ПЦЗ автоматически увеличивается на единицу, что выглядит на экране, как переход к следующей RGB-триаде элементарных пикселей.
Что бы мы ни пытались сообщить дисплею, первым всегда идет ПЦЗ команды. По-другому это еще называют записью в индексный регистр. Код, который мы заносим в этот регистр по сути является номером одного из регистров, предназначенных для приема данных. Это значит, что заполняя индексный регистр (передавая команду), мы сообщаем тому или иному регистру данных, что последующая запись данных будет производиться в него. После ПЦЗ команды выполняется один или множество ПЦЗ данных. LCD различает запись данных и запись команд с помощью своего 5-го вывода (RS), устанавливаемого в состояние логического нуля при записи команд, и в состояние логической единицы - при записи данных. Вот, собственно, и все, что касается общего подхода к программированию LCD, но есть свои особенности в распределении разрядов 18-разрядного слова внутри ПЦЗ.
Возьмем, к примеру, ПЦЗ в индексный регистр. Этот регистр в действительности использует всего 7 бит. Обратите внимание на рисунок, показывающий соответствие между передаваемой информацией и записываемой в регистр.
Данные для той или иной команды являются 16-разрядными (кроме графических). На следующем рисунке показано, как передаваемые за один ПЦЗ 18 разрядов "упаковываются" в 16-разрядный регистр данных.
И, наконец, передача в LCD одного полного RGB-пикселя (триады) также не лишена особенностей. Данные одной триады передаются за один ПЦЗ. На рисунке показано кодирование триады (18 бит = 6 бит "R" + 6 бит "G" + 6 бит "B").
Желающие могут . Написана она в виде скрипта (файл "Тест LCD 240RGBx320.pms" в папке "PMS"), для исполнения которого требуется интерпретатор, входящий в состав программы "Перпетуум М". также можно по прямой ссылке. Таким образом должно получиться два архивных файла. Установка программного обеспечения сводится лишь к созданию новой папки на жестком диске и распаковке в нее содержимого обоих архивов. После этого можно запускать файл perpetuum.exe
Программа (скрипт) содержит функции эмуляции интерфейса LCD, алгоритм инициализации дисплея и тесты, два из которых заполняют экран черными и белыми полями, а третий выводит картинку. Просматривать и изменять данную программу можно с помощью обычного текстового редактора. Перед первым запуском программы уточните в диспетчере устройств Windows имя используемого порта и, при необходимости, внесите соответствующую поправку в текст скрипта (строка: "ИмяПорта="COM4";" - вместо цифры 4 может стоять другая цифра). Также при использовании другой модели конвертера USB-RS232TTL может потребоваться изменение настроек инвертирования сигналов (строки скрипта, начинающиеся со слова "Высокий"). Проверить инвертирование сигналов конвертером USB-RS232TTL можно с помощью одного из примеров, содержащегося в инструкции к программе "Перпетуум М" (раздел функций для работы с портом).
Здесь также можно найти . Эта таблица поможет разобраться в режимах и настройках дисплея.
Кроме PL-2303 существуют и другие микросхемы, на которых создаются конвертеры интерфейса, подобные использованному в данной разработке. Читайте описание ещё одного преобразователя и о его доработке до полноценного USB-RS232TTL.
Доброго времени суток! Сегодня я вам расскажу как при помощи одной посылочки из Китая и хлама который валяется у вас дома сделать телевизор , ну или по крайней мере монитор . Дело в том, что у многих, наверное, валяются еще древние ноутбуки, какие-то испорченные мониторы, нерабочие планшеты и все это можно пустить в ход. Ну да отдельно матрицу подключить нельзя, но с помощью нехитрого устройства, а именно универсального скалера , можно подключить любую матрицу к HDMI , VGA или даже сделать телевизор.
И так, что мы имеем.
Я заказал себе довольно такой продвинутый скалер.
И попался под руку вот такой планшет, он еще живой хотя уже и битый сенсор, батарея не так хорошо держит, весь поцарапанный, но матрицу из него можно позаимствовать.
Разбираем планшет, чтоб получить доступ к матрице.
Отключаем все шлейфы и отбрасываем в сторону все, кроме матрицы.
Матрицы имеют довольно стандартное подключение , в них интерфейс LVDS и стандартизированный ряд разъёмов . Какой разъем у вашей матрицы можете посмотреть по внешнему виду либо же по даташиту . На каждый тип матрицы существует отдельный шлейф. Например у меня есть несколько шлейфов.
1 – это более старый стандарт, там где матрицы еще были с ламповой подсветкой.
2 – более новый стандарт, там где LED-матрицы идут.
3 – эти разъёмы встречаются в 7 дюймовых планшетах и разных небольших.
С другой стороны разъёмы более-менее стандартизированы и подходят в практически любой универсальный скалер.
Таким скалером я еще ни разу не пользовался в этом гораздо больше функций по сравнению с теми, что я использовал, даже пульт в комплекте .
Прежде чем подключать матрицу необходимо правильно сконфигурировать плату (скалер), чтоб не испортить матрицу. Обязательно рекомендую сначала скачать даташит к матрице, чтоб вы знали, какое разрешение матрицы, какое питание логики и подсветки.
Первое с чего стоит начать, будем смотреть слева на право. На скелере есть ряд перемычек, левая верхняя конфигурирует напряжение логики , его необходимо выбрать исходя из вашей матрицы. Как правило, матрицы ноутбуков имеют питание 3.3 вольта, в обычных мониторах 5 вольт, но здесь еще есть перемычка на 12 вольт, честно говоря, я не знаю, где такое напряжение используется. Сразу меняем эту перемычку, чтобы не спалить нашу матрицу, в моем случае логика 3.3 вольта.
Дольше идет следующий набор перемычек, это выставляется разрешение экрана. Хочу заметить, что помимо разрешения экрана еще меняется битность. На обратной стороне скалера есть шпаргалка, в которой написано разрешение и битность. Битность бывает 6-bit и 8-bit, визуально разъёмы 6-ти и 8-ми битные различаются по количеству контактов. Информацию какой битности ваша матрица опять же читаем в даташите.
Прежде чем переходить к матрице необходимо изучить даташит, его очень легко найти по наклейке, которая находится сзади матрицы. В моем случае это «LP101WX1 ». В даташите на матрицу нас интересуют 3 или 4 пункта, в зависимости от того это LED-матрица или это матрица с лампой с холодным катодом. Прежде всего, определим какое разрешение матрицы, просто листаем даташит и ищем эту запись. Здесь у нас в таблице указан формат пикселей (Pixel Fotmat) то есть это 1280×800, соответственно перемычками на сайлере необходимо выбрать это разрешение. Ширина интерфейса соответствует количеству цветов, в данном случае это 6-bit или 262 144 цветов. Этих двух параметров нам достаточно чтоб выбрать правильный режим работы матрицы.
Но для того чтобы матрица выжила нам еще нужно выставить правильное напряжение , листаем дальше. И вот у нас сводная таблица электрических характеристик. Logic, то есть питание логики, напряжение питания логики (Power Supply Input Voltage) от 3,0 до 3,6 вольт, типичное 3,3 вольта, соответственно перемычку питания матрицы выставляем на 3.3 вольта.
И на всякий случай смотрим подсветку, этот пункт нужно смотреть только в том случает если матрица с LED подсветкой. Как написано на плате, плата питается от 12 вольт, а наша подсветка работает от 5 до 21 вольта, 12 как раз будет в самый раз. Я других матриц не встречал у которых напряжение питания 5 вольт, но предполагаю, что такое может быть, если будете использовать матрицу из какого ни будь маленького планшета. Поэтому вот этот параметр обязательно смотрите, иначе можете просто испортить подсветку матрицы. Если же питание будет отличное от 12 вольт, то напрямую подключать разъем питание подсветки нельзя, нужно будет обеспечить нужное напряжение питания.
И так, настраиваем скалер в соответствии с данными из даташита. Меня интересует разрешение 1280×800 и 6-bit, для этого ставлю перемычки F и G
Перемычки сконфигурировали, теперь давайте пройдемся по элементам на плате.
1 — первые два разъема это питание
2 – последовательный порт
3 – DC-DC преобразователь
4 – линейный стабилизатор
5 – разъемы (VGA, HDMI, RCA, звук и высокочастотное подключение антенны)
6 – управление подсветкой
7 – кнопки и всякое управление
8 – разъем LVDS, куда подключается матрица
9 — память
10 – процессор
11 – усилитель мощности
12 – TV-тюнер
Подробнее о разъёмах
Разъем управления подсветкой.
Если у вас LED-матрица , то есть светодиодная, то заморачиваться не стоит, у вас прямо в матрице установлен контролер управления подсветкой и этот разъем входит прямо в шлейф. Т.е. Просто подключаете матрицу и больше не над чем заморачиваться не нужно.
Если же матрица древняя на , определить это можно по дополнительным проводам выходящим из матрицы.
В матрице могут быть установлены такие лампы и из нее выходят провода. В ноутбуках обычно выходит 1 провод, в матрице монитора 2 или 4. Для того чтобы подключить такую матрицу можно использовать универсальный инвертор для подсветки . Он бывает на 1, 2 и 4 выхода, т.е. каждый выход это подключение одной лампы. Инвертор нужно подбирать по количеству ламп в вашей матрице, то есть нельзя подключить в инвертор с 4-мя выходами только 2 лампы, так как инвертер уйдет в защиту, потому что все выходы должны быть равномерно нагружены. Поэтому если матрица на 2 лампы, покупаем инвертор на 2 выхода, если на 1 лампу, покупаем на 1 выход. Разъемы унифицированы поэтому подходят сразу 1 в 1, просто вот так втыкаются и все.
Приступим к подключению
Для этого нам нужен шлейф, он легко втыкается, перемычки на плате уже сконфигурированы. LVDS выравниваем по первой ножке , на шлейфе это маркировка в виде пятна краски, а на плате треугольник — это первая ножка.
На всякий случай проверяем, подходит ли подсветка. Красный – плюс, черный – минус и единственный провод это включение подсветки. Переворачиваем плату на обратную сторону и сравниваем надписи возле контактов с проводами, если все сходится подключаем.
Еще нам нужно какое ни будь управление. Кстати подробнее об управлении, колодка, куда я подключил ИК-приемник это управление. Сюда идут кнопки, они все подписаны, кнопки можно приобрести отдельно или подключить свои.
В принципе это все, все что нужно подключили.
Переворачиваем матрицу и подключаем питание. Если вы собираетесь подключаться к компьютеру, то можно взять питание с БП компьютера. Включаем…
Теперь необходимо разобраться с пультом, чтоб найти меню и поменять язык. Думаю этот процесс описывать не стоит, так как у вашего скалера все может быть по другому. К сожалению, у себя я нашел только английский, но не беда, буду пользоваться ним. И на этой же вкладке настроек я нашел размер меню и увеличил его, чтоб все было лучше видно.
Ну что, попробуем подключить камеру через HDMI. В общем подключив камеру получилось, что полутона цветов отображались неправильно.
Я сначала подумал что сгорел буфер опорных напряжений в матрице, но подключив матрицу к планшету понял, что с матрицей все в порядке, она не сгорела. Покопавшись на просторах интернета, нашел сервисное меню. Оказывается нужно в сервисном меню изменить способ работы скалера с матрицей. Для этого заходим в меню и набираем код 8896, и нам открывается сервисное меню. В меню находим системные настройки (System setting) -> Настройки панели (Panel setting) -> и просто изменяем цветовую схему (Color set). Перебирая все варианты находим самый оптимальный, для меня это был 3. В других моделях скалеров может быть другой код доступа в сервисное меню и немного другой путь к настройкам цветовой схемы.
Выходим из меню и видим, что все цвета отображаются правильно.
Таким же способом можно подключить матрицу от почти любого планшета или монитора.