Autor Tema: GLCD Nokia 3310 en Proteus  (Leído 24224 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: GLCD Nokia 3310 en Proteus
« Respuesta #30 en: 12 de Agosto de 2009, 19:58:16 »
Bueno, decir que lo de la letra Ñ y ñ con el codigo que propuse en mi post anterior solo funciona con el tipo de letra NORMAL (Fuente_5_7) ya que solo esta la tiene implementada.

Gracias pablomanieri por el detalle, ahora si, 100% ??  :D


Salu2.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: GLCD Nokia 3310 en Proteus
« Respuesta #31 en: 13 de Agosto de 2009, 00:20:49 »
Ahora si tengo problemas!!!

Probe el glcd (el que supuestamente habia quemado por tanto cautin) en su propio celular (el nokia 3310) y FUNCIONO!! Lo he vuelto a probar en mi circuito y NADAA!!!!!

AHH!! me tiene loco! que puede ser ?? Estoy usando el programa de cucaracha de su pagina tal cual modificado el #INCLUDE para el PIC18F2550 nada mas. Los registros del puerto B son los mismos, el circuito es el mismo. A diferencia que lo estoy probando con un condensador en Vout de 10uF, aunq tb lo probe con un de 1uF y NADA! el PIC corre a 4MHZ como el de cucaracha, esta trabajando a 3.3V por si las dudas con un LM1117. Uso la placa del mismo cucaracha tb, las conexiones directas al GLCD. Que peude ser? que puede ser??!!! El pic tiene su condensador 104. He revisado si bota algo con el osciloscopio y efectivamente lo hace. Pero aun asi, NADA!

Voy a llorar!!! hahah xD

Que estresante este GLCD, que mas info puedo dar? MCLR esta deshabilitado, uso leds para verificar si sige el curso del codigo y si lo hace. No prende ningun pixel, asi NINGUNO de los 4032 (84x48 xD) pixeles que tiene, ninguno!!

Ayuda! xP


Gracias, salu2.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: GLCD Nokia 3310 en Proteus
« Respuesta #32 en: 13 de Agosto de 2009, 01:23:11 »
¿No será el contraste?

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: GLCD Nokia 3310 en Proteus
« Respuesta #33 en: 13 de Agosto de 2009, 01:38:19 »
A que te refires? al condensador que va en vout? Pues ahora lo tengo con 10uF y tb lo he probado con uno de 1uF. O otra cosa?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: GLCD Nokia 3310 en Proteus
« Respuesta #34 en: 13 de Agosto de 2009, 01:58:41 »
Sí, tienes razón, ya no me acordaba bien y pensaba que se regula con potenciómetro.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: GLCD Nokia 3310 en Proteus
« Respuesta #35 en: 13 de Agosto de 2009, 03:50:13 »
Bueno y esto sige sin funcionar =[

Lo he probado con dos pics y  nada.

Nose si tu Nocturno o pablomanieri o alguien pueda probar esto para saber si es un problema de software o hardware (Aunq mas me incline por este ultimo aunq todo este bien =S). Bueno este es el codigo en c hecho en CCS 4.023:

Código: [Seleccionar]
#include <18F2550.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,nolvp

#FUSES MCLR, NOPBADEN

#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;
  
   output_high(PIN_C0);
  
   lcd_init();             // Inicialización LCD
   nokia_clean_ddram();    // La limpiamos (por si acaso)

for(i=0;i<5;i++){ output_toggle(PIN_C0);
    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);   output_toggle(PIN_C0);
            break;
         case 0x0D:
            nokia_write_command(0x0C);   // Modo inverso
            a=0x0C;
            delay_ms(1000);   output_toggle(PIN_C0);
            break;
      }
   }
}

Es el mismo de la pagina de cucaracha con la unica modificacion del cambio de pic (del 18f252 al 18f2550) con el #include, dos fusibles mas: el MCLR para resetear todo con un boton y el NOPBADEN para poner al puerto B (Porque cucaracha lo usa en el puerto B la comunicacioncon el GLCD) como I/Os digitales cuando hay resets porque crei pertinente, y agrege "output_toggle(PIN_C0)" en algunas partes del codigo para saber que esta corriendo bien.

Y donde se ve esa configuracion de los pin para con el glcd es en la libreria de cucaracha, esta:
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.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
// 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
}

Esta si no la he modificado en lo absoluto, nada.

Lo he probado en el proteus 7.4 SP3 y funciona tb alli.

Dejo todo el proyecto, hex, c, lib nokia, sim en proteus para que sea mas factible todo y puedan ayudarme porfavor con alguna prueba en fisica con todo esto.

Por otro lado, decir que mi hardware no es nada, es sencillisimo tal y como debe de ser. Pero si a quien pueda probar el hex que dejo adjunado y le funciona sin problemas pues... me tendre que preocupar por el hardware.

Espero alguien pueda ayudarme con esto que no encuentro solucion.


Gracias, salu2.
« Última modificación: 13 de Agosto de 2009, 04:03:54 por jeremylf »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: GLCD Nokia 3310 en Proteus
« Respuesta #36 en: 13 de Agosto de 2009, 04:19:11 »
Yo lo siento mucho, pero no puedo. Ni siquiera sé dónde tengo el display...

Una duda, porque ya ni me acuerdo de cómo era: ¿el condensador se pone con el negativo a masa o con el positivo a masa para que genere tensión negativa en el LCD.
Otros GLCD que conozco llevan tensión negativa en la alimentación.

Si no te atreves a darle la vuelta y probar, puedes ponerlo en el móvil donde te funciona correctamente y medir la tensión en el pin.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: GLCD Nokia 3310 en Proteus
« Respuesta #37 en: 13 de Agosto de 2009, 06:10:41 »
El condensador va en el pin VOut del GLCD a tierra.

Aqui algunos links de info:
http://www.radiolocman.com/shem/schematics.html?di=44132
http://elettronic.altervista.org/elettronica_000002.htm
http://www.x-robotics.com/

Tu mismo lo usaste con un condensador de 10uF a tierra, como pasa el tiempo eh! xD


Gracias por la preocupacion de todas maneras.
Salu2.

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: GLCD Nokia 3310 en Proteus
« Respuesta #38 en: 13 de Agosto de 2009, 10:51:05 »
Paisa, la semana pasada vi mi GLCD en el cajon de los pendientes (olvidos)

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

Creo que el esquema es el mismo de X-robotics, en la noche me doy un tiempo para probarlo.

Saludos
Hugo

5 am y aun respondiendo????  :shock:
« Última modificación: 13 de Agosto de 2009, 11:06:46 por Veguepic »
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: GLCD Nokia 3310 en Proteus
« Respuesta #39 en: 13 de Agosto de 2009, 14:42:21 »
Gracias broer, me ayudas mucho.

Esque aprovecho lal maximo os pocos dias que me quedan de vacaciones  :mrgreen:


Sau2

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: GLCD Nokia 3310 en Proteus
« Respuesta #40 en: 14 de Agosto de 2009, 05:09:49 »
Jeremy

Lo acabo de probar y no pasa nada con el GLCD ningun pixel se enciende ni tampoco el led.

Si gustas pasame otro programa de prueba para este mismo PIC.

Saludos
Hugo
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: GLCD Nokia 3310 en Proteus
« Respuesta #41 en: 14 de Agosto de 2009, 05:26:45 »
Recien veo que en la configuracion pusiste XT pero en la simulacion no veo el critasl!!!!!!!!!!!

Sera que se te paso.  :D :D
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: GLCD Nokia 3310 en Proteus
« Respuesta #42 en: 14 de Agosto de 2009, 08:06:56 »
habría que verificar que las direcciones de memoria de los puertos y los tris que para el pic 18f2550, que se asignan en el programa sean las correctas. creo que el B está bien pero el A y el C me parece que no, verifíquenlo porque puede ser que esté mal. saludos

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: GLCD Nokia 3310 en Proteus
« Respuesta #43 en: 14 de Agosto de 2009, 18:20:28 »
Veguepic, pongo XT porque uso un cristal de 4mhz. En la simulacion no pongo el cristal porque no es necesario, yaq funciona. Pero en fisico si lo hago y nada.

La configuracion de puertos que uso cucaracha para el 18f252 en el programa es la misma para el 18f2550. Por otro lado, los puertos A y C no se usan.


Porque tampoco te funcionaria a ti veguepic? Es, como digo, el mismo codigo de cucaracha compatibilizado para el 18f2550 con las modificacion que menciono anteriormente. Que pasa? =S


Gracias por el apoyo a todos!
Salu2.

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: GLCD Nokia 3310 en Proteus
« Respuesta #44 en: 14 de Agosto de 2009, 23:01:24 »
Acabo de poner el cristal de 4 MHz y solo parpadea el led, el GLCD nada de nada hombre.

Yo me inclino a pensar que es tu programa pues este GLCD si me funciona.

Te ayudaria si pudiera pero yo de "C" no se.

Saludos
Hugo
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo


 

anything