ЖУРНАЛ «СТА» №1/2008
торый годится для всех дисплеев, кро- ме EL240.128.45 и EL640.200SK. Закончив изготовление соответству- ющих кабелей, подготовив подходя- щий источник питания, мы можем пе- рейти к программированию контролле- ра. Замечу только, что потребление по цепи +12 В будет определяться только используемым ELдисплеем, самому контроллеру +12 В не требуется. Программирование контроллера Epson SED1335 На аппаратном уровне обращение к контроллеру ничем не отличается от циклов чтения/записи данных пери- ферийных микросхем в устройствах, реализованных на микропроцессорах или микроконтроллерах, например, Intel 8080 или i8051. Временная диа- грамма цикла чтения/записи приве- дена на рис. 2. Соотношения времен- ных интервалов сигналов отражает табл. 3. Для формирования команд записи или чтения необходимо всего четы- ре служебных сигнала, подаваемых на контроллер: A0, WR ___ , RD ___ , CS ___ . Как видно из табл. 3, длительности этих сигналов имеют ограничения только по минимальным значениям. В З АПИС Н УЮ К НИЖК У ИНЖЕ Н Е РА t CYC t OH8 t AH8 t AW8 t CC t DS8 t DH8 t ACC8 AO, CS WR, RD D0-D7 (Запись) D0-D7 (Чтение) Рис. 2. Диаграмма цикла чтения/записи // Отобразить текстовую строку по текущему адресу void WriteString (char* string, unsigned short port) { int i; CommandWrite(MWRITE,port); for(i = 0; i < strlen(string); i++) DataWrite(string[i],port); } // Записать байт в видеопамять по текущему адресу void WriteByte (unsigned char byte, unsigned short port) { CommandWrite(MWRITE,port); DataWrite(byte,port); } // Установить курсор в требуемую позицию void StartCursorPos (unsigned char lowb, unsigned char highb, unsigned short port) { CommandWrite(CSRW,port); DataWrite(lowb,port); DataWrite(highb,port); } //-----------------------------------------// // Файл EPC1335.CPP // //-----------------------------------------// #include <dos.h> #include <bios.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <io.h> #include <sys\stat.h> #include <string.h> #include <fcntl.h> #include "iofunc.hpp" #define LPT1 0x378 //--------------------// // MAIN // //--------------------// void main(void) { int i; puts("Write to EL display"); //Инициализация контроллера для дисплея EL240.128.45 CommandWrite(SYSTEM_SET, LPT1); DataWrite(0x36,LPT1); // внутренний генератор символов, один дисплей DataWrite(0x07,LPT1); // ширина символа - 8 пикселов DataWrite(0x07,LPT1); // высота символа - 16 пикселов // 30 - количество символов в строке (30 симв * 8 пикс = 240 точек) DataWrite(0x1D,LPT1); DataWrite(0x23,LPT1); // длина одной строки в байтах DataWrite(0x7F,LPT1); // количество линий в кадре - 128 Таблица 3. Соотношения временных интервалов сигналов (для диаграмм рис. 2) Сигнал A0, CS __ Обозна- чение t AH8 Параметр V DD =4,5-5,5 В V DD =2,7-4,5 В Время удержания адреса, нс 10 — min max min max 10 — t AW8 Время установления адреса, нс 0 — 0 — WR ___ , RD __ t CYC Системный цикл, нс См. прим. — См. прим. — t CC Длительность стробирующего импульса, нс 120 — 150 — D0-D7 t DS8 Время установления данных, нс 120 — 120 — t DH8 Время удержания данных, нс 5 — 5 — t ACC8 Время доступа сигнала RD __ — 50 — 80 t OH8 Время запрета вывода 10 50 10 55 Примечание. Для команд управления памятью и системных: t CYC8 = 2t C + t CC + t CEA +75 > t ACV + 245 Все остальные команды: t CYC8 = 4t C + t CC + 30 73 СТА 4/2001 www.cta.ru
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy