Guillermo
antes que nada, las tensiones de trabajo son de 3 a 3.6 V tipico 3.3V, con 4V en Vdd corres el riesgo de quemar los leds
la tension mas importante es la Vlcd con la cual le das mas o menos contraste (sin querer).
voy a intentar guiarte un poco para que uses la idea en ensamblador
todos los "bytes" que se envian al lcd son de 9 bit, el primero indica si es un comando o un dato y los siguiente obviamente son o un dato o un comando Smile
a diferencia de algunos display el del nokia utiliza el flanco ascendente del clock para tomar el bit, por lo que tendrias que poner en la pata que usas como clock, un cero, poner el valor del bit del byte a transmitir (el mas alto) en la pata de dato y poner luego el valor de la pata de clock en uno.
esto lo tenes que repetir para todos los bits a enviar, te repito, el primer bit a enviar es el mas alto del byte
en C sería así:
sclk = 0;
sda = dc; // 1 para dato y 0 para control
sclk = 1;
// enviar byte de control/dato
for(i=0;i<8;i++){
sclk = 0;
if(c & 0x80)
sda = 1;
else
sda = 0;
sclk = 1;
c <<= 1;
}
algo muy importante y con lo que renegué mucho fue con la inicializacion del display, si no esta bien inicializado no anda
esto inicializa el lcd
rst = 0;
Delay_ms(200);
rst = 1;
Delay_ms(200);
Write_lcd(CMD,0x25); // VOP
Write_lcd(CMD,0x90); // EV
Write_lcd(CMD,0xA4); // Display en modo normal
Write_lcd(CMD,0x2F); // power control set
// Write_lcd(CMD,0xd1); // MUX
Write_lcd(CMD,0x40);
Write_lcd(CMD,0xb0);
Write_lcd(CMD,0x10);
Write_lcd(CMD,0x0);
Write_lcd(CMD,0xC8); // invertir filas
Write_lcd(CMD,0xa1); // invertir columnas
Write_lcd(CMD,0xac);
Write_lcd(CMD,0x07);
Write_lcd(CMD,0xf9); // activar modo icono (acelera encendido)
Write_lcd(CMD,0xac); // ubicacion de imagen
Write_lcd(CMD,0x07);
Write_lcd(CMD,0xaf);
fijate los delay que necesita y los comandos.
cualquier cosa, tenes mi mail. seguimos por ahi.
un abrazo.
alberto