Хочу использовать экран от Nokia 5100, есть вопросы. 1) Помогите определить, какой у меня контроллер к GLCD
Экран с обратной (со стороны платы сотового) стороны серебристый, шлейф - зеленый. На серебристой поверхности 
выгрировано "3110287", и наклеена наклейка "4P030346FS
3472890003". Разъём - стандартный, 10-контактный, по 5 контактов с каждой стороны.
У меня контроллер S1D15G00 ?
2) Допустим хочу нарисовать красную точку на белом фоне. Я скачал два исходника (на Си и на Бейсике) и 
даташит на контроллер S1D15G00, но в даташите не все понятно, а исходники неполные - некоторые из используемых 
функций не описаны.
Правильно ли я понимаю, что для решения данной задачи должен осуществить следующую последовательность действий:
1) LCD_Reset - сброс LCD
   LCD_CS (1); // Установить CS 
   LCD_RST (1); // Установить RST 
   LCD_CLK (1); // Установить CLK 
   LCD_DAT_Set (1); // Установить данные 
   LCD_CLK (0); // Сбросить CLK 
   Time (200); // Задержка примерно 200 мкс 
   LCD_RST (0); // Сбросить RST 
   Time (10); // Задержка примерно 10 мкс 
   LCD_RST (1); // Установить RST
2) LCD_Display_Control - Установить временные параметры 
   LCD_COM (DISPLAY_CONTROL); // Установка времен задержки и
			      // частот, необходимых для работы
   LCD_DAT (0x03); // Передать код делителя частоты
   LCD_DAT (0x20); // Передать коэффициент заполнения
   LCD_DAT (0x0C); // Установить флаг инверсии
   LCD_DAT (0x00); // Завершить передачу частотных
		   // параметров
3) LCD_Pin_Scan_Direction - Установить параметры сканирования выводов 
   LCD_COM (COMMON_SCAN_DIRECTION); // Установка направления 
   LCD_DAT (0x01); // Выбрать байт направления 
4) LCD_Oscill_ON() - Включить внутренний генератор 
   LCD_COM(INT_OSCILL_ON);
5) LCD_Sleep_Out() - Активировать LCD 
   LCD_COM(SLEEP_OUT);
6) LCD_Electric_Control - Установить рекомендуемые яркость и контраст 
   LCD_COM (ELEC_VOLUME_CONTROL); // Установить значения
   LCD_DAT (0x3f); // Рекомендуемый контраст =5
   LCD_DAT (0x01); // Рекомендуемая яркость =2
7) LCD_Power_Control - Включить цепи питания 
   LCD_COM (POWER_CONTROL); // Включить все цепи питания LCD 
   LCD_DAT (0x0f); // Передать код 
8) Delay (100) - Задержка примерно 100 мс 
8) LCD_Inverse_Mode() - Включить инверсный режим 
   LCD_COM(DISPLAY_INVERSE)
9) LCD_Data_Control_Set(0,1,0,0,0x01) - Установить параметры данных 
   register byte ch=0;
   LCD_COM (DATA_CONTROL); // Установка параметров 
   ch|=0x02; // Направление столбцов
   LCD_DAT (ch); // Передать данные 
   LCD_DAT (0); // Задать цветность
   LCD_DAT (0x01); // Задать градации серого 
   LCD_DAT (0x00); // Завершить передачу 
10)LCD_8Bit_Palette_Set() - Установить палитру 
   LCD_COM (RGB_SET);
   LCD_DAT (0); LCD_DAT (2); LCD_DAT (4); LCD_DAT (6); LCD_DAT (8); LCD_DAT (10); LCD_DAT (12); LCD_DAT (15);
   LCD_DAT (0); LCD_DAT (2); LCD_DAT (4); LCD_DAT (6); LCD_DAT (8); LCD_DAT (10); LCD_DAT (12); LCD_DAT (15);
   LCD_DAT (0); LCD_DAT (5); LCD_DAT (10); LCD_DAT (15);
12)Delay (100); // Задержка примерно 100 мс 
13)LCD_NOP()
   LCD_COM(NOP)
14)LCD_ON() - Включить LCD 
   LCD_COM(DISPLAY_ON)
15)Delay (200) - Задержка примерно 200 мс 
16)LCD_Set_BG_Color - Установить белый цвет фона
   int index=(SCREEN_HEIGHT-1)*(SCREEN_WIDTH-1),a;
   LCD_COM(SET_PAGE_ADDRESS); // Передать код задания 
			      // диапазона по строке
			      // величина Х1 должна быть меньше Х2 
   LCD_DAT(0); // Адрес начала зоны
   LCD_DAT(SCREEN_WIDTH-1); // Адрес конца зоны
   LCD_COM(SET_COLUMN_ADDRESS); // Передать код задания
				// диапазона по столбцу
				// величина Y1 должна быть меньше Y2
   LCD_DAT(0); // Адрес начала зона
   LCD_DAT(SCREEN_HEIGHT-1); // Адрес конца зоны
   for (a=0;a<index;a++){
      LCD_DAT(RGB(0xFF, 0xFF, 0xFF));
   }
17)LCD_PutPixel - Нарисовать красный пиксель по координатам 60,60
   LCD_COM(SET_PAGE_ADDRESS); // Передать код задания 
			      // диапазона по строке
			      // величина Х1 должна быть меньше Х2 
   LCD_DAT(60); // Адрес начала зоны
   LCD_DAT(60+1); // Адрес конца зоны
   LCD_COM(SET_COLUMN_ADDRESS); // Передать код задания
				// диапазона по столбцу
				// величина Y1 должна быть меньше Y2
   LCD_DAT(60); // Адрес начала зона
   LCD_DAT(60+1); // Адрес конца зоны
   LCD_COM(WRITING_TO_MEMORY); // Передать код записи в память 
   LCD_DAT (RGB(0xFF, 0x00, 0x00)); // Записать байт цвета 
где SCREEN_WIDTH=132, SCREEN_HEIGHT=132, RGB(r,g,b) - это ((r&0xE0)|((g&0xE0)>>3)|(b>>6)) (3 байта r,g,b плюс 
	2 байта b переводим в 12-битное значение цвета)
где LCD_COM и LCD_DAT выполняют следующие функции:
// Переслать байт команды
void LCD_COM (byte COM){
   LCD_Send(COM,0);
}
// Переслать байт данных
void LCD_DAT (byte DAT){
   LCD_Send(DAT,1);
}
void LCD_Send (byte DAT, bit CB){
   register byte i;
   register byte mask = 0x80;
   LCD_CS (0); // Сбросить CS
   _nop_(); // Задержка на 1 такт MCU примерно 50 нс
   LCD_BitSend(CB); // Переслать бит признака операции
		    // «0» - если далее следует байт команды
		    // «1» - если далее следует байт данных
   for (i=0;i<8;i++){
      LCD_BitSend ( (DAT&mask)?1:0 ); // Переслать очередной бит
      mask=mask>>1; // Модифицировать маску (бит)
   }
   LCD_CS (1); // Установить CS
}
// **************************************
// Пересылка одного бита
// **************************************
void LCD_BitSend (bit B){
   _nop_(); // Задержка на 1 такт MCU примерно 50 нс
   LCD_DAT_Set (B); // Установить бит данных
   LCD_Pulse (); // Сгенерировать тактовый импульс
}
void LCD_Pulse (void){
   _nop_(); // Задержка на 1 такт MCU примерно 50 нс 
   LCD_CLK(1); // Установить CLK 
   _nop_(); // Задержка на 1 такт MCU примерно 50 нс 
   LCD_CLK(0); // Сбросить CLK 
}
void LCD_CS (bit A){ set_bit(LCD_CS_Bit,A); }
void LCD_RST (bit A) { set_bit(LCD_RST_Bit,A); }
void LCD_CLK (bit A) { set_bit(LCD_CLK_Bit,A); }
void LCD_DAT_Set (bit A) { set_bit(LCD_DAT_Bit,A); }
bit LCD_DAT_Get (void) { return get_bit(); }
void LCD_LED (bit A) { set_bit(LCD_LED_Bit,A); }
void set_bit(int mask,bit wbit){
   if (wbit)
      lpt_val|=mask;
   else
      lpt_val&=~mask;
   outportb(0x3F8,lpt_val);
}
int get_bit(void){
   lpt_val=inportb(0x3F9);
   if ((lpt_val&128)!=0)
      return 1;
   else
      return 0;
}
bit и byte - определены через typedef как unsigned char
GLCD подключаем к LPT-порту, выводы D4-D0 этого порта соответствуют линиям RST, DAT (только выход, через резистор 
	2-2.2кОм), CLK, CS, LED
 (LED - на микросхему 1851 управления светодиодами GLCD), а вывод BUSY GLCD подключаем в DAT (только вход) GLDC
//LPT <D7:D0> N N N RST DAT_OUT CLK CS LED
//LPT <BUSY> DAT_IN (Status 3F9 <7>)
//R on LPT IN=2-2.2кОм
// OUT->R->\___SDA
// IN<-----/
Delay, Time, _nop_ соответственно устанавливают задержку в миллисекундах, микросекундах и наносекундах, но в тестовых 
целях можно минимальную задержку равной 1мс сделать, вместо микросекунд и наносекунд - void time (void){delay(1);},
void _nop_ (void){delay(1);}
Всё верно?
И ещё - мы тут везде тупо пишем в LCD, не дожидаясь никакого ответа. Т.е. если что-то пойдет не так, то непонятно, 
на какой стадии. Так и должно быть? :)
P.S. Помогая мне, вы я думаю поможете и остальным новичкам, решившим использовать экран от Нокии 
в своих поделках. :)
- 
	- Тут много интересного. - Ruslan(04.01.2009 15:30, ссылка, ссылка)
- Здесь читал? - General(03.01.2009 22:25, ссылка)
			- Да. Это один из двух использованных мною источников. Весьма неполный, кстати. - Вадим-2(04.01.2009 01:55,  ) )- И всё равно, переговорить с автором не помешает. Его может заинтересовать "неполнота" материала. - General(04.01.2009 10:52)
							- И как с ним связаться? :) - Вадим-2(04.01.2009 17:08,  ) )- Олег Николайчук onic@ch.moldpac.md - General(04.01.2009 19:19)
 
 
- И как с ним связаться? :) - Вадим-2(04.01.2009 17:08, 
 
- И всё равно, переговорить с автором не помешает. Его может заинтересовать "неполнота" материала. - General(04.01.2009 10:52)
							
 
- Да. Это один из двух использованных мною источников. Весьма неполный, кстати. - Вадим-2(04.01.2009 01:55,