118

Делаем монитор своими руками

Серия Хобби

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

Наш монитор, в общем то, состоит из:
- Матрицы (непосредственно превращающей электрический сигнал в световой)
- Схемы управления (содержит задающий генератор, устройство синхронизации, дешифратор, видеобуфер).

Давайте начнём с матрицы. Возьмём для примера LED-матрицу 8 на 8 пикселей. Вот она:

При разрешении всего лишь 8 на 8, в данной матрице, не много ни мало, 64 светодиода - и 128 проводов! Их необходимо адресовать (соединить). Благо, разработчики всё продумали - вертикальные и горизонтальные ряды можно объединить в линейку, сократив общее количество проводов до 16 штук. При этом, мы не теряем возможность зажечь каждый светодиод по отдельности. Вот, как это выглядит:

А для создания платы управления монитора, возьмём ещё несколько деталей:

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

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

Для синхронизации вводится микросхема "синхронный счётчик", выполненный на отечественной микросхеме К555ИЕ5. Каждый такт генератора он добавляет +1 к своему численному значению. Давайте настроим и проверим данный счетчик:

Как можно видеть, светодиод стробирующего сигнала (в правом верхнем углу) мигает, а в нашей схеме в такт ему происходит счет от 1 до 8, пока что в двоичной системе. В конце счет сбрасывается, и всё начинается по кругу. Таким образом реализуется "прочёс" экрана, за каждый такт - сдвиг на 1 линейку.

Теперь, данный сигнал необходимо расшифровать. Нам поможет микросхема К555ИД7, дешифрующая сигнал из линий (синие светодиоды), в сигнал из 8 линий, который мы подключим к нашей матрице. Смотрим, как она работает:

Мы собрали типичную схему "бегущие огни". Здесь осуществляется "прочёс" светодиодов по кругу. Тот, который соответствует текущей цифре на счетчике, выключается. Теперь давайте попробуем подключить данную линию к нашей матрице, и посмотреть, что получится:

Мы сделали горизонтальную синхронизацию. К слову, в компьютерных мониторах и телевизорах синхронизация тоже очень важна - обычно, для неё выделяется отдельный провод. Так как тактовые генераторы в источнике видеосигнала и мониторе изначально не согласованы, данный сигнал (H-SYNC или CLK) и позволяет отследить, с какого момента и с какой скоростью начать прочёс, чтобы изображение не было сдвинуто или сжато/растянуто.

Давайте я продемонстрирую вам, каким образом будет происходить пиксельная развёртка:

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

Осталось сформировать вертикальный сигнал. Давайте установим видеобуфер. Пока в качестве него вместо ОЗУ у меня будет ПЗУ (такая большая микросхема, т.к. других не было, но задействуем мы всего лишь первые 8 байт от неё). Эти 8 байт - наша экранная память (кадр), в которой хранится изображение. Это при том, что уровня яркости всего лишь два, и дисплей "монохромный" -не содержит цветов. Двоичный выход со счетчика дублируется, и подается на адресные входы ПЗУ. Давайте соберём, и посмотрим, как будет себя вести наше устройство:

Я ускоряю частоту тактового генератора, и таким образом, изображение становится "статичным" - оно по-прежнему построчно мерцает, но глазу и камере этого уже не заметно. В ПЗУ был записан какой-то мусор. Но картинка стабильна с течением времени, пиксели не мерцают, значит, схема собрана верно. Давайте попробуем нарисовать какой-нибудь кадр, и вывести его на монитор.

Данная картинка (bmp) 1-бит - конвертируется в набор HEX-значений. Вот он:

3C 42 91 85 85 91 42 3C

Это и будет наш кадр. Теперь давайте пропишем его в наш импровизированный "видеобуфер". Для этого я воспользуюсь китайской платой Mega 2560 и самодельным переходником под память.

К слову, с программированием данного ПЗУ тоже не всё так просто. Сначала, нужно передать код разблокировки ПЗУ, а лишь затем, информацию. Это тема для отдельного поста. Вот, что по итогу получается:

Как можно видеть, наш код успешно внесён в ПЗУ. Давайте попробуем запустить:

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

Всем спасибо за внимание, с вами был Kekovsky, 2023 г.

IT минувших дней

1.2K постов7.5K подписчика

Правила сообщества

Запрещается добавлять новости о прошлогодних новинках, а также посты, не относящиеся к тематике "ретро в ИТ".

Желательно соблюдать правила приличия.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества