ПРОСТОЙ ГРАФИЧЕСКИЙ ДИСПЛЕЙ
Запоминающее устройство на 256 слов по 8 бит позволяет отображать 2048 точек на экране в виде сетки 64x32 элемента. В этом случае знакогенератор не требуется, поскольку каждый бит из памяти прямо отображается без преобразования. Схема такого устройства индикации дана на рис. 10.9. Каждая точка формируется из восьми соседних горизонтальных строчек развертки.
Логика работы ТВ-дисплея довольно проста и может быть без труда реализована даже на такой простой вычислительной машине, как ПМ-ЭВМ. Вся сложность в том, что быстродействие ПМ-ЭВМ, да и многих других машин более высокого класса, недостаточно, чтобы уложиться в жесткие рамки телевизионного стандарта. Выход заключается либо в создании специализированного периферийного процессора — контроллера ЭЛТ, каковыми являются рассмотренные выше устройства (промышленностью выпускается специализированная микросхема КР580ВГ75 - программируемый контроллер ЭЛТ), либо в отступлении от стандарта, если требования к информационной емкости дисплея, как в нашем случае, не велики.
Покажем, что, не используя практически никакой дополнительной аппаратуры, можно реализовать вывод поля памяти объемом 256 байтов (сетка 64x32 элемента) на экран обычного осциллографа. Подключим к ПМ-ЭВМ схему, показанную на рис. 10.10. Здесь порт 000 служит для параллельной выдачи содержимого ячеек памяти. Сдвиговый регистр преобразует параллельный код в последовательный. Сигнал с выхода сдвигового регистра может быть подан непосредственно на вход Z модуляции яркости осциллографа. Порт 001 служит для вывода синхроимпульса строчной развертки Н, а порт 002 — для вывода синхроимпульса кадровой развертки V. Кадровая и строчная развертки могут быть сформированы с помощью простых пассивных цепей непосредственно из соответствующих синхроимпульсов. Выдаваемые портами 000, 001 и 002 сигналы формируются с помощью следующей программы:
014 000 176 Ml: MOV A, M 7 - количество тактов
014 001 323 OUT,OOOQ10 014 002 000
014 003 167 MOV M, А 7
014 004 000 NOP 4
014 005 054 INR L 5
014 006 035 DCRE 5
014 007 302 JNZ,M1 10
014 010 000
014 011 014
Итого: 48 тактов
Рис. 10.9. Схема приставки для формирования графической информации на экране ТВ
Эта часть программы выводит в порт 000 очередной байт из памяти. Команды MOV M, А и NOP вставлены, чтобы получить выраженную в тактах длительность этого фрагмента программы кратной восьми. В итоге получаем 48 тактов. Это значит, что стоящий на выходе сдвиговый регистр должен выдавать очередной разряд числа через каждые 6 тактов, чтобы завершить выдачу всех восьми разрядов за 48 тактов. После восьми циклов прохождения первого фрагмента программы содержимое регистра Е станет равным нулю и начнет исполняться следующий фрагмент программы, предназначенный для выдачи синхроимпульса строчной развертки, здесь же происходит и загрузка регистра Е:
Рис. 10.10. Схема приставки для формирования графической информации на экране осциллографа
014012257 XRAA 4
014013323 OUT.OOOQ 10
014 014 000
014015323 OUT,001Q 10
014016 001
014017036 MVIE, 010Q 7
014 020 010
014 021 000 NOP 4
014 022 000 NOP 4
014 023 000 NOP 4
014 024 000 NOP 4
014 025 000 NOP 4
014 026 000 NOP 4
014 027 000 NOP 4
014 030 000 NOP 4
014031000 NOP 4
014032057 СМА 4
014033323 OUT, 001Q Ю
014 034 001
014035025 DCRD 5
014036302 JNZ,M1 Ю
014037 000
014040014 ---------------
Итого: 56.тактов
Этот фрагмент программы имеет продолжительность 96 тактов, т. е. вдвое больше времени выдачи одного байта из памяти. Следовательно, общая продолжительность цикла строчной развертки составляет 48-8 + 96 = 480 тактов (т. е. 480 мкс). Количество строк определяется числом 32 (040Q), загружаемым в регистр D следующим фрагментом программы:
014041257 XRA, А 4
014042323 OUT, 002Q 10
014 043 002
014 044 026 MVI D, 040Q 7
014 045 040
014046041 LXIH, ADM 10
014 047 000
014050015
014051315 CALLINP 17
014 052 X
014053 Y
014 054 057 СМА 4
014055323 OUT, 002Q 10
014 056 002
014057303 JMP, Ml 10
014 060 000
014061 014
Итого: 72 + время исполнения ПП ввода IMP (3840 тактов)
В этом фрагменте происходит выдача синхроимпульса кадровой развертки и задается адрес начала массива информации, выводимой на дисплей. Отведя на обратный ход луча время, равное четверти длительности прямого хода луча для вертикальной развертки, получим период кадровой развертки, равный 480-32 + 480-8 = 19 200 мкс. Отсюда получаем частоту кадровой развертки, равную примерно 50 Гц, что нас вполне удовлетворяет. В последнем фрагменте программы, длящемся 3840 мкс, предусмотрен вызов ПП ввода информации в ОЗУ с клавиатуры или внешнего устройства для изменения картинки на экране дисплея. Эта ПП должна иметь строго определенную длительность, необходимую для стабильности параметров развертки. Если в этом промежутке времени исполняются другие программы неизвестной длительности, надо организовать систему с внешними прерываниями.