ЖУРНАЛ «СТА» №1/2008

Сигнал CS __ (chip select) мы исполь- зовать не будем, так как у нас всего один контроллер и выбирать нам из нескольких не приходится, поэтому вход данного сигнала надо просто замкнуть на «землю». Для формиро- вания сигнала A0 будет использо- ваться выходной сигнал параллель- ного порта AFD (auto feed), сигнала WR ___ — сигнал STB, сигнала RD ___ — сигнал INIT. Для передачи данных D0D7 используются соответствую- щие линии порта D0D7. Система команд контроллера предо- ставляет пользователю широкий вы- бор возможностей для реализации его замыслов по отображению данных. Вместе с тем она проста и довольно легка в изучении. Список команд при- веден в табл. 4. Приводить полную расшифровку системы команд пред- ставляется нецелесообразным, заинте- ресованные читатели могут её найти в «Руководстве пользователя контролле- ра SED1335». Как видно из табл. 4, типичная команда управления состоит из байта управления и следующих за ней байтов данных. Так, команда SYSTEM SET (команда конфигурации системы) со- стоит из управляющего байта и восьми байтов данных. Отметим также, что за- пись управляющего слова производит- ся при сигнале A0 (AFD), равном логи- ческой единице, а запись данных — при A0, равном логическому нулю. В данной ситуации мы также не рассмат- риваем подробно саму команду, а отсы- лаем читателя к «Руководству пользо- вателя». С точки зрения интерфейса (если бы мы программировали с помощью про- цессора 8080), контроллер имеет два адреса для записи: базовый адрес для записи или чтения данных (A0=0) и ба- зовый адрес+1 для записи управляю- щих команд (A0=1). Но применитель- но к параллельному порту мы будем просто говорить о состоянии сигнала А0 при записи команд или данных. Во врезке приведен пример програм- мы контроллера на языке С для дис- плея EL240.128.45. В данном случае контроллер настраивается на отобра- В З АПИС Н УЮ К НИЖК У ИНЖЕ Н Е РА 74 DataWrite(0x1E,LPT1); // диапазон адресов виртуального экрана, мл. байт DataWrite(0x00,LPT1); // ст. байт // установить начальный адрес и отображаемую область CommandWrite(SCROLL,LPT1); DataWrite(0x0,LPT1); // начальный адрес, мл. байт DataWrite(0x0,LPT1); // ст. байт DataWrite(0x7F,LPT1); // 128 линий на блок прокрутки // автоматический сдвиг курсора вправо CommandWrite(CSRDIR_RIGHT,LPT1); // горизонтальный сдвиг при прокрутке, колич. пикселов CommandWrite(HDOT_SCR,LPT1); DataWrite(0x0,LPT1); // режим overlay CommandWrite(OVLAY,LPT1); DataWrite(0x01,LPT1); // текстовой режим, две плоскости // установить позицию курсора StartCursorPos(1,0,LPT1); // очистить видеопамять CommandWrite(MWRITE,LPT1); for(i = 0; i < 0x7FFF; i++) DataWrite(0,LPT1); // разрешить вывод данных на дисплей CommandWrite(DISP_ON,LPT1); DataWrite(0x05,LPT1); // отобразить что-то полезное WriteString("Hello, World!",LPT1); StartCursorPos(30,0,LPT1); WriteString("My internal character set:",LPT1); // вывести все символы внутреннего // знакогенератора на экран StartCursorPos(60,0,LPT1); for(i = 0; i < 256; i++) WriteByte(i,LPT1); } // void main... Таблица 4. Основные команды контроллера SED1335 Тип Команда Код Шестнадцате ричный код Описание команды Количество байтов RD WR A0 D7 D6 D5 D4 D3 D2 D1 D0 Управление системой SYSTEM SET 1 0 1 0 1 0 0 0 0 0 0 40 Инициализировать контроллер и дисплей 8 SLEEP IN 1 0 1 0 1 0 1 0 0 1 1 53 Перейти в «спящий» режим 0 Управление дисплеем DISP ON/OFF 1 0 1 0 1 0 1 1 0 0 D 58, 59 Разрешение/запрет вывода на дисплей и мерцания 1 SCROLL 1 0 1 0 1 0 0 0 1 0 0 44 Установить начальный адрес и область отображения 10 CSRFORM 1 0 1 0 1 0 1 1 1 0 1 5D Установить тип курсора 2 CGRAM ADR 1 0 1 0 1 0 1 1 1 0 0 5C Установить адрес ОЗУ генератора символов 2 CSRDIR 1 0 1 0 1 0 0 1 1 CD1 CD0 от 4С до 4F Установить направление движения курсора 0 HDOT SCR 1 0 1 0 1 0 1 1 0 1 0 5A Установить позицию горизонтальной «прокрутки» 1 OVLAY 1 0 1 0 1 0 1 1 0 1 1 5B Установить формат перекрытия экрана 1 Управление курсором CSRW 1 0 1 0 1 0 0 0 1 1 0 46 Установить адрес курсора 2 CSRR 1 0 1 0 1 0 0 0 1 1 1 47 Чтение адреса курсора 2 Управление памятью MWRITE 1 0 1 0 1 0 0 0 0 1 0 42 Запись в видеопамять — MREAD 1 0 1 0 1 0 0 0 0 1 1 43 Чтение видеопамяти — СТА 4/2001 www.cta.ru

RkJQdWJsaXNoZXIy MTQ4NjUy