На этой странице я начал описывать развитие компаньон-проекта nano4tv для моего "нанокомпьютера" - "видеокарты" на базе .... естественно, Arduino Nano :-)
Характеристики:
монохромный сигнал;
графическое разрешение - 320 × 224 точки;
символьное разрешение - 28 строк по 64 символа.
Вход - последовательный порт (UART).
Выход - RCA-разъем (композитный монохромный PAL-сигнал)
В проект добавлены элементы 2D-ускорения:
попиксельный и посимвольный скроллинг вверх или вниз;
рисование линий с помощью алгоритма Брезенхема;
планируется добавить:
рисование окружностей;
работа со спрайтами.
Схема устройства:
...
Организация экранной памяти
Данные, отображаемые на экране, хранятся построчно (пиксель изображения соответствует биту данных: 0 - черный, 1 - белый) в виде 224 строк.
Структура строки:
00...1 байт "черного" в начале строки..00 XXXXX...40 байт изображения...XXXXX 00...23 байта "черного" в конце строки..00
(начальный бит изображается в левой части строки экрана).
Таким образом, для хранения всего экрана требуется 224 × 64 = байт (микросхема SPI RAM 23K256 предоставляет 32768 байт памяти).
Регистры видеокарты:
...
Для управления устройством через последовательный порт подаются команды, которые позволяют модифицировать содержимое регистров видеокарты и выполнять ее доступные команды.
Список команд:
символ с кодом от 32 до 255 - отображается на экране;
символ с кодом меньше 32 (кроме 27) - управляющий символ;
символ с кодом 27 (ESC) - префикс команды, после этого символа следуют байты команды:
D <байт> - запись байта в регистр data_reg - регистр данных;
U <байт> - запись байта в регистр x_ch_reg - регистр символьной X-координаты;
V <байт> - запись байта в регистр y_ch_reg - регистр символьной Y-координаты;
X <байт> - запись байта в регистр x_px_hi_reg - регистр старшего байта пиксельной X-координаты;
x <байт> - запись байта в регистр x_px_lo_reg - регистр младшего байта пиксельной X-координаты;
Y <байт> - запись байта в регистр y_px_reg - регистр пиксельной Y-координаты;
...
s - попиксельный скроллинг;
S - посимвольный скроллинг;
F - заливка экрана;
L - рисование линии
...
Экран, заполненный символами шрифта (снимок сделан с помощью ТВ-тюнера):
Видео, демонстрирующее попиксельный (гладкий) и посимвольный (ступенчатый) скроллинг вверх и вниз:
https://youtu.be/-9w_FPTiY3o
Продолжение следует...