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:
#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:
////////////////////////////////////////////////////////////////////////////////
// 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.