Контроллер дисплея своими руками

Добавил пользователь Владимир З.
Обновлено: 19.09.2024


Контроллер YAM_TOUCH_I2C_SIMPLE предназначен для подключения по USB емкостных тачей со встроенным I2C контроллером от:
— FocalTech FT5206/FT5302/FT5306/FT5406/FT5606
— GOODIX GT801/GT811/GT911/GT927x/GT928
— Synaptics S7300B
— VTL CT360/CT363
— Atmel MXT1386
— Ilitek ILI2511

YAM_TOUCH_I2C_SIMPLE так-же может являться и внутрисхемным программатором контроллера дисплея на чипе RTD2660H/RTD2662.

Контроллер поддерживает до 5 одновременных касаний.

Работает на андроид устройствах, имеющих поддержку тачпанели от Cypress, они, как правило уже вкомпилены в ядро.
Под windows7 и выше не требуется никаких драйверов.
Обновление ПО контроллера производится путем нажатия кнопки на плате и подключения к компьютеру.
Для YAM_TOUCH_I2C_SIMPLE обновление ПО производится с помощью оболочки под windows.

Тестовая программа проверки мультитача под windows.

Под 6 пиновые разъемы с шагом 0.5мм и стандартной распиновкой.
Или любые другие разъемы, для этого на плате предусмотрены точки для пайки шлейфа или для установки разъема.
Размеры платы: 27x40mm
новая версия платы V5:



Для подключения любых нестандартных шлейфов на 6pin предусмотрен переходник:


Рабочие тестовые тачпанели:
первая — 9" 233x141 габариты, 199x112 активная область
вторая — 7" 187x112 габариты, 155x87 активная область
третья — 10.1" 248x150 габариты, 224x127 активная область
четвертая — 7" 166x104 габариты, 156x90 активная область
пятая от Chalk-а — 7" 162x108 габариты, 154x96 активная область
шестая FPC-TP070323(M742S)-01 — 7" 165x98 габариты, 154x89 активная область
седьмая MCF-101-1093-V3 от Lenovo Yoga B8000 — 10" 259x161 габариты, 218x136 активная область
восьмая AD-C-800033-1-FPC от Newsmy — 8" 191x121 габариты, 174.5x105 активная область
девятая YDT1387-A2 — 8" 192x116 габариты, 180x103 активная область (под ZJ080NA-08A)
десятая TOPSUN M1003 — 10.1" 251x155 габариты, 223x125 активная область
одиннадцатая от Acer Iconia Tab A500 — 10.1" 255x158 габариты, 217x136 активная область

Добавлена поддержка емкостных тачей от магнитол с 5-ю кнопками слева:



К сожалению под андроидом кнопки слева по USB не работают, необходимо использовать приложение Serial Manager и любой UART конвертор.
Видео по программированию сенсорных кнопок ниже.

ВНИМАНИЕ:
на некоторых тачпанелях вместо сигнала RST выведен WUP (WAKE) и они не работают, необходимо просто выпаять R10 — он отмечен на фото.

Видео работы под андроид тв-бокс

Видео работы с планшетом на windows 8.1

Видео работы с планшетом на windows 8.1 и тачем на GT911

Видео проверки работы на GT928

Видео проверки работы на FT5606

Видео работы на PIPO X8 обновленном до windows 10

Видео работы на мультитач панели от Teclast X98 Air II на GOODIX GT9271

Видео работы с мультитачем PIPO Max-M9 на CT363 чипе от VTL

Видео работы с GT801 на 8" таче AD-C-800033-1-FPC

Видео работы с мультитачем от Acer Iconia Tab A500 на MXT1386 чипе от Atmel

Программирование сенсорных кнопок на мультитач панелях

Софт:
— Графическая оболочка для обновления ПО YAM_TOUCH_I2C_SIMPLE_UPDATE_V0102.zip
— Прошивки с поддержкой 5, 2 и 1 касания для всех панелей (1 касание для старых версий андроида и windows XP) touchi2csimple.zip
— Прошивки с поддержкой 5, 2 и 1 касания для панелей от магнитол на GT911 touchi2csimple_gt911_head_unit.zip
— IDC файл чтобы не было курсора для прошивки с поддержкой 1 касания. Файл Vendor_ffff_Product_0101.zip (после распаковки) положить в /system/usr/idc и выставить права 644

Программирование:
— Описание калибровки SETUP.pdf
— Режим работы под windows8 и далее: нажать кнопку, дождаться 4-го зажигания светодиода, отпустить кнопку.
— Режим работы в андроиде и под windows7: нажать кнопку, дождаться 5-го зажигания светодиода, отпустить кнопку.
— Сброс параметров в состояние по умолчанию: нажать кнопку, дождаться 9-го зажигания светодиода, отпустить кнопку.

Обновление ПО:
— Отключить контроллер от USB;
— Нажать кнопку на плате;
— Держа кнопку подключить USB.
— Далее через ПО оболочки загрузить нужную прошивку.

Параметры по умолчанию:
— режим работы в андроиде

Внутрисхемный программатор контроллера дисплея на чипе RTD2660H/RTD2662


Прошивка и оболочка программатора YAM_RTDPROG.zip
Подключение к контактам за FPC разъемом (см. фото контроллера):
1 — GND
2 — SDA
3 — SCL

Видео по обновлению ПО контроллера:

Видео перепрошивки контроллера дисплея:

ОПИСАНИЕ

Захотелось мне сделать RGB свет для видео из китайских компонентов. RGB – значит нужен ШИМ контроллер, значит нужно его сделать! Вот и сделал: GyverRGB – контроллер для RGB светодиодных лент со множеством режимов и настроек, модульной структурой и различными способами управления.

Железо

Используется обыкновенная RGB светодиодная лента с общим анодом (контакты 12V G R B). Я использовал два ряда ленты с плотностью 120 диодов на метр, чтобы иметь хороший запас по яркости даже на одном цвете.

blank

В проекте используется Arduino NANO (микроконтроллер ATmega328p). В качестве 100% совместимого аналога можно использовать Arduino UNO/Pro Mini.

Я рассматривал два варианта драйвера для светодиодной ленты: китайский RGB LED amplifier и самодельный драйвер из трёх МОСФЕТ (полевых) транзисторов. LED amplifier очень удобен в подключении, но имеет жуткий недостаток: на высоких частотах у него поднимается нижний порог яркости, что приводит к трате оттенков и вообще некорректной работе режимов.

blank

Полевой транзистор подойдёт практически любой (99%), наковырять можно из материнской платы. Список популярных МОСФЕТов в корпусе to-220: IRF3205, IRF3704ZPBF, IRLB8743PBF, IRL2203NPBF, IRLB8748PBF, IRL8113PBF, IRL3803PBF, IRLB3813PBF (в порядке роста стоимости). Список популярных МОСФЕТов в корпусе D-pak: STD17NF03LT4, IRLR024NPBF, IRLR024NPBF, IRLR8726PBF, IRFR1205PBF, IRFR4105PBF, IRLR7807ZPBF, IRFR024NPBF, IRLR7821TRPBF, STD60N3LH5, IRLR3103TRPBF, IRLR8113TRPBF, IRLR8256PBF, IRLR2905ZPBF, IRLR2905PBF (в порядке роста стоимости).

Управление контроллером предусмотрено тремя способами:

  • Энкодер – китайский модуль в двух вариантах
  • ИК пульт – продаётся вместе с приёмником-модулем, но удобнее монтировать отдельный приёмник
  • Кнопка – обычная нормально-разомкнутая тактовая кнопка
  • Bluetooth – управление с приложения GyverRGB для Android

Делаем монитор и телевизор из старого планшета при помощи скалера LVDS

Доброго времени суток! Сегодня я вам расскажу как при помощи одной посылочки из Китая и хлама который валяется у вас дома сделать телевизор, ну или по крайней мере монитор. Дело в том, что у многих, наверное, валяются еще древние ноутбуки, какие-то испорченные мониторы, нерабочие планшеты и все это можно пустить в ход. Ну да отдельно матрицу подключить нельзя, но с помощью нехитрого устройства, а именно универсального скалера, можно подключить любую матрицу к HDMI, VGA или даже сделать телевизор.

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

Я заказал себе довольно такой продвинутый скалер.

Делаем монитор и телевизор из старого планшета при помощи скалера LVDS

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

Планшет

Разбираем планшет, чтоб получить доступ к матрице.

Разборка

Отключаем все шлейфы и отбрасываем в сторону все, кроме матрицы.

Отключаем

Матрицы имеют довольно стандартное подключение, в них интерфейс LVDS и стандартизированный ряд разъёмов. Какой разъем у вашей матрицы можете посмотреть по внешнему виду либо же по даташиту. На каждый тип матрицы существует отдельный шлейф. Например у меня есть несколько шлейфов.

Более старый стандарт, от матриц с ламповой подсветкой

Более старый стандарт, от матриц с ламповой подсветкой

Более новый стандарт, от матриц с светодиодной подсветкой

Более новый стандарт, от матриц с светодиодной подсветкой

Шлейф для более мелких планшетов

Шлейф для более мелких планшетов

1 – это более старый стандарт, там где матрицы еще были с ламповой подсветкой.

2 – более новый стандарт, там где LED-матрицы идут.

3 – эти разъёмы встречаются в 7 дюймовых планшетах и разных небольших.

С другой стороны разъёмы более-менее стандартизированы и подходят в практически любой универсальный скалер.

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

Скалер

Прежде чем подключать матрицу необходимо правильно сконфигурировать плату (скалер), чтоб не испортить матрицу. Обязательно рекомендую сначала скачать даташит к матрице, чтоб вы знали, какое разрешение матрицы, какое питание логики и подсветки.

Первое с чего стоит начать, будем смотреть слева на право. На скелере есть ряд перемычек, левая верхняя конфигурирует напряжение логики, его необходимо выбрать исходя из вашей матрицы. Как правило, матрицы ноутбуков имеют питание 3.3 вольта, в обычных мониторах 5 вольт, но здесь еще есть перемычка на 12 вольт, честно говоря, я не знаю, где такое напряжение используется. Сразу меняем эту перемычку, чтобы не спалить нашу матрицу, в моем случае логика 3.3 вольта.

Перемычка

6 и 8 битные шлейфы

Шпаргалка по переключению перемычек

Таблица

Но для того чтобы матрица выжила нам еще нужно выставить правильное напряжение, листаем дальше. И вот у нас сводная таблица электрических характеристик. 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, куда подключается матрица

11 – усилитель мощности

13 – USB-разъем, фильмы он читать не умеет, он здесь для обновления прошивки

Подробнее о разъёмах

Разъем управления подсветкой.

Если у вас LED-матрица, то есть светодиодная, то заморачиваться не стоит, у вас прямо в матрице установлен контролер управления подсветкой и этот разъем входит прямо в шлейф. Т.е. Просто подключаете матрицу и больше не над чем заморачиваться не нужно.

Если же матрица древняя на CCFL-лампах, определить это можно по дополнительным проводам выходящим из матрицы.

CCFL-лампа

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

Подключение инвертора подсветки к скалеру

Подключение инвертора подсветки к скалеру

Подключение инвертора подсветки к лампам

Подключение инвертора подсветки к лампам

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

Для этого нам нужен шлейф, он легко втыкается, перемычки на плате уже сконфигурированы. LVDS выравниваем по первой ножке, на шлейфе это маркировка в виде пятна краски, а на плате треугольник — это первая ножка.

Подключение

На всякий случай проверяем, подходит ли подсветка. Красный – плюс, черный – минус и единственный провод это включение подсветки. Переворачиваем плату на обратную сторону и сравниваем надписи возле контактов с проводами, если все сходится подключаем.

Подключение

Еще нам нужно какое ни будь управление. Кстати подробнее об управлении, колодка, куда я подключил ИК-приемник это управление. Сюда идут кнопки, они все подписаны, кнопки можно приобрести отдельно или подключить свои.

Подключение

В принципе это все, все что нужно подключили.

Переворачиваем матрицу и подключаем питание. Если вы собираетесь подключаться к компьютеру, то можно взять питание с БП компьютера. Включаем…

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

Меню

Ну что, попробуем подключить камеру через HDMI. В общем подключив камеру получилось, что полутона цветов отображались неправильно.

Неправильное

Я сначала подумал что сгорел буфер опорных напряжений в матрице, но подключив матрицу к планшету понял, что с матрицей все в порядке, она не сгорела. Покопавшись на просторах интернета, нашел сервисное меню. Оказывается нужно в сервисном меню изменить способ работы скалера с матрицей. Для этого заходим в меню и набираем код 8896, и нам открывается сервисное меню. В меню находим системные настройки (System setting) -> Настройки панели (Panel setting) -> и просто изменяем цветовую схему (Color set). Перебирая все варианты находим самый оптимальный, для меня это был 3. В других моделях скалеров может быть другой код доступа в сервисное меню и немного другой путь к настройкам цветовой схемы.

Матрица

Выходим из меню и видим, что все цвета отображаются правильно.

Таким же способом можно подключить матрицу от почти любого планшета или монитора.


Сегодня разберёмся что такое ШИМ и с чем его едят, а также как сделать контроллер в домашних условиях.

Что такое ШИМ?

ШИМ (широтно-импульсная модуляция, англ. pulsewidth modulation (PWM)) — это способ управления мощностью путём импульсной подачи питания. Мощность меняется в зависимости от длительности подаваемых импульсов.

ШИМ в современной электронике применяется повсеместно, для регулировки яркости подсветки вашего смартфона, скорости вращения кулера в компьютере, для управления моторами квадрокоптера или гироскутера. Cписок можно продолжать бесконечно.

В любительской электронике ШИМ контроллеры часто используются для управления яркостью светодиодных лент и для управления мощными двигателями постоянного тока.

Принцип работы ШИМ

В отличии от линейных систем, где мощность регулируется путём снижения электрических параметров (тока или напряжения), при использовании ШИМ мощность, передаваемая потребителю, регулируется временем импульсов, что существенно повышает эффективность работы контроллера. В аналоговых системах остаточная мощность рассеивалась в виде тепла, здесь же при снижении потребления остаточная мощность просто не используется.

Основная характеристика ШИМ – СКВАЖНОСТЬ (процент заполнения) – процентное соотношение длительности импульсов к периоду. На рисунке ниже изображено 5 степеней скважности прямоугольного ШИМ сигнала:


Скважность ШИМ

ПЕРИОД — это время за которое происходит полный цикл колебания сигнала. Измеряется в секундах. Он линейно зависит от частоты сигнала и рассчитывается по формуле:

f(частота) = 1/ T(перод)

Частота ШИМ – это количество периодов (или если хотите, циклов колебаний) в единицу времени. Частота измеряется в Герцах (Гц), 1 Гц это одно колебание в 1 секунду.

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

Откуда берётся ШИМ

Вариант 1 — аналоговый

ШИМ сигнал создаётся специально сконструированными устройствами – генераторами ШИМ сигнала или генераторами прямоугольных импульсов. Они могут быть собраны как на аналоговой базе, так и на основе микроконтроллеров, как в виде схемы из нескольких транзисторов, так и в виде интегральной микросхемы.

Самый простой вариант это микросхема NE555, собирается всё по схеме:


Схема ШИМ генератора на NE555

Но если лень разбираться и паять, то китайцы за нас всё уже давно сделали.


ШИМ генератор на NE555

Стоит $0,5, работает стабильно при питании от 5 до 16 вольт. Выдаёт ШИМ сигнал амплитудой в 5 вольт, скважность можно менять подстроечным резистором (вон та синяя штуковина с вырезом под отвертку). При желании можно заменить подстроечный резистор на переменный и получим удобную ручку регулировки.

Вариант 2 – цифровой

Более сложный для новичка – использование микроконтроллера, но вместе с тем более интересный и дающий широкие возможности. Звучит страшно, но самом деле реализуется довольно просто.

В качестве микроконтроллера удобнее всего взять отладочную плату ардуино.

Как с ней работать написано вот здесь. Подключаем ардуинку к компьютеру и заливаем в неё вот такой наисложнейший код:

Далее цепляемся осциллографом к пину D3 и видим:


ШИМ скважность 30%

Сигнал частотой (Freq) -526 Гц, амплитудой (Vmax)- 5 вольт и скважностью (duty) – 30.9 %.

Меняем скважность в коде — меняется и скважность на выходе. Добавляем датчик температуры или освещённости, прописываем зависимость скважности на выходе от показаний датчиков и — готова регулировка с обратной связью.

Как подключить к нагрузке

Напрямую генератор ШИМ сигнала к нагрузке подключать не следует, потому как он слаботочный и скорее все сразу же сгорит. Для того, чтобы управлять нагрузкой необходим ключ на мосфет-транзисторе. Берём N-канальный мосфет-транзистор IRF3205 и собираем всё по схеме:


Ардуино ШИМ на IRF3205

Резистор R1 нужен для защиты пина ардуинки от выгорания, а резистор R2 для того, чтобы транзистор полностью закрывался, когда ардуина не даёт выходного сигнала.

Как видно ничего сложного. Четыре элемента и ШИМ-контроллер готов. Он уже может управлять одноцветной светодиодной лентой или каким-нибудь моторчиком.

Если нужна трехцветная лента или больше лент (делаем многоканальный ШИМ), просто добавляем ключи на пины D3, D5, D6, D9, D10, D11 (только на них работает ШИМ). Итого, Ардуина способна управлять мощностью 6-ти устройств одновременно.

IRF3205 способен выдерживать токи до 70 Ампер при напряжении до 55 Вольт, таких характеристик вполне достаточно для решения большинства бытовых задач.

Если нужно управлять плюсовым контактом

В таком случае нам понадобится другой мосфет- транзистор — P-канальный. Схема аналогична, только подтягивающий резистор подключен к плюсу.

Также нужно будет инвертировать сигнал на выходе ардуино, ведь при подаче 5 вольт транзистор будет закрываться, а при 0 — открываться, значит шим скважностью в 30% выдаст 70% мощность на выходе схемы.


ШИМ на irf4905, питание5 v

Стоит оговориться такая схема будет работать только при питании не выше 5 вольт, так как для полного закрытия P-канального транзистора необходимо подтянуть его затвор к плюсу питания, а ардуина способна выдавать на цифровой пин только 5 вольт. Значит, при питании хотя бы чуть-чуть выше напряжения выдаваемого на цифровой пин транзистор будет не полностью закрываться при верхней части импульса ШИМ и БУДЕТ СИЛЬНО ГРЕТЬСЯ. Полностью отключить нагрузку он тоже не сможет.


Ардуино, управление ШИМ по плюсовому проводу IRF4905

Контроллер ШИМ для RGB светодиодной ленты

В качестве примера приведу схему ШИМ контроллера для RGB светодиодной ленты на ардуино. В ней используется трёхканальный ШИМ для управления тремя цветами ленты. Ниже будет ссылка на готовое устройство, собранное на этой схеме управления.


ШИМ контроллер RGB ленты на ардуино

Соединяется всё вот так:


В схеме я добавил ещё кнопку, она нам поможет в будущем переключать цвета и регулировать яркость.

Вот простой код, позволяющий засветить ленту различными цветами. Чтобы изменить цвет подставьте цифры в значения для R, G и B из комментария ниже.

Сегодня мы начнём изучение жидкокристаллического индикатора символьного, который способен выводить определённые символы в две строки по 16 символов в каждую. Изучать мы данный индикатор будем с целью его подключения к микроконтроллеру AVR и управления им.

Выглядит индикатор, с которым мы будем работать вот таким вот образом

image00

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

Вроде и кажется, что 16 контактов — это много, но на самом деле не так уж и много. За счет контроллера HD44780, установленного в модуле, нам не придется подводить по 8 и более контактов к каждому из 32 символов, этим как раз и займётся данный контроллер. Мы лишь только будем давать ему определённые команды и посылать определённые данные. Хотя это также сопряжено с определёнными трудностями программирования данного устройства, но на это и существует урок, чтобы данные трудности как-то преодолеть.

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

Например, модуль компании Winstar на 1 ножке имеет анод, а наш китайский дисплей, который стоит дешевле, в отличие от Winstar, на данной ножке имеет катод.

Поэтому будьте внимательны и читайте документацию на тот именно модуль, который будет у вас.

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

image01

Ну раз уж мы увидели надписи на ножках модуля, давайте тогда разберёмся, какая ножка для чего служит. Пойдём слева направо.

Ножка первая — VSS — это общий провод или "земля"

2 — VDD — питание.

3 — V0 — это ножка, с помощью которой регулируется контрастность дисплея. То есть контрастность дисплея будет зависеть от поданного напряжения на данную ножку. Как правило берётся переменный резистор на 10 килоом, подключенный крайними ножками на общий провод и на питание, а с центральной ножки данного резистора провод идёт как раз на ножку V0 и посредством регулировки движка резистора мы и регулируем контрастность дисплея в модуле.

4 — RS — это такая хитрая ножка, с помощью которой контроллер дисплея будет "знать", какие именно данные нахдятся на шине данных. Если мы подадим на данную ножку логический 0, то значит будет команда, если 1 — то это данные.

5 — RW — данная ножка в зависимости от логического состояния на ней говорит контроллеру дисплея, будем мы с него читать или будем мы в него писать данные. Если будет 0 — то мы в контроллер дисплея будем писать, а если 1 — то будем читать данные из контроллера дисплея. Данная функция используется редко. Как правило мы всегда только пишем данные в дисплей. Чтение обычно требуется для того, чтобы определить, что дисплей принял наши данные, либо чтобы определить состояние. Но существуют определённые тайминги, позволяющие нам на слово "верить" котнроллеру дисплея, что он наши данные принял и обработал. Также читать мы можем из памяти дисплея, что, в принципе, незачем. Поэтому мы обычно соединяем данный контакт с общим проводом.

6 — E — это так называемая стробирующая шина, по спадающему фронту (когда 1 меняется в 0) на которой контроллер дисплея понимает, что именно сейчас наступил момент чтения данных на ножках данных D0 — D7, либо передачи данных из модуля в зависимости также от состояния ножки RW.

Ножки D0 — D7 — это параллельная восьмибитная шина данных, через которую и передаются или принимаются данные. Номера 0 — 7 соответствуют одноименным битам в байте данных. Но также есть ещё 4-битный способ передачи данных в контроллер и из контроллера дисплея, когда используются только ножки данных D4 — D7, а ножки D0 — D3 уже не используются. Как правило такой способ используется в целях экономии ножек порта и именно такой способ мы и будем сегодня использовать, так как мы теряем скорость вдвое, но у нас дисплей символьный и спешить нам некуда. В 4-битном режиме мы передаём или принимаем байт в 2 приёма по половинке, сначала старшую часть байта, затем младшую.

Ножки A и K — это анод и катод для подачи напряжения для питания светодиодной подсветки дисплея. Как правило можно питать от 5 вольт, но желательно поставить токоограничивающий резистор на 100 ом и скорее всего тогда подсветка дисплея "проживёт" дольше. Всё это обычно указывается в технической документации на дисплей.

Также данную информацию мы видим в технической документации на дисплей

image02

Теперь немного ознакомимся, каким образом мы будем организовывать процесс общения с дисплеем. То есть каким образом мы будем этим процессом управлять. Ведь контроллер дисплея не "знает" что именно мы от него хотим. Для этого в даташите существует вот такая таблица, представляющая собой перечень команд и способы их реализации

image03

В самой первой колонке данной таблице находятся сами команды. Следующие 2 колонки — это то, в каком состоянии должны в момент команды находиться ножки RS и RW. Дальнейшие 8 колонок показывают нам состояние ножек шины данных, затем идёт колонка с пояснениями к командам, то есть что именно с помощью данной команды мы достигнем. А затем в последней колонке находятся тайминги или временные интервалы, необходимые для того, чтобы та или иная команда или инструкция выполнилась. Причем оговорено, при какой именно частоте генератора это достигается. То есть, я так понимаю, что в модуле существует генератор, тактирующий работу контроллера дисплея, который настроен на определённую частоту и данная частота может быть разной. Поэтому желательно пробовать сначала с большим интервалом, то есть всё достигается на практике. Поэтому некоторые модули других моделей могут не работать с тем же кодом, который мы в данном уроке напишем. Опять же читайте внимательно техническую документацию именно к своему модулю.

Например, первая команда Clear Display говорит сама за себя. Она очищает дисплей. Вообще за отображение на дисплее у нас отвечает оперативная память DDRAM, также существующая в контрроллере дисплея. Вот данную память как раз и очищает данная команда.

Остальных команд мы коснёмся несколько позднее.

Теперь идём дальше по технической документации. Дальше идёт объяснение каждой команды и назначение каждого бита, представленного в таблице. Мы можем заметить, что в таблице каждый используемый бит как-то называется.

Дальше идёт объяснение процесса инициализации модуля дисплея. Инициализация любого активного устройства — это неотъемлимая часть программирования. Без первичной инициализации не будет работать ни одно устройство.

image04

Мы видим, что всё здесь очень подробно рассказано и показано. Вот эту диаграмму мы и будем использовать, когда будем писать код инициализации дисплея. Опять же требование — 270 кГц частота работы генератора.

Также посмотрим организацию знакомест дисплея в памяти DDRAM. Это нам будет необходимо для написания функции позиционирования

image05

Как мы видим, вторая строка находится в области видиопамяти через некоторый пропуск после первой. Во-первых, существуют дисплеи разной размерности, например у меня ещё есть дисплей 20х4 на том же контроллере, поэтому и пропуск. Также существует определённая команда, которая передвигает видимую часть памяти, это может быть использовано для подготовки символов в невидимой области, а затем путём передвижения невидимую область мы делаем видимой. Нам это пока не требуется. Если потребуется, то мы обязательно с этим разберёмся, ну либо для какого-то красивого скроллинга дисплея также может это потребоваться.

Подобная документация существует также не только на дисплей, а ещё и на контроллер. Я её также в конце статьи обязательно приложу к страничке.

А теперь наконец-то проект.

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

Для протеуса проект мы скопируем как и раньше, переименовав его в Test09, и выбрав путь к прошивке нового проекта, чтобы нам заново не искать контроллер, резисторы и прочие вещи, а также не настраивать контроллер.

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

Скомпилируем код, чтобы у нас была хотя бы какая-то прошивка.

Напишем функцию port_ini(). Под все ножки модуля дисплея мы будем использовать порт D. Так как режим у нас 4-битный, то нам вполне хватит ножек, даже останутся

void port_ini ( void )

PORTD =0x00;

DDRD =0xFF;

Также давайте данную функцию вызовем в функции main()

port_ini (); //Инициализируем порты

Зайдём теперь в проект в протеус и найдем там дисплей в библиотеке компонентов

image06

Подключим его следующим образом

image07

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

Читайте также: