Матричный дисплей (MatrixDisplay)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| DevAddr | bus8 | Адрес устройства (0x1C = X, 0x1D = Y, 0x1F = Pixel) |
| DataIn | bus8 | Данные (координата или значение пикселя) |
| WE | bit | Сигнал записи (1 = запись) |
| IO_SEL | bit | Выбор I/O (1 = устройство активно) |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Нет выходных пинов | ||
Логика работы
MatrixDisplay — это экран из клетчатой бумаги: матрица маленьких квадратов, где каждый квадрат — отдельный пиксель. Рисуешь ты так же, как карандашом на разлиновке, только вместо штрихов — записи в порты ввода-вывода. Назови адрес устройства, координату и что рисовать — и точка вспыхнет на экране.
Главное свойство: любой пиксель включается за три записи. Сначала в порт 0xFC уходит координата X (DevAddr = 0x1C), затем в порт 0xFD — координата Y (DevAddr = 0x1D), и наконец в порт 0xFF — значение: 1 включить, 0 выключить (DevAddr = 0x1F). Хочешь поставить точку (7, 3)? Запиши 7, потом 3, потом 1 — по одному байту на шаг, привычными инструкциями STA.
Нюансы: координаты идут от 0 до 15, а точка (0, 0) — левый верхний угол экрана. Пиксель меняется только при активной записи: WE = 1 и IO_SEL = 1. Зато картинка сохраняется между тактами — не нужно перерисовывать экран каждый шаг. Стереть всё можно, лишь записав 0 в каждый пиксель.
Примеры
| Действие | Запись в 0xFC (X) | Запись в 0xFD (Y) | Запись в 0xFF (пиксель) | Результат |
|---|---|---|---|---|
| Зажечь точку (7, 3) | 7 | 3 | 1 | Пиксель в колонке 7, строке 3 |
| Погасить точку (7, 3) | 7 | 3 | 0 | Пиксель погас |
| Зажечь угол (0, 0) | 0 | 0 | 1 | Левый верхний угол |
| Зажечь угол (15, 15) | 15 | 15 | 1 | Правый нижний угол |
Порядок строк в таблице — это и есть протокол: сначала координаты, потом значение. Поменять шаги местами нельзя — дисплей запоминает X и Y по очереди.
Применение
MatrixDisplay — основное графическое устройство компьютера: уровни 24 (ручной пиксель), 27 (работа с портами), 28 (движущаяся точка) и 29 (Змейка). В змейке экран — игровое поле: программа хранит координаты в RAM и попиксельно перерисовывает змейку и еду, а столкновения проверяет сравнением координат.
Конкретный приём — анимация: чтобы точка «поехала», программа гасит старый пиксель (запись 0), сдвигает координату на единицу и зажигает новый (запись 1) — всё это в цикле между тактами. Текст и символы выводятся так же: каждая буква — это набор пикселей, который программа рисует точка за точкой.
Смежные компоненты
Статьи по теме
Частые вопросы
Как зажечь один пиксель?
Записать байт координаты X в порт, байт Y в другой порт и 1 в порт пикселя — всё через инструкции OUT.
Что будет при записи координат вне диапазона 0–15?
Такая запись просто игнорируется: пиксель не изменится. Проверяй границы координат в программе, прежде чем выводить точку.
Как очистить весь экран?
Записать 0 в каждый из 256 пикселей: цикл по Y, вложенный цикл по X, и на каждой итерации — запись нуля в порт пикселя.