TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Trust en 16 de Marzo de 2009, 22:30:07

Título: Lcd nokia 3310
Publicado por: Trust en 16 de Marzo de 2009, 22:30:07
Hola, hace unas semanas me compre 2 lcd de Nokia 3310 para probarlas. El programa que uso es una modificacion del programa de cucaracha la web es Nokia 3310 Cucaweb (http://webs.ono.com/cucaracha/lcdnokia.htm)

La conexion que hago es el pin 1 esta a la derecha mirando la pantalla de frente y el pin 8 que es el ultimo a la izquierda. La configuracion  es la siguiente:

1       -     vdd
2       -     sclk      -        portb.1
3       -     sdin      -        portb.2
4       -     dc        -        portb.3
5       -     sce       -        portb.4
6       -     gnd
7       -     vop
8       -     reset     -        portb.7

La modificacion que he hecho en la libreria es:

Código: [Seleccionar]
#bit nok_sclk  = PORTB.1 // RB1
#bit nok_sda   = PORTB.2 // RB2
#bit nok_dc    = PORTB.3      // RB3
#bit nok_cs    = PORTB.4      // RB4
#bit nok_res   = PORTB.7 // RB7


La original es:

Código: [Seleccionar]

bit nok_sclk  = PORTB.3 // RB3
#bit nok_sda   = PORTB.4 // RB4
#bit nok_dc    = PORTB.5      // RB5
#bit nok_cs    = PORTB.6      // RB6
#bit nok_res   = PORTB.7 // RB7


Estas 2 lineas no las he cambiado:

Código: [Seleccionar]

#byte PORTB=6                 // Dirección del PortB
#byte TRISB=0x86              // Dirección Del TrisB

No se si tengo que cambiar estas 2 lineas para la configuracion de los pines que he escrito antes.

El programa es el siguiente, lo he adaptado para un 18F4550 con un cristal de 12 Mhz trabajando a 48 Mhz:

Código: [Seleccionar]

//Este programa utiliza un lcd del Nokia 3310
#include <18f4550.h>  // PIC que se va a utilizar
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN,NOPBADEN  //Ordenes para el programador
#use delay(clock=48000000)  //fosc= 48 Mhz
#Include <nokia_lcd.c>


#byte PORTB=0              // Dirección del PortB
#byte TRISB=0x80           // Dirección Del TrisB
//definiciones
#byte PORTA=5
//#byte PORTB=6
#byte PORTC=7
#byte TRISA=0x85
//#byte TRISB=0x86
#byte TRISC=0x87
//

Byte CONST TABLE3 [249]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x78,0x04,0x02,0x01,0x00,0x00,0xC0,0xE0,0x30,0x10,0x18,
0x08,0x04,0x86,0xE1,0xF0,0x10,0x10,0x30,0x20,0x20,0x60,0x60,0x40,0x40,0x40,0x80,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,
0x18,0x20,0xE0,0xF0,0xD8,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFE,0xFE,0xFE,0xFC,0xF8,0xF8,0xF0,
0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

Byte CONST TABLE4 [255]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x67,0x17,0x0E,0x0F,0x0F,0xFF,0x3F,0x1F,0x1F,
0x1F,0x1F,0x3F,0xFF,0xFF,0x3F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,
0x7F,0x7F,0x7F,0x3F,0x1F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x4E,0x81,0x00,0x00,0x00,0x0E,0x11,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x09,0x93,
0xE7,0x86,0x06,0x06,0x02,0x02,0x03,0x03,0x03,0x01,0x01,0x01,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x00,0x00,0x00,0x00,0x1F,0x12,0x12,0x1E,0x00,0x02,0x6C,0x18,0x06,0x00,0x00,0x00,
0x00,0x0C,0x13,0x11,0x10,0x09,0x1E,0x10,0x10,0x1E,0x0C,0x12,0x12,0x12,0x0C,0x16,
0x12,0x1E,0x1E,0x06,0x02,0x06,0x0C,0x16,0x12,0x1E,0x00,0x0C,0x12,0x12,0x12,0x18,
0x1F,0x02,0x1E,0x0C,0x16,0x12,0x1E,0x00
};

Byte CONST TABLE5 [249]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x78,0x04,0x02,0x01,0x00,0x00,0xC0,0xE0,0x30,0x10,0x18,
0x08,0x04,0x86,0xE1,0xF0,0x10,0x10,0x30,0x20,0x20,0x60,0x60,0x40,0x40,0x40,0x80,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,
0x18,0x20,0xE0,0xF0,0xD8,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFE,0xFE,0xFE,0xFC,0xF8,0xF8,0xF0,
0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

Byte CONST TABLE6 [255]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x40,0x20,0x21,0x17,0x17,0x0E,0x0F,0x0F,0xFF,0x3F,0x1F,0x1F,
0x1F,0x1F,0x3F,0xFF,0xFF,0x3F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,
0x7F,0x7F,0x7F,0x3F,0x1F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1C,0x62,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x11,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x09,0x93,
0xE7,0x86,0x06,0x06,0x02,0x02,0x03,0x03,0x03,0x01,0x01,0x01,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x12,0x12,0x1E,0x00,0x02,0x6C,0x18,0x06,0x00,0x00,0x00,
0x00,0x0C,0x13,0x11,0x10,0x09,0x1E,0x10,0x10,0x1E,0x0C,0x12,0x12,0x12,0x0C,0x16,
0x12,0x1E,0x1E,0x06,0x02,0x06,0x0C,0x16,0x12,0x1E,0x00,0x0C,0x12,0x12,0x12,0x18,
0x1F,0x02,0x1E,0x0C,0x16,0x12,0x1E,0x00
};



Byte CONST TABLE7 [249]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x78,0x04,0x02,0x01,0x00,0x00,0xC0,0xE0,0x30,0x10,0x18,
0x08,0x04,0x86,0xE1,0xF0,0x10,0x10,0x30,0x20,0x20,0x60,0x60,0x40,0x40,0x40,0x80,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x18,0x20,0xE0,0xF0,0xD8,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFE,0xFE,0xFE,0xFC,0xF8,0xF8,0xF0,
0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};


Byte CONST TABLE8 [255]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x40,0x20,0x21,0x17,0x17,0x0E,0x0F,0x0F,0xFF,0x3F,0x1F,0x1F,
0x1F,0x1F,0x3F,0xFF,0xFF,0x3F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,
0x7F,0x7F,0x7F,0x3F,0x1F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x98,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x11,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x09,0x93,
0xE7,0x86,0x06,0x06,0x02,0x02,0x03,0x03,0x03,0x01,0x01,0x01,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x12,0x12,0x1E,0x00,0x02,0x6C,0x18,0x06,0x00,0x00,0x00,
0x00,0x0C,0x13,0x11,0x10,0x09,0x1E,0x10,0x10,0x1E,0x0C,0x12,0x12,0x12,0x0C,0x16,
0x12,0x1E,0x1E,0x06,0x02,0x06,0x0C,0x16,0x12,0x1E,0x00,0x0C,0x12,0x12,0x12,0x18,
0x1F,0x02,0x1E,0x0C,0x16,0x12,0x1E,0x00
};



// Funcion Principal
void main(void)
{
int8 a;
int i;
   lcd_init();             // Inicialización LCD
   nokia_clean_ddram();    // La limpiamos (por si acaso)

for(i=0;i<5;i++){
    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE3[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE4[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea

    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE5[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE6[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea

    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE7[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE8[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea

    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE5[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE6[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea
}


   nokia_clean_ddram();                   // Limpiamos pantalla
   nokia_gotoxy(0,0);                     // Nos ponemos en 0,01
   printf(nokia_printchar,"abcdefghijklmn");  // Escribimos
   //nokia_gotoxy(0,1); no hay que poner esto ya que se escribe la fila entera..
   printf(nokia_printchar,"ñopqrstuvwxyzA");
   //nokia_gotoxy(0,2); ...aunque si se pone tampoco está mal
   printf(nokia_printchar,"BCDEFGHIJKLMNÑ");
   //nokia_gotoxy(0,3); idem
   printf(nokia_printchar,"OPQRSTUVWXYZ12");
   //nokia_gotoxy(0,4); idem
   printf(nokia_printchar,"34567890*/-+$#");
   //nokia_gotoxy(0,5); y más idem
   printf(nokia_printchar,"Listo!!    ;-)");
   delay_ms(500);

   a = 0x0C;
   while (1) {
      switch (a) {
         case 0x0c:
            nokia_write_command(0x0D);   // Modo normal
            a=0x0D;
            delay_ms(1000);
            break;
         case 0x0D:
            nokia_write_command(0x0C);   // Modo inverso
            a=0x0C;
            delay_ms(1000);
            break;
      }
   }
}



Y la libreria es esta, con una pequeña modificacion:

Código: [Seleccionar]

////////////////////////////////////////////////////////////////////////////////
// DESCRIPCIÓN DE LAS FUNCIONES
//
// void nokia_write_dorc(byte bytefornokia)              USO INTERNO
// void nokia_write_data(byte bytefornokia_data)         USO INTERNO
// void nokia_printchar(byte caracter)                   IMPRIME EL CARACTER
// void nokia_write_command(byte bytefornokia_command)   MANDA EL COMANDO
// void nokia_gotoxy(byte xnokia, byte ynokia)           SE POSICIONA EN X/Y
// void nokia_clean_ddram(void)                          LIMPIA LA PANTALLA
// void Lcd_init(void)                                   INICIALIZA LA LCD
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// CONFIGURACION DE LA CONEXION
//
// Conectamos la LCD al PORTB en los pines indicados
//
////////////////////////////////////////////////////////////////////////////////
#byte PORTB=6                 // Dirección del PortB
#byte TRISB=0x86              // Dirección Del TrisB
#bit nok_sclk  = PORTB.1 // RB1
#bit nok_sda   = PORTB.2 // RB2
#bit nok_dc    = PORTB.3      // RB3
#bit nok_cs    = PORTB.4      // RB4
#bit nok_res   = PORTB.7 // RB7
// FIN CONFIGURACION
////////////////////////////////////////////////////////////////////////////////

/*
Tabla de Instrucciones de la LCD. Siempre con D/C=0

0010 0xyz      // X=1 -> Driver en OFF
                     Y=1 -> Direccionamiento Vertical
                     Z=1 -> Comandos Extendidos

Modo de pantalla
0000 1001   0x09 // Entera Negra
0000 1000   0x08 // Entera Blanco
0000 1100   0x0c // Modo Normal
0000 1101   0x0d // Vídeo Inverso

Control de Temperatura
0100 0100   0x44  // Coeficiente de temperatura 0
0100 0101   0x45  // Coeficiente de temperatura 1
0100 0110   0x46  // Coeficiente de temperatura 2
0100 0111   0x47  // Coeficiente de temperatura 3

Bias (Contraste?)
0001 0xxx         // Establece el valor para Bias

Vop
1xxx xxxx         // Establece el valor para Vop
*/

////////////////////////////////////////////////////////////////////////////////
// Necesitamos dos tablas para la conversión de ASCII a pixels gráficos
// 5 Bytes por caracter.
// Usamos DOS tablas porque tenemos 96 columnas x 5 bytes = 480 bytes
// y solo podemos tener tablas de 255 bytes

// F1-ñ -> 0xFC,0x09,0x05,0x05,0xF8
// D1-Ñ ->
byte CONST ASCII_TABLE1 [240]={
                  0x00,0x00,0x00,0x00,0x00, // 20 space
0x00,0x00,0x5f,0x00,0x00, // 21 !
0x00,0x07,0x00,0x07,0x00, // 22 "
0x14,0x7f,0x14,0x7f,0x14, // 23 #
0x24,0x2a,0x7f,0x2a,0x12, // 24 $
0x23,0x13,0x08,0x64,0x62, // 25 %
0x36,0x49,0x55,0x22,0x50, // 26 &
0x00,0x05,0x03,0x00,0x00, // 27 '
0x00,0x1c,0x22,0x41,0x00, // 28 (
0x00,0x41,0x22,0x1c,0x00, // 29 )
0x14,0x08,0x3e,0x08,0x14, // 2a *
0x08,0x08,0x3e,0x08,0x08, // 2b +
0x00,0x50,0x30,0x00,0x00, // 2c ,
0x08,0x08,0x08,0x08,0x08, // 2d -
0x00,0x60,0x60,0x00,0x00, // 2e .
0x20,0x10,0x08,0x04,0x02, // 2f /
0x3e,0x51,0x49,0x45,0x3e, // 30 0
0x00,0x42,0x7f,0x40,0x00, // 31 1
0x42,0x61,0x51,0x49,0x46, // 32 2
0x21,0x41,0x45,0x4b,0x31, // 33 3
0x18,0x14,0x12,0x7f,0x10, // 34 4
0x27,0x45,0x45,0x45,0x39, // 35 5
0x3c,0x4a,0x49,0x49,0x30, // 36 6
0x01,0x71,0x09,0x05,0x03, // 37 7
0x36,0x49,0x49,0x49,0x36, // 38 8
0x06,0x49,0x49,0x29,0x1e, // 39 9
0x00,0x36,0x36,0x00,0x00, // 3a :
0x00,0x56,0x36,0x00,0x00, // 3b ;
0x08,0x14,0x22,0x41,0x00, // 3c <
0x14,0x14,0x14,0x14,0x14, // 3d =
0x00,0x41,0x22,0x14,0x08, // 3e >
0x02,0x01,0x51,0x09,0x06, // 3f ?
0x32,0x49,0x79,0x41,0x3e, // 40 @
0x7e,0x11,0x11,0x11,0x7e, // 41 A
0x7f,0x49,0x49,0x49,0x36, // 42 B
0x3e,0x41,0x41,0x41,0x22, // 43 C
0x7f,0x41,0x41,0x22,0x1c, // 44 D
0x7f,0x49,0x49,0x49,0x41, // 45 E
0x7f,0x09,0x09,0x09,0x01, // 46 F
0x3e,0x41,0x49,0x49,0x7a, // 47 G
0x7f,0x08,0x08,0x08,0x7f, // 48 H
0x00,0x41,0x7f,0x41,0x00, // 49 I
0x20,0x40,0x41,0x3f,0x01, // 4a J
0x7f,0x08,0x14,0x22,0x41, // 4b K
0x7f,0x40,0x40,0x40,0x40, // 4c L
0x7f,0x02,0x0c,0x02,0x7f, // 4d M
0x7f,0x04,0x08,0x10,0x7f, // 4e N
0x3e,0x41,0x41,0x41,0x3e}; // 4f O


byte CONST ASCII_TABLE2 [250]={
                  0x7f,0x09,0x09,0x09,0x06, // 50 P
0x3e,0x41,0x51,0x21,0x5e, // 51 Q
0x7f,0x09,0x19,0x29,0x46, // 52 R
0x46,0x49,0x49,0x49,0x31, // 53 S
0x01,0x01,0x7f,0x01,0x01, // 54 T
0x3f,0x40,0x40,0x40,0x3f, // 55 U
0x1f,0x20,0x40,0x20,0x1f, // 56 V
0x3f,0x40,0x38,0x40,0x3f, // 57 W
0x63,0x14,0x08,0x14,0x63, // 58 X
0x07,0x08,0x70,0x08,0x07, // 59 Y
0x61,0x51,0x49,0x45,0x43, // 5a Z
0x00,0x7f,0x41,0x41,0x00, // 5b [
0x02,0x04,0x08,0x10,0x20, // 5c
0x00,0x41,0x41,0x7f,0x00, // 5d
0x04,0x02,0x01,0x02,0x04, // 5e
0x40,0x40,0x40,0x40,0x40, // 5f
0x00,0x01,0x02,0x04,0x00, // 60
0x20,0x54,0x54,0x54,0x78, // 61 a
0x7f,0x48,0x44,0x44,0x38, // 62 b
0x38,0x44,0x44,0x44,0x20, // 63 c
0x38,0x44,0x44,0x48,0x7f, // 64 d
0x38,0x54,0x54,0x54,0x18, // 65 e
0x08,0x7e,0x09,0x01,0x02, // 66 f
0x0c,0x52,0x52,0x52,0x3e, // 67 g
0x7f,0x08,0x04,0x04,0x78, // 68 h
0x00,0x44,0x7d,0x40,0x00, // 69 i
0x20,0x40,0x44,0x3d,0x00, // 6a j
0x7f,0x10,0x28,0x44,0x00, // 6b k
0x00,0x41,0x7f,0x40,0x00, // 6c l
0x7c,0x04,0x18,0x04,0x78, // 6d m
0x7c,0x08,0x04,0x04,0x78, // 6e n
0x38,0x44,0x44,0x44,0x38, // 6f o
0x7c,0x14,0x14,0x14,0x08, // 70 p
0x08,0x14,0x14,0x18,0x7c, // 71 q
0x7c,0x08,0x04,0x04,0x08, // 72 r
0x48,0x54,0x54,0x54,0x20, // 73 s
0x04,0x3f,0x44,0x40,0x20, // 74 t
0x3c,0x40,0x40,0x20,0x7c, // 75 u
0x1c,0x20,0x40,0x20,0x1c, // 76 v
0x3c,0x40,0x30,0x40,0x3c, // 77 w
0x44,0x28,0x10,0x28,0x44, // 78 x
0x0c,0x50,0x50,0x50,0x3c, // 79 y
0x44,0x64,0x54,0x4c,0x44, // 7a z
0x00,0x08,0x36,0x41,0x00, // 7b
0x00,0x00,0x7f,0x00,0x00, // 7c
0x00,0x41,0x36,0x08,0x00, // 7d
0x10,0x08,0x08,0x10,0x08, // 7e
0x78,0x46,0x41,0x46,0x78,  // 7F
                  0x7C,0x09,0x05,0x05,0x78,  // 80 -> ñ
                  0x7E,0x05,0x09,0x11,0x7E   // 81 -> Ñ
                  }; // 7f



////////////////////////////////////////////////////////////////////////////////
// Envía en serie todos los bits del byte pasado
////////////////////////////////////////////////////////////////////////////////
void nokia_write_dorc(byte bytefornokia)
{
char caa;
   for (caa=8;caa>0;caa--) {
nok_sclk=0;
delay_us(2);
if ((bytefornokia&0x80)==0) {
         nok_sda=0;
      }
else {
         nok_sda=1;
      }
nok_sclk=1;
bytefornokia=bytefornokia<<1;
}
}

////////////////////////////////////////////////////////////////////////////////
// Prepara a la LCD para que guarde el byte en la RAM (para que lo muestre
////////////////////////////////////////////////////////////////////////////////
void nokia_write_data(byte bytefornokia_data)
{
   nok_dc=1;
   nok_cs=0; // chip enabled
   nokia_write_dorc(bytefornokia_data);   // Rutina que manda en serie los bits
   nok_cs=1; // chip disabled
}


////////////////////////////////////////////////////////////////////////////////
// Escribe un comando en el nokia. Para los comandos se activa D/C
////////////////////////////////////////////////////////////////////////////////
void nokia_write_command(byte bytefornokia_command)
{
   nok_dc=0; // byte is a command it is read with the eight SCLK pulse
   nok_cs=0; // chip enabled
   nokia_write_dorc(bytefornokia_command);
   nok_cs=1; // chip disabled
}

////////////////////////////////////////////////////////////////////////////////
// Escribe en la LCD el caracter pasado
////////////////////////////////////////////////////////////////////////////////
void nokia_printchar(byte caracter)
{
byte char_row,charpos,chardata;

   if(caracter==0xF1) caracter=0x80;
   else if(caracter==0xD1) caracter=0x81;
   else if (caracter<0x20) return;
   else if (caracter>0x7f) return;

for (char_row=0;char_row<5;char_row++) {           // Son 5 Bytes por caracter
                                                   // Por eso este bucle
   if (caracter<0x50) {
      charpos=(((caracter&0xff)-0x20)*5)+char_row;
      chardata=ASCII_TABLE1[charpos];
      }

   else if (caracter>0x4f) {
      charpos=(((caracter&0xff)-0x50)*5)+char_row;
      chardata=ASCII_TABLE2[charpos];
      }
nokia_write_data(chardata);                    // Manda el caracter
   }
nokia_write_data(0x00);                           // Mandamos 1 espacio Blanco
}


////////////////////////////////////////////////////////////////////////////////
// Posicionamiento en la pantalla
////////////////////////////////////////////////////////////////////////////////
void nokia_gotoxy(byte xnokia, byte ynokia) // Nokia LCD 3310 Position cursor
{
nokia_write_command(0x40|(ynokia&0x07)); // Y axe initialisation: 0100 0yyy
nokia_write_command(0x80|(xnokia&0x7f)); // X axe initialisation: 1xxx xxxx
}


////////////////////////////////////////////////////////////////////////////////
// Limpiamos la RAM (la pantalla)
////////////////////////////////////////////////////////////////////////////////
void nokia_clean_ddram(void)
{
int16 ddram;  //cambiar por la del rtc del tio eso

   nokia_gotoxy(0,0);                  // Vamos al principio
   for (ddram=504;ddram>0;ddram--) {   // bucle estableciendo cada byte a 0x00
      nokia_write_data(0x00);
   }
}


////////////////////////////////////////////////////////////////////////////////
// Inicialización de la pantalla
////////////////////////////////////////////////////////////////////////////////
void Lcd_init(void) {
   TRISB = 0;
   delay_us(200);       // Pequeño delay de seguridad
nok_dc=1; // Destino de Bytes -> RAM
nok_cs=1; // Desactivamos el Driver para que se inicialice
   delay_ms(10);
nok_res=0; // Y damos un pulso de reset según indica el datasheet
delay_ms(250); // durante 1us.
nok_res=1;
nokia_write_command(0x21); // Activamos los comandos extendidos
nokia_write_command(0x90); // Definimos el Vop. Establecerá la tensión interna del cristal (su contraste)
nokia_write_command(0x13); // bias 13. Min 10 Max 17
nokia_write_command(0x20); // Modo horizontal, de izq. a dcha. Se incrementa la posición automáticamente
   nokia_write_command(0x09); // all on
delay_ms(50);
nokia_clean_ddram();        // Limpiamos la RAM para que no haya basura en la LCD
delay_ms(10);
nokia_write_command(0x0c); // mod control normal change
}

No me funciona, no me sale en la pantalla nada de nada.  :cry: :cry:
Título: Re: Lcd nokia 3310
Publicado por: vtasco en 16 de Marzo de 2009, 23:03:03
Código: [Seleccionar]
[quote author=Trust link=topic=25223.msg206210#msg206210 date=1237253407]
...

Estas 2 lineas no las he cambiado:

[code]
#byte PORTB=6                 // Dirección del PortB
#byte TRISB=0x86              // Dirección Del TrisB
[/code]


[/quote]

hola, esas direcciones son para la familia 16F, tienes que poner las direcciones correctas para la familia 18F (que estás usando tu)
portb=F81h
trisb=f93H
Título: Re: Lcd nokia 3310
Publicado por: Trust en 16 de Marzo de 2009, 23:59:01
En la pagina lcd nokia 3310 Cucaweb (http://webs.ono.com/cucaracha/lcdnokia.htm) pone que las fuentes son para un 18F252. De todas formas he puesto los valores que me has puesto y tampoco me funciona. ¿Tengo bien configurado el programa?

Creo que he puesto al reves Vdd y Gnd.
¿Se puede estropear si lo conecto al reves?

Cuando consiga hacer funcionar este lcd, probare los lcd con el controlador KS0108.
Pero de momento ya no se que hacer para que me funcione. :(
Título: Re: Lcd nokia 3310
Publicado por: Trust en 19 de Marzo de 2009, 17:55:10
Sigue sin funcionarme,  :(.
He hecho otra vez el circuito, pero esta vez a Vdd le meto 5v y aun asi tampoco me funciona.
Si podeis mirad el codigo por si hubiera algun fallo. Uso un 18f4550, cristal de 4 Mhz.

Adjunto tambien 2 fotos, una de la pantalla (si no me equivoco el pin 1 es el de la derecha) y la otra del circuito que consta del divisor de tension para conseguir el voltaje de 3 y pico voltios, el condensador de 1uf y la plaquita adaptadora para conectarla a la pantalla (que es de la pagina cucaweb de cucaracha).

Si veis algo que no os guste me lo decis.

(http://img16.imageshack.us/img16/8425/p3190225.th.jpg) (http://img16.imageshack.us/my.php?image=p3190225.jpg)

(http://img18.imageshack.us/img18/6000/p3190226.th.jpg) (http://img18.imageshack.us/my.php?image=p3190226.jpg)

El codigo:
Código: [Seleccionar]

//Este programa utiliza un lcd del Nokia 3310
#include <18f4550.h>  // PIC que se va a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,nolvp  //Ordenes para el programador
#use delay(clock=4000000) 
#Include <nokia_lcd.c>


#byte PORTB=0xf81             // Dirección del PortB
#byte TRISB=0xf93          // Dirección Del TrisB


//definiciones
#byte PORTA=5
//#byte PORTB=6
#byte PORTC=7
#byte TRISA=0x85
//#byte TRISB=0x86
#byte TRISC=0x87
//

Byte CONST TABLE3 [249]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x78,0x04,0x02,0x01,0x00,0x00,0xC0,0xE0,0x30,0x10,0x18,
0x08,0x04,0x86,0xE1,0xF0,0x10,0x10,0x30,0x20,0x20,0x60,0x60,0x40,0x40,0x40,0x80,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,
0x18,0x20,0xE0,0xF0,0xD8,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFE,0xFE,0xFE,0xFC,0xF8,0xF8,0xF0,
0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

Byte CONST TABLE4 [255]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x67,0x17,0x0E,0x0F,0x0F,0xFF,0x3F,0x1F,0x1F,
0x1F,0x1F,0x3F,0xFF,0xFF,0x3F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,
0x7F,0x7F,0x7F,0x3F,0x1F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x4E,0x81,0x00,0x00,0x00,0x0E,0x11,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x09,0x93,
0xE7,0x86,0x06,0x06,0x02,0x02,0x03,0x03,0x03,0x01,0x01,0x01,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x00,0x00,0x00,0x00,0x1F,0x12,0x12,0x1E,0x00,0x02,0x6C,0x18,0x06,0x00,0x00,0x00,
0x00,0x0C,0x13,0x11,0x10,0x09,0x1E,0x10,0x10,0x1E,0x0C,0x12,0x12,0x12,0x0C,0x16,
0x12,0x1E,0x1E,0x06,0x02,0x06,0x0C,0x16,0x12,0x1E,0x00,0x0C,0x12,0x12,0x12,0x18,
0x1F,0x02,0x1E,0x0C,0x16,0x12,0x1E,0x00
};

Byte CONST TABLE5 [249]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x78,0x04,0x02,0x01,0x00,0x00,0xC0,0xE0,0x30,0x10,0x18,
0x08,0x04,0x86,0xE1,0xF0,0x10,0x10,0x30,0x20,0x20,0x60,0x60,0x40,0x40,0x40,0x80,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,
0x18,0x20,0xE0,0xF0,0xD8,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFE,0xFE,0xFE,0xFC,0xF8,0xF8,0xF0,
0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

Byte CONST TABLE6 [255]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x40,0x20,0x21,0x17,0x17,0x0E,0x0F,0x0F,0xFF,0x3F,0x1F,0x1F,
0x1F,0x1F,0x3F,0xFF,0xFF,0x3F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,
0x7F,0x7F,0x7F,0x3F,0x1F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1C,0x62,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x11,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x09,0x93,
0xE7,0x86,0x06,0x06,0x02,0x02,0x03,0x03,0x03,0x01,0x01,0x01,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x12,0x12,0x1E,0x00,0x02,0x6C,0x18,0x06,0x00,0x00,0x00,
0x00,0x0C,0x13,0x11,0x10,0x09,0x1E,0x10,0x10,0x1E,0x0C,0x12,0x12,0x12,0x0C,0x16,
0x12,0x1E,0x1E,0x06,0x02,0x06,0x0C,0x16,0x12,0x1E,0x00,0x0C,0x12,0x12,0x12,0x18,
0x1F,0x02,0x1E,0x0C,0x16,0x12,0x1E,0x00
};



Byte CONST TABLE7 [249]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x78,0x04,0x02,0x01,0x00,0x00,0xC0,0xE0,0x30,0x10,0x18,
0x08,0x04,0x86,0xE1,0xF0,0x10,0x10,0x30,0x20,0x20,0x60,0x60,0x40,0x40,0x40,0x80,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x18,0x20,0xE0,0xF0,0xD8,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFE,0xFE,0xFE,0xFC,0xF8,0xF8,0xF0,
0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};


Byte CONST TABLE8 [255]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x40,0x20,0x21,0x17,0x17,0x0E,0x0F,0x0F,0xFF,0x3F,0x1F,0x1F,
0x1F,0x1F,0x3F,0xFF,0xFF,0x3F,0x3F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,
0x7F,0x7F,0x7F,0x3F,0x1F,0x0E,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x60,0x98,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x11,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x09,0x93,
0xE7,0x86,0x06,0x06,0x02,0x02,0x03,0x03,0x03,0x01,0x01,0x01,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x12,0x12,0x1E,0x00,0x02,0x6C,0x18,0x06,0x00,0x00,0x00,
0x00,0x0C,0x13,0x11,0x10,0x09,0x1E,0x10,0x10,0x1E,0x0C,0x12,0x12,0x12,0x0C,0x16,
0x12,0x1E,0x1E,0x06,0x02,0x06,0x0C,0x16,0x12,0x1E,0x00,0x0C,0x12,0x12,0x12,0x18,
0x1F,0x02,0x1E,0x0C,0x16,0x12,0x1E,0x00
};



// Funcion Principal
void main(void)
{

int8 a;
int i;
   lcd_init();             // Inicialización LCD
   nokia_clean_ddram();    // La limpiamos (por si acaso)

for(i=0;i<5;i++){
    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE3[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE4[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea

    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE5[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE6[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea

    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE7[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE8[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea

    nokia_gotoxy(0,0);      // Nos ponemos en 0,0
   for (a=0;a<=248;a++){nokia_write_data(TABLE5[a]);} // Imprimimos el gráfico
   for (a=0;a<=254;a++){nokia_write_data(TABLE6[a]);}
   delay_ms(300);                                    // Espeamos, pa que se vea
}


   nokia_clean_ddram();                   // Limpiamos pantalla
   nokia_gotoxy(0,0);                     // Nos ponemos en 0,01
   printf(nokia_printchar,"abcdefghijklmn");  // Escribimos
   //nokia_gotoxy(0,1); no hay que poner esto ya que se escribe la fila entera..
   printf(nokia_printchar,"ñopqrstuvwxyzA");
   //nokia_gotoxy(0,2); ...aunque si se pone tampoco está mal
   printf(nokia_printchar,"BCDEFGHIJKLMNÑ");
   //nokia_gotoxy(0,3); idem
   printf(nokia_printchar,"OPQRSTUVWXYZ12");
   //nokia_gotoxy(0,4); idem
   printf(nokia_printchar,"34567890*/-+$#");
   //nokia_gotoxy(0,5); y más idem
   printf(nokia_printchar,"Listo!!    ;-)");
   delay_ms(500);

   a = 0x0C;
   while (1) {
      switch (a) {
         case 0x0c:
            nokia_write_command(0x0D);   // Modo normal
            a=0x0D;
            delay_ms(1000);
            break;
         case 0x0D:
            nokia_write_command(0x0C);   // Modo inverso
            a=0x0C;
            delay_ms(1000);
            break;
      }
   }
}


La libreria:

Código: [Seleccionar]
////////////////////////////////////////////////////////////////////////////////
// DESCRIPCIÓN DE LAS FUNCIONES
//
// void nokia_write_dorc(byte bytefornokia)              USO INTERNO
// void nokia_write_data(byte bytefornokia_data)         USO INTERNO
// void nokia_printchar(byte caracter)                   IMPRIME EL CARACTER
// void nokia_write_command(byte bytefornokia_command)   MANDA EL COMANDO
// void nokia_gotoxy(byte xnokia, byte ynokia)           SE POSICIONA EN X/Y
// void nokia_clean_ddram(void)                          LIMPIA LA PANTALLA
// void Lcd_init(void)                                   INICIALIZA LA LCD
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// CONFIGURACION DE LA CONEXION
//
// Conectamos la LCD al PORTB en los pines indicados
//
////////////////////////////////////////////////////////////////////////////////
#byte PORTB=0xf81                 // Dirección del PortB
#byte TRISB=0xf93              // Dirección Del TrisB
#bit nok_sclk  = PORTB.2 // RB2
#bit nok_sda   = PORTB.1 // RB1
#bit nok_dc    = PORTB.4      // RB4
#bit nok_cs    = PORTB.3      // RB3
#bit nok_res   = PORTB.7 // RB7
// FIN CONFIGURACION
////////////////////////////////////////////////////////////////////////////////

/*
Tabla de Instrucciones de la LCD. Siempre con D/C=0

0010 0xyz      // X=1 -> Driver en OFF
                     Y=1 -> Direccionamiento Vertical
                     Z=1 -> Comandos Extendidos

Modo de pantalla
0000 1001   0x09 // Entera Negra
0000 1000   0x08 // Entera Blanco
0000 1100   0x0c // Modo Normal
0000 1101   0x0d // Vídeo Inverso

Control de Temperatura
0100 0100   0x44  // Coeficiente de temperatura 0
0100 0101   0x45  // Coeficiente de temperatura 1
0100 0110   0x46  // Coeficiente de temperatura 2
0100 0111   0x47  // Coeficiente de temperatura 3

Bias (Contraste?)
0001 0xxx         // Establece el valor para Bias

Vop
1xxx xxxx         // Establece el valor para Vop
*/

////////////////////////////////////////////////////////////////////////////////
// Necesitamos dos tablas para la conversión de ASCII a pixels gráficos
// 5 Bytes por caracter.
// Usamos DOS tablas porque tenemos 96 columnas x 5 bytes = 480 bytes
// y solo podemos tener tablas de 255 bytes

// F1-ñ -> 0xFC,0x09,0x05,0x05,0xF8
// D1-Ñ ->
byte CONST ASCII_TABLE1 [240]={
                  0x00,0x00,0x00,0x00,0x00, // 20 space
0x00,0x00,0x5f,0x00,0x00, // 21 !
0x00,0x07,0x00,0x07,0x00, // 22 "
0x14,0x7f,0x14,0x7f,0x14, // 23 #
0x24,0x2a,0x7f,0x2a,0x12, // 24 $
0x23,0x13,0x08,0x64,0x62, // 25 %
0x36,0x49,0x55,0x22,0x50, // 26 &
0x00,0x05,0x03,0x00,0x00, // 27 '
0x00,0x1c,0x22,0x41,0x00, // 28 (
0x00,0x41,0x22,0x1c,0x00, // 29 )
0x14,0x08,0x3e,0x08,0x14, // 2a *
0x08,0x08,0x3e,0x08,0x08, // 2b +
0x00,0x50,0x30,0x00,0x00, // 2c ,
0x08,0x08,0x08,0x08,0x08, // 2d -
0x00,0x60,0x60,0x00,0x00, // 2e .
0x20,0x10,0x08,0x04,0x02, // 2f /
0x3e,0x51,0x49,0x45,0x3e, // 30 0
0x00,0x42,0x7f,0x40,0x00, // 31 1
0x42,0x61,0x51,0x49,0x46, // 32 2
0x21,0x41,0x45,0x4b,0x31, // 33 3
0x18,0x14,0x12,0x7f,0x10, // 34 4
0x27,0x45,0x45,0x45,0x39, // 35 5
0x3c,0x4a,0x49,0x49,0x30, // 36 6
0x01,0x71,0x09,0x05,0x03, // 37 7
0x36,0x49,0x49,0x49,0x36, // 38 8
0x06,0x49,0x49,0x29,0x1e, // 39 9
0x00,0x36,0x36,0x00,0x00, // 3a :
0x00,0x56,0x36,0x00,0x00, // 3b ;
0x08,0x14,0x22,0x41,0x00, // 3c <
0x14,0x14,0x14,0x14,0x14, // 3d =
0x00,0x41,0x22,0x14,0x08, // 3e >
0x02,0x01,0x51,0x09,0x06, // 3f ?
0x32,0x49,0x79,0x41,0x3e, // 40 @
0x7e,0x11,0x11,0x11,0x7e, // 41 A
0x7f,0x49,0x49,0x49,0x36, // 42 B
0x3e,0x41,0x41,0x41,0x22, // 43 C
0x7f,0x41,0x41,0x22,0x1c, // 44 D
0x7f,0x49,0x49,0x49,0x41, // 45 E
0x7f,0x09,0x09,0x09,0x01, // 46 F
0x3e,0x41,0x49,0x49,0x7a, // 47 G
0x7f,0x08,0x08,0x08,0x7f, // 48 H
0x00,0x41,0x7f,0x41,0x00, // 49 I
0x20,0x40,0x41,0x3f,0x01, // 4a J
0x7f,0x08,0x14,0x22,0x41, // 4b K
0x7f,0x40,0x40,0x40,0x40, // 4c L
0x7f,0x02,0x0c,0x02,0x7f, // 4d M
0x7f,0x04,0x08,0x10,0x7f, // 4e N
0x3e,0x41,0x41,0x41,0x3e}; // 4f O


byte CONST ASCII_TABLE2 [250]={
                  0x7f,0x09,0x09,0x09,0x06, // 50 P
0x3e,0x41,0x51,0x21,0x5e, // 51 Q
0x7f,0x09,0x19,0x29,0x46, // 52 R
0x46,0x49,0x49,0x49,0x31, // 53 S
0x01,0x01,0x7f,0x01,0x01, // 54 T
0x3f,0x40,0x40,0x40,0x3f, // 55 U
0x1f,0x20,0x40,0x20,0x1f, // 56 V
0x3f,0x40,0x38,0x40,0x3f, // 57 W
0x63,0x14,0x08,0x14,0x63, // 58 X
0x07,0x08,0x70,0x08,0x07, // 59 Y
0x61,0x51,0x49,0x45,0x43, // 5a Z
0x00,0x7f,0x41,0x41,0x00, // 5b [
0x02,0x04,0x08,0x10,0x20, // 5c
0x00,0x41,0x41,0x7f,0x00, // 5d
0x04,0x02,0x01,0x02,0x04, // 5e
0x40,0x40,0x40,0x40,0x40, // 5f
0x00,0x01,0x02,0x04,0x00, // 60
0x20,0x54,0x54,0x54,0x78, // 61 a
0x7f,0x48,0x44,0x44,0x38, // 62 b
0x38,0x44,0x44,0x44,0x20, // 63 c
0x38,0x44,0x44,0x48,0x7f, // 64 d
0x38,0x54,0x54,0x54,0x18, // 65 e
0x08,0x7e,0x09,0x01,0x02, // 66 f
0x0c,0x52,0x52,0x52,0x3e, // 67 g
0x7f,0x08,0x04,0x04,0x78, // 68 h
0x00,0x44,0x7d,0x40,0x00, // 69 i
0x20,0x40,0x44,0x3d,0x00, // 6a j
0x7f,0x10,0x28,0x44,0x00, // 6b k
0x00,0x41,0x7f,0x40,0x00, // 6c l
0x7c,0x04,0x18,0x04,0x78, // 6d m
0x7c,0x08,0x04,0x04,0x78, // 6e n
0x38,0x44,0x44,0x44,0x38, // 6f o
0x7c,0x14,0x14,0x14,0x08, // 70 p
0x08,0x14,0x14,0x18,0x7c, // 71 q
0x7c,0x08,0x04,0x04,0x08, // 72 r
0x48,0x54,0x54,0x54,0x20, // 73 s
0x04,0x3f,0x44,0x40,0x20, // 74 t
0x3c,0x40,0x40,0x20,0x7c, // 75 u
0x1c,0x20,0x40,0x20,0x1c, // 76 v
0x3c,0x40,0x30,0x40,0x3c, // 77 w
0x44,0x28,0x10,0x28,0x44, // 78 x
0x0c,0x50,0x50,0x50,0x3c, // 79 y
0x44,0x64,0x54,0x4c,0x44, // 7a z
0x00,0x08,0x36,0x41,0x00, // 7b
0x00,0x00,0x7f,0x00,0x00, // 7c
0x00,0x41,0x36,0x08,0x00, // 7d
0x10,0x08,0x08,0x10,0x08, // 7e
0x78,0x46,0x41,0x46,0x78,  // 7F
                  0x7C,0x09,0x05,0x05,0x78,  // 80 -> ñ
                  0x7E,0x05,0x09,0x11,0x7E   // 81 -> Ñ
                  }; // 7f



////////////////////////////////////////////////////////////////////////////////
// Envía en serie todos los bits del byte pasado
////////////////////////////////////////////////////////////////////////////////
void nokia_write_dorc(byte bytefornokia)
{
char caa;
   for (caa=8;caa>0;caa--) {
nok_sclk=0;
delay_us(2);
if ((bytefornokia&0x80)==0) {
         nok_sda=0;
      }
else {
         nok_sda=1;
      }
nok_sclk=1;
bytefornokia=bytefornokia<<1;
}
}

////////////////////////////////////////////////////////////////////////////////
// Prepara a la LCD para que guarde el byte en la RAM (para que lo muestre
////////////////////////////////////////////////////////////////////////////////
void nokia_write_data(byte bytefornokia_data)
{
   nok_dc=1;
   nok_cs=0; // chip enabled
   nokia_write_dorc(bytefornokia_data);   // Rutina que manda en serie los bits
   nok_cs=1; // chip disabled
}


////////////////////////////////////////////////////////////////////////////////
// Escribe un comando en el nokia. Para los comandos se activa D/C
////////////////////////////////////////////////////////////////////////////////
void nokia_write_command(byte bytefornokia_command)
{
   nok_dc=0; // byte is a command it is read with the eight SCLK pulse
   nok_cs=0; // chip enabled
   nokia_write_dorc(bytefornokia_command);
   nok_cs=1; // chip disabled
}

////////////////////////////////////////////////////////////////////////////////
// Escribe en la LCD el caracter pasado
////////////////////////////////////////////////////////////////////////////////
void nokia_printchar(byte caracter)
{
byte char_row,charpos,chardata;

   if(caracter==0xF1) caracter=0x80;
   else if(caracter==0xD1) caracter=0x81;
   else if (caracter<0x20) return;
   else if (caracter>0x7f) return;

for (char_row=0;char_row<5;char_row++) {           // Son 5 Bytes por caracter
                                                   // Por eso este bucle
   if (caracter<0x50) {
      charpos=(((caracter&0xff)-0x20)*5)+char_row;
      chardata=ASCII_TABLE1[charpos];
      }

   else if (caracter>0x4f) {
      charpos=(((caracter&0xff)-0x50)*5)+char_row;
      chardata=ASCII_TABLE2[charpos];
      }
nokia_write_data(chardata);                    // Manda el caracter
   }
nokia_write_data(0x00);                           // Mandamos 1 espacio Blanco
}


////////////////////////////////////////////////////////////////////////////////
// Posicionamiento en la pantalla
////////////////////////////////////////////////////////////////////////////////
void nokia_gotoxy(byte xnokia, byte ynokia) // Nokia LCD 3310 Position cursor
{
nokia_write_command(0x40|(ynokia&0x07)); // Y axe initialisation: 0100 0yyy
nokia_write_command(0x80|(xnokia&0x7f)); // X axe initialisation: 1xxx xxxx
}


////////////////////////////////////////////////////////////////////////////////
// Limpiamos la RAM (la pantalla)
////////////////////////////////////////////////////////////////////////////////
void nokia_clean_ddram(void)
{
int16 ddram;  //cambiar por la del rtc del tio eso

   nokia_gotoxy(0,0);                  // Vamos al principio
   for (ddram=504;ddram>0;ddram--) {   // bucle estableciendo cada byte a 0x00
      nokia_write_data(0x00);
   }
}


////////////////////////////////////////////////////////////////////////////////
// Inicialización de la pantalla
////////////////////////////////////////////////////////////////////////////////
void Lcd_init(void) {
   TRISB = 0;
   delay_us(200);       // Pequeño delay de seguridad
nok_dc=1; // Destino de Bytes -> RAM
nok_cs=1; // Desactivamos el Driver para que se inicialice
   delay_ms(10);
nok_res=0; // Y damos un pulso de reset según indica el datasheet
delay_ms(250); // durante 1us.
nok_res=1;
nokia_write_command(0x21); // Activamos los comandos extendidos
nokia_write_command(0x90); // Definimos el Vop. Establecerá la tensión interna del cristal (su contraste)
nokia_write_command(0x13); // bias 13. Min 10 Max 17
nokia_write_command(0x20); // Modo horizontal, de izq. a dcha. Se incrementa la posición automáticamente
   nokia_write_command(0x09); // all on
delay_ms(50);
nokia_clean_ddram();        // Limpiamos la RAM para que no haya basura en la LCD
delay_ms(10);
nokia_write_command(0x0c); // mod control normal change
}




Si veis algo que este mal o pensais algo que este haciendo mal, me lo decis por favor.

Saludos.
Título: Re: Lcd nokia 3310
Publicado por: nico en 19 de Marzo de 2009, 21:45:22
Haber, que has conectado al reves, el micro o el display, porque cualquiera de los dos que los hayas conectado a la alimentacion al reves no deberia funcionar mas. Generalmente, y te diria en todos los casos, si los polarizas mal fuiste.

Porque no pruebas el micro con otro programa simple, apagar y prender un led por cualquiera de los puertos, asi sales de la duda si el micro funciona. Prueba con un osciloscopio si las señales que salen por los pines y van hacia el display son las correctas.

Pero antes que nada, asegurate que el micro funcione, sino estaras modificando el codigo hasta el cansancio sin necesidad.

Slds.
Nico.
Título: Re: Lcd nokia 3310
Publicado por: Trust en 19 de Marzo de 2009, 22:49:42
Gracias por responder, el micro funciona bien y no lo he conectado al reves. Con la lcd si que me equivoque al primer intento y lo conecte al reves.
Si que se que si se conectan al reves vdd y gnd en un lcd de 16x2 ya no vuelven a funcionar por que me paso una vez, pero en el caso del lcd nokia 3310 no lo se.
¿alguien ha conectado mal este lcd y le ha seguido funcionando?

Tengo otro lcd pero quiero asegurarme primero de que esta todo bien.

Título: Re: Lcd nokia 3310
Publicado por: Trust en 20 de Marzo de 2009, 20:56:53
Buscando mas fotos y esquemas he encontrado una en la que sale un pequeño circuito que esta en la pantalla y mi pantalla no tiene ese circuito. Pongo una foto para que se vea lo que digo.
Lo he marcado en rojo.
¿Que hace ese circuito?

(http://img22.imageshack.us/img22/2628/imagemkpb.th.jpg) (http://img22.imageshack.us/my.php?image=imagemkpb.jpg)

Sigo sin poderlo hacer andar. :oops:
Título: Re: Lcd nokia 3310
Publicado por: kcire en 20 de Marzo de 2009, 22:18:14
Hola Trust, contarte que a mi me funciono bien y eso que utilice un PIC16F877A y CCS, mañana me saco el tiempo para probar tu codigo, con respecto al circuito la verdad no lo recuerdo muy bien ya fue hace mucho que probe este LCD pero podrias ver esta dirección donde lo explican con detalle, claro tambien proponen un ejmeplo que esta en ASM y no en C espero te sirva de algo:

h**p://www.x-robotics.com/hardware.htm#LCD Gráfico 84x48 pixels NOKIA 3310

Saludos... Erick
Título: Re: Lcd nokia 3310
Publicado por: Trust en 20 de Marzo de 2009, 22:45:36
Hola kcire, muchas gracias por tu ayuda. Si puedes probar el codigo, si te funciona o no me lo dices.

Mañana probare el circuito que hay en x-robotics.com, espero que ese sepa yo hacerlo funcionar.

Saludos.
Título: Re: Lcd nokia 3310
Publicado por: Veguepic en 21 de Marzo de 2009, 02:14:30
Hola Trust, yo probe ese circuito y si funciona

http://www.todopic.com.ar/foros/index.php?topic=13812.msg87000#msg87000

Saludos
Hugo
Título: Re: Lcd nokia 3310
Publicado por: Trust en 21 de Marzo de 2009, 07:16:13
Hola Veguepic, muchas gracias. Hoy montare el circuito y lo pruebo.
Espero no haber estropeado mi lcd con tantas pruebas y que me funcione.
 :-)
Saludos.
Título: Re: Lcd nokia 3310
Publicado por: xp8100 en 20 de Enero de 2010, 15:55:19
Saludos.

Disculpen si no es el lugar oportuno para esta pregunta.

He comprado en eBAY un LCD 3310 y me han enviado un LCD + carcasa + Altavoz.

Me gustaría saber cual es el mejor método para eliminar la carcasa y dejar el LCD libre, sin cargarme nada.

(Taladrar los remaches de plástico, tirar de cuter, aplastarlo con un tomo del ESPASA CALPE :-))

Me encantaría adjuntar una imagen, pero no tengo ni idea de como hacerlo así que espero perdoneis mi ignorancia.

Gracias anticipadas
Título: Re: Lcd nokia 3310
Publicado por: Nocturno en 20 de Enero de 2010, 19:37:21
Me anoto al hilo por si alguien responde. Yo no tuve el valor suficiente de quitarle los plásticos al mío.
Título: Re: Lcd nokia 3310
Publicado por: Veguepic en 20 de Enero de 2010, 20:15:44
Supongo que te refieres a este

http://cgi.ebay.com/NEW-LCD-WITH-SPEAKER-AND-CONNECTOR-FOR-NOKIA-3310_W0QQitemZ270508601117QQcmdZViewItemQQptZUK_Mobiles_Accessories_RL?hash=item3efb91af1d

Me habia olvidado que tengo uno igual, la de cosas que uno compra y van al cajon de los olvidos.  :( :(

Yo no lo sacaria de ahi, pues puedes aprovechar el soporte mismo para perforarlo y luego fijarlo con tornillos.

Si lo sacas de ahi la unica manera que se me ocurrio de fijarlo fue asi

(http://img209.imageshack.us/img209/7928/16f628zh5.th.jpg) (http://img209.imageshack.us/my.php?image=16f628zh5.jpg)

Lo que pasa es que el tipo que me vendio el LCD me lo dio sin la carcasa metalica ni el plastico de soporte, como no queria soldarle nada en los contactos decidi hacerle el soporte con varias fundas de CDs pegadas, fue un poco laborioso pero al fin lo termine, solo falta hacerle los agujeros bien alineaditos y sus respetivos tornillos.

Creo que me quedo corto cuando dije que fue un poco laborioso.  :D :D

Saludos
Título: Re: Lcd nokia 3310
Publicado por: jeremylf en 21 de Enero de 2010, 03:10:13
Bueno no me e leido too el post completo pero AQUI (http://www.todopic.com.ar/foros/index.php?topic=27100.0) hago un estudio exhaustivo xD a este LCD y alfinal de todo el problema era el contraste, habia que modificarlo y blabla. Dale una revisada que esta todo bien documentado ja

Espero te sirva.
Salu2.
Título: Re: Lcd nokia 3310
Publicado por: sal0m0n en 26 de Enero de 2010, 17:53:40
Yo tengo es LCD de NOKIA 3320, que es TDMA.... pero no consigo el datasheet o donde ver si es compatible... ademas, esta LCD usa unas almohadillas para hacer los contactos, en vez de las laminitas de cobre que se ven en  la imagen! :( tambien tengo LCD de 6120.... (con almohadillas tambien)


gracias
Título: Re: Lcd nokia 3310
Publicado por: sal0m0n en 29 de Enero de 2010, 20:23:16
Bueno les comento que me arriesgue e hice las conexiones a la lcd de 6120 TDMA y al parecer son las mismas que las de otras LCD de nokia...
esta tiene 9 pines, y el esquema de conexion lo saque de aqui: http://serdisplib.sourceforge.net/ser/pcd8544.html segun... esta LCD es del "tipo 2", agarre un pic 18f452 y recompile un archivo en c de cucaracha y funciono a la primera!



salu2
Título: Re: Lcd nokia 3310
Publicado por: Nocturno en 29 de Enero de 2010, 20:24:54
Pues enhorabuena por conseguirlo. Son unos LCD estupendos, con un gran contraste y muy fáciles de usar.
Título: Re: Lcd nokia 3310
Publicado por: xp8100 en 29 de Enero de 2010, 21:00:59
La verdad es que por poco dinero da un resultado cojonudo.

Lamentablemente yo de entrada me he cargado el que tengo despues de intentar soldar el conector, pero bueno .....

Ya he pedido 4 más a china.

Mal asunto para gente poco manitas como yo.

Un saludo.
Título: Re: Lcd nokia 3310
Publicado por: jeremylf en 30 de Enero de 2010, 04:37:43
Alguien sabra del datasheet del lcd del nokia 1600b o similar?? Esque su lcd es del tamaño del 3310 pero a color! Y al parecer, tambien es SPI.

Salu2.
Título: Re: Lcd nokia 3310
Publicado por: sal0m0n en 30 de Enero de 2010, 14:21:47
Aqui les dejo una foto del sistema con pantalla nokia 6120 (compatible 5120, 5125 etc) funcionando con el HEX que publico Jeremy...

con respecto a las lcd a color del 1600 no hay mucha info pero hay para otros modelos, segun esta gente (http://forum.lcdinfo.com/viewtopic.php?t=586) hay dos tipos de controladores uno philips y uno epson. quizas ayude.

PD: al mejorar mis habilidades con estas LCD de un bit me sumo a las coloridas amigas de 12bits!


(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=25223.0;attach=11124)
Título: Re: Lcd nokia 3310
Publicado por: sal0m0n en 12 de Marzo de 2010, 01:01:32
Aqui les dejo una imagen de un PCB que me fabrique para conectar las LCD de los nokia con conectores de 10 pines... entre ellos los de nokia 1600, tanto para LCD a color como para LCD a blanco y negro...


espero aprender y experimentar bastante para postear resultados.


(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=25223.0;attach=11422)
Título: Re: Lcd nokia 3310
Publicado por: migsantiago en 12 de Marzo de 2010, 11:18:29
Aqui les dejo una imagen de un PCB que me fabrique para conectar las LCD de los nokia con conectores de 10 pines... entre ellos los de nokia 1600, tanto para LCD a color como para LCD a blanco y negro...


espero aprender y experimentar bastante para postear resultados.

Hola, ¿dónde compraste el conector SMD? ¿En Sparkfun?
Título: Re: Lcd nokia 3310
Publicado por: sal0m0n en 12 de Marzo de 2010, 14:48:37
Hola! no, de hecho me acerque a un taller de reparación de celulares con la pantalla para la que necesitaba el conector y tenian montones de placas de nokia con este tipo de conector, asi que les pedi que me vendieran un conector y simplemente lo desoldaron y me lo regalaron  :o. en este caso como les comente el conector es el de 10 pines.

también tengo el esquema de los pines de la LCD de algunos modelos de NOKIA para complementar con los datasheets de las LCDs

salu2




Título: Re: Lcd nokia 3310
Publicado por: migsantiago en 12 de Marzo de 2010, 14:54:46
Hola! no, de hecho me acerque a un taller de reparación de celulares con la pantalla para la que necesitaba el conector y tenian montones de placas de nokia con este tipo de conector, asi que les pedi que me vendieran un conector y simplemente lo desoldaron y me lo regalaron  :o. en este caso como les comente el conector es el de 10 pines.

también tengo el esquema de los pines de la LCD de algunos modelos de NOKIA para complementar con los datasheets de las LCDs

salu2

¿Tendrás datos sobre la Nokia 1600?

http://www.todopic.com.ar/foros/index.php?topic=29290.0