me explico mejor
bueno si alguien que sepa C y PBP se conmueve y me ayuda a pasar este codigo a Basic
ya he leido no crean que es flojera y he traducido la mayor parte del codigo solo me faltan la parte de las tablas
este es el codigo en C la creacion de la tabla : ( el principio ya que lo demas se repite para crear los caracteres)
llamemoslo a esta seccion para que se entienda mejor parte A del Programa
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 '
y despues de tener las tablas le viene el codigo que llama a la tabla y escribe el caracter:
parte B del programa
////////////////////////////////////////////////////////////////////////////////
// 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
}
////////////////////////////////////////////////////////////////////////////////
esta otra seccion escribe una frace
parte C del progrma
////////////////////////////////////////////////////////////////////////////////
// Escribe gráficamente texto en la LCD
////////////////////////////////////////////////////////////////////////////////
void nokia_texto(char x, char y, char fuente, char *caracter)
{
int ind_bitmap,ind_memoria,xx,yy,max,desplazamiento;
char letra,alto,ancho,EscribirByte;
if (fuente==1)
{ancho=3;alto=6;}
else
if (fuente==2)
{ancho=5;alto=7;}
else
{ancho=7;alto=8;}
letra=*caracter;
while (letra!=0)
{
for (xx=0;xx<ancho;xx++)
if (((xx+x)<84) && ((xx+x)>=0) && (y>=0)&& (y<=40))
{
ind_memoria = xx + x + (y>>3)*84;
ind_bitmap = (letra-0x20) * ancho + xx;
desplazamiento = y%8;
if (fuente==1)
EscribirByte = Fuente_3_6[ind_bitmap];
else
if (fuente==2)
EscribirByte = Fuente_5_7[ind_bitmap];
else
EscribirByte = Fuente_7_8[ind_bitmap];
MemoriaVideo[ind_memoria] = MemoriaVideo[ind_memoria] | (EscribirByte<<desplazamiento);
if (desplazamiento)
MemoriaVideo[ind_memoria+84] = MemoriaVideo[ind_memoria+84] | ((EscribirByte>>(8-desplazamiento)) & (0xFF >> (8-desplazamiento)));
}
caracter++;
letra=*caracter;
x=x+ancho+1;
}
}
////////////////////////////////////////////////////////////////////////////////
se que es mucho pero al fin se tiene una rutina donde se puede escribir en la pantalla solo con una
rutina y se hace mas facil como por ejemplo esta seccion:
for (k=40;k>-64;k--)
{
nokia_texto(0,k,NORMAL, "Esta libreria");
nokia_texto(0,k+8,NORMAL, "esta basada en");
nokia_texto(0,k+16,NORMAL,"las funciones");
nokia_texto(0,k+24,NORMAL,"de mi amigo");
nokia_texto(0,k+32,NEGRITA," CUCARACHA");
nokia_texto(0,k+48,NORMAL,"Descargala en");
nokia_texto(0,k+56,NEGRITA,"EL");
nokia_texto(20,k+56,NEGRITA,"REBUJITO");
nokia_texto(0,k+64,COMPRIMIDA,"HTTP:/MANOLO.AUNA.COM");
nokia_imprime_memoria();
nokia_borra_memoria();
DelayMs(150);
las turinas que yo ya hice :
- como escribri un comando
- como escribri un dato
- escribir un caracter sin tablas
se ve poquito pero no me fue muy facil ya qeu el contraste me jugo una mala pasada y no veia lo que escribia
y tube que releer el manual del controlador de la pantalla hasta me hice una traduccion del dichoso ya que esta en ingles como todos los datasheet.
Despues de tan largo detalle lo que voy realizar ya que solo es cuestion de insistir seria:
una sub rutina llamada "nokia_texto" esta escribe una "frase" completa llamando a otra sutina llamada
nokia_printchar esta escribe una letra para hacerlo lo hace con la tabla ASCII_TABLE
Para la parte de la tabla creo que ya lo tengo mas o menos he visto los ejemplos de LordLafebre para crearla y con lo de arriba estoy en rumbo de crear la sutina de leer la tabla y escribir el caracter. Pa mañana les aviso si funcionaron mis ideas si no voy a seguir molestando.
NOTA: no quiero toda la programacion solo una orientacion un rumbo (me salio laro el post no!!)jeje
Malo no es que no sepa lo malo seria que me quedase asi