Autor Tema: C18: Librería para creación de menús en GLCD 128x64.  (Leído 24738 veces)

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: C18: Librería para creación de menús en GLCD 128x64.
« Respuesta #60 en: 27 de Junio de 2012, 18:48:41 »
Saludos Suky

Excelente tu aporte una vez mas. Me gustaría saber cual es la referencia de la GLCD que empleas la de 128*64.

Atento a tu respuesta, Gracias  :-/

Compatible con ks0108  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Rikr09

  • PIC16
  • ***
  • Mensajes: 112
Re: C18: Librería para creación de menús en GLCD 128x64.
« Respuesta #61 en: 29 de Junio de 2012, 09:48:07 »
Saludos Suky

Excelente tu aporte una vez mas. Me gustaría saber cual es la referencia de la GLCD que empleas la de 128*64.

Atento a tu respuesta, Gracias  :-/

Compatible con ks0108  ;-)


Saludos!
Gracias una vez mas Suky!!   :)

Desconectado yeremayo

  • PIC10
  • *
  • Mensajes: 8
Re: C18: Librería para creación de menús en GLCD 128x64.
« Respuesta #62 en: 19 de Abril de 2013, 18:35:54 »
Hola Suky y amigos del foro solo una pregunta, he estado mirando la librería y observe una cosilla,
cuando lees la entrada AD y quieres mostrar por ejemplo 0.055 en la pantalla aparece 0.55,
la pregunta es ¿porque no aparece el cero después del punto?? porque por ejemplo si simulamos
tu proyecto y movemos el pot, en 2% nos da en pantalla 0.97 que seria (0.097) y en 3% nos da 0.151.

saludos espero que me haya hecho entender.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: C18: Librería para creación de menús en GLCD 128x64.
« Respuesta #63 en: 19 de Abril de 2013, 20:17:29 »
Hola Suky y amigos del foro solo una pregunta, he estado mirando la librería y observe una cosilla,
cuando lees la entrada AD y quieres mostrar por ejemplo 0.055 en la pantalla aparece 0.55,
la pregunta es ¿porque no aparece el cero después del punto?? porque por ejemplo si simulamos
tu proyecto y movemos el pot, en 2% nos da en pantalla 0.97 que seria (0.097) y en 3% nos da 0.151.

saludos espero que me haya hecho entender.

mmm... Es un bug! El tema esta en que no había librería para pasar float a string e invente algo y seguro mal!  :? Dale una revisada a eso, creo que en una versión posterior use una librería para pasar a string un numero flotante. Busca por el foro que ha sido mencionada varias veces dicha librería.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado yeremayo

  • PIC10
  • *
  • Mensajes: 8
Re: C18: Librería para creación de menús en GLCD 128x64.
« Respuesta #64 en: 19 de Abril de 2013, 20:39:37 »
jajaja lo solucione de manera manual haber que le parece maestro Suky es una jalada de pelos pero me funciono: :D

   decimas=((short long)(valor*VisualizacionNDecimas)%(VisualizacionNDecimas)); //con dos decimales VisualizacionNDecimas =100
   if(decimas<10){sprintf(Texto,"%d,0%u"Entero,Decimas);}
   if(decimas>=10){sprintf(Texto,"%d,%u",Entero,Decimas);}

saludos gracias por la respuesta lo voy a revisar.


Desconectado thomas666

  • PIC10
  • *
  • Mensajes: 5
Re: C18: Librería para creación de menús en GLCD 128x64.
« Respuesta #65 en: 13 de Mayo de 2013, 16:51:08 »
hola a todos....................
quisiera saber si me pueden ayudar con una lcd 128x64 que estoy manejando...............
es un proyecto nuevo que estoy reaizando y estoy tratando de desifrar como funciona estoy manejando un controlador KS0108  con e cual e realizado este codigo en c18:



Código: [Seleccionar]
#include <p18f4550.h>
#include <delays.h>

void InOut_Init(void);
void Ennable(void);
void Init_LCD_Grafica(unsigned char DATO);
void write_Comand(unsigned char comand,unsigned char byte);
void write_dato(unsigned char dato);
void Draw(void);
void actualizar(void);


#pragma config FOSC=INTOSC_EC //configuracion oscilador interno
#pragma config WDT=OFF //watchdog deshabilitado
#pragma config MCLRE=OFF //MCLEAR habilitado
#pragma config LVP=OFF //single-supply ICSP halitado
#pragma config PBADEN=OFF



unsigned int comand_cs1=0,comand_cs2=1;
unsigned char Address_X=0xb8;
unsigned char Address_Y=0x40;
unsigned char Star_Line=0xc0;
unsigned char GLCD_ON=0x3f;
unsigned char GLCD_OFF=0x3e;
unsigned int X=0xb8,Y=0x40;
unsigned int pixel=0X01;
unsigned char on=1,off=0;
unsigned char vector[8]={0B11111111,0B11111111,0B11111111,0B11111111,0B11111111,0B11111111,0B11111111,0B11111111};

void main (void){
InOut_Init();
Init_LCD_Grafica(on);
Draw();



while(1){
}
}

void InOut_Init(void){
ADCON1=0X0F;
TRISB=0X00;
TRISA=0b00000000;
TRISC=0b11000000;
TRISD=0X00;
TRISE=0X00;
LATC=0X00;
OSCCONbits.IRCF0=0;       
  OSCCONbits.IRCF1=1;
  OSCCONbits.IRCF2=1;

}
//el pulso del pin Ennable debe durar 30ns
void Ennable(void){
PORTBbits.RB2=1;
Delay10TCYx(1);
PORTBbits.RB2=0;
}


void Init_LCD_Grafica(unsigned char DATO){

LATB=0X00;
PORTBbits.RB3=0;
Delay1KTCYx(3);
PORTBbits.RB3=1;

write_Comand(comand_cs1,Star_Line);
write_Comand(comand_cs2,Star_Line);
write_Comand(comand_cs1,Address_Y);
write_Comand(comand_cs2,Address_Y);
write_Comand(comand_cs1,Address_X);
write_Comand(comand_cs2,Address_X);

if(DATO==on){

write_Comand(comand_cs1,GLCD_ON);
write_Comand(comand_cs2,GLCD_ON);
}else if(DATO==off){
write_Comand(comand_cs1,GLCD_OFF);
write_Comand(comand_cs2,GLCD_OFF);
PORTBbits.RB3=0;

}


}


void write_Comand(unsigned char comand,unsigned char byte){
PORTBbits.RB3=1;
if(comand==1){
PORTBbits.RB5=1;
}else{
PORTBbits.RB4=1;
}
PORTBbits.RB1=0;   //pin rs o di en 0
PORTBbits.RB0=0;
LATD=byte;
Ennable();

PORTBbits.RB4=0;
PORTBbits.RB5=0;
}



void write_dato(unsigned char dato){
PORTBbits.RB3=0;
LATB=0X00;
PORTBbits.RB1=1;
LATD=dato;
Ennable();
PORTBbits.RB1=0;
}




void Draw(void){

int paginas,filas;
write_Comand(comand_cs2,X);
write_Comand(comand_cs2,Y);
for(paginas=0;paginas<=8;paginas++){
write_Comand(comand_cs2,X);
X++;
for(filas=0;filas<=128;filas++){
write_Comand(comand_cs2,Y);
write_dato(pixel);
Y++;

}

}
actualizar();
}

void actualizar(void){
write_Comand(comand_cs1,Star_Line);
write_Comand(comand_cs2,Star_Line);
write_Comand(comand_cs1,Address_Y);
write_Comand(comand_cs2,Address_Y);
write_Comand(comand_cs1,Address_X);
write_Comand(comand_cs2,Address_X);
}


el caso es que so estoy tratando de poner agunos pixeles de a lcd en 1 y poderos visualizar en a rutina Draw()    pero no ocurre nada.................  la lcd no muestra nada
me podrian ayudar soo quiero saber como rayos es que se prende un pixel  :5]en una posicion cuaquiera de a lcd no se si se tenga que actualizar la pantalla (como se realiza eso :shock: :() no se si e codigo que realize este bien......... o me falte algo :(

gracias por su atencion


 

anything