GLCD o LCD Gráficos - Resumen de datos y herramientas

una pregunta, soy nuevo en esto de los lcd graficos, queria que me dijieran que programa es bueno para pasar una imagen BMP a codigo CCS le agradeceria su ayuda
 
bueno es que estube probando el bitmap2lcd pero la verdad no le entendi muy bien como manejarlo aparte me dice que solo tengo 10 dias para utilizarlo, ya que es de evaluacion, donde puedo conseguirlo completo o un tutorial de como utilizarlo...
 
En el primer post de este tema, puse este enlace para descargar un editor muy intuitivo, pero no se si se adapta a CCS.
En una oportunidad desarrollé una especie de tutorial sobre cómo trabajar paso a paso.
El enlace es este, y ahí menciono un programa gratis (LCDassistant) para hacer la conversión.
 
Última edición:
Este es un editor de imagenes para glcd es muy sencillo de usar y es la version completa



Disculpas es este
 

Adjuntos

  • GLCD.rar
    152.5 KB · Visitas: 258
Última edición:
Hola a todos quiero comentarles mis avances en la programación del GLCD DG-16080-11 Chip Controlador: SANYO LC7981 en CCS compiler creo que serán útiles para otras personas interesadas en la programación de este dispositivo en este lenguaje he programado un PIC18F4550 para el control del GLCD con éxito parcial ya que en el modo texto parece no tener problemas con este código.

Código:
 #include <18F4550.h> 
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN 
 #use delay(clock=48000000) 
 #include "usb_bootloader.h"
 //Referencia de asicnacion de Pines

 // RS  =RC0
 // R/W =RE0
 // E   =RE1
 // CS  =RC2
 // Res =RE2
//****************************************************************************

byte CONST Inicio[19] = {0x00 // INST: MODE CONTROL
                         0x38 // Set:  Dsp on,Master,cursor ON char BLink,Mode CHAR,Built-in ROM CHAR
                         0x01 // INST: CHARACTER PITCH (-1)
                         0x77 // Set:  8 bits vertical CHAR, 8 bits horizontal x CHR => 20 chr x 10 rngl
                         0x02 // INST: NUM CHAR (-1)
                         0x13 // Set:  20 char  horizontalmente
                         0x03 // INST: DISPLAY DUTY (-1)
                         0x4F // Set:  80 (valor de puntos verticalmente)
                         0x04 // INST: CURSOR POsITION (-1)
                         0x07 // Set:  en el bit 8 (vertical)
                         0x08 // INST: DSP START ADD LOWER
                         0x00 // Set:  posicion 0
                         0x09 // INST: DSP START ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0A // INST: RAM ADD LOWER
                         0x00 // Set:  posicion 0
                         0x0B // INST: RAM ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0C // INST: WRITE DATA TO RAM
                             };
  
byte int8 Puntero[19] = {0x00,0x38,0x01,0x77,0x02,0x13,0x03,0x4F,0x04,0x07
                           0x08,0x00,0x09,0x00,0x0A,0x53,0x0B,0x00,0x0C};  
//                                                  /\  
//                                              Modifica posicion del puntero.

byte CONST Texto[14] = {0x50,0x52,0x55,0x45,0x42,0x41,0x00,0x00,0x4D,0x45,0x52,0x4C,0x49,0x4E};
  
byte CONST Borrar[200] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};



 

void main(void)
{
 output_low(pin_E0);         // R/W apagar “RE0 a 0
 output_low(pin_C2);         // CS apagar “RC2 a 0
 output_high(pin_C0);         // RS encendido “RC0 a 1 

byte Var1=0;

 //////////////////Tabla  de inicialización////////////////////////////////////

      for (Var1=0;Var1<19;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Inicio[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
         output_toggle(PIN_C0);     // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
               }
 
 output_low(pin_C0);         // Apaga RS “RC0 a 0
 
 //////////////////Tabla  de Borrado////////////////////////////////////
          
          
 for (Var1=0;Var1<200;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Borrar[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
//         output_toggle(PIN_C0);     // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
            }
 
  output_low(pin_E1);         // apagar   E  “RE0 a 0 

//////////////////Tabla  de Puntero////////////////////////////////////

 output_high(pin_C0);         // RS encendido “RC0 a 1 
      for (Var1=0;Var1<19;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Puntero[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
         output_toggle(PIN_C0);     // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
               }
 output_low(pin_C0);         // Apaga RS “RC0 a 0

//////////////////Tabla  de Texto////////////////////////////////////

for (Var1=0;Var1<14;Var1++)
            {
         output_high(pin_E1);       // E  encender “RE1 a 1
         OUTPUT_D(Texto[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);     // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);              // Retardo Para evitar Datos
         output_toggle(PIN_E1);     // E Cambia el estado y enciendelo “RE1 a 1
               }
 }


Pero el modo grafico me ha dado dolores de cabeza ya que el GLCD solo recibe los datos de 20 x 13 Byte´s luego de estos se repite la información hasta llenar la pantalla quedando las otras 67 líneas de 20 Byte´s sin ser reconocidas por la pantalla.
Para lograr que la imagen no se destruya tuve que hacer un dibujo de 160 X 13 pixeles y poniendo esa tabla en el código es como logre visualizarlo la razón de poner en el dibujo una secuencia numérica es para ver hasta qué punto se cortaba la imagen y continuaba en el siguiente renglón el dibujo pinta (1-2-3-4-5-6-7-8-9-10-11-12-13-14X) en la imagen se ve que la primer línea termina bien en X pero la segunda comienza en 5 lo que me lleva a pensar que cuando se repite la imagen se sale de la pantalla.

Código:
 #include <18F4550.h> 
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN 
 #use delay(clock=48000000) 
 #include "usb_bootloader.h"
 //Referencia de asicnacion de Pines

 // RS  =RC0
 // R/W =RE0
 // E   =RE1
 // CS  =RC2
 // Res =RE2
//****************************************************************************

byte CONST Inicio[19] = {0x00 // INST: MODE CONTROL
                         0x32 // Set:  Dsp on,Master,cursor ON char BLink,Mode CHAR,Built-in ROM CHAR
                         0x01 // INST: CHARACTER PITCH (-1)
                         0x77 // Set:  8 bits vertical CHAR, 8 bits horizontal x CHR => 20 chr x 10 rngl
                         0x02 // INST: NUM CHAR (-1)
                         0x13 // Set:  20 char  horizontalmente
                         0x03 // INST: DISPLAY DUTY (-1)
                         0x4F // Set:  80 (valor de puntos verticalmente)
                         0x04 // INST: CURSOR POsITION (-1)
                         0x07 // Set:  en el bit 8 (vertical)
                         0x08 // INST: DSP START ADD LOWER
                         0x00 // Set:  posicion 0
                         0x09 // INST: DSP START ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0A // INST: RAM ADD LOWER
                         0x00 // Set:  posicion 0
                         0x0B // INST: RAM ADD UPPER
                         0x00 // Set:  posicion 0
                         0x0C // INST: WRITE DATA TO RAM
                             };


byte CONST Grafico[1600] = {

 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xBF,0xCF,0xE7,0xE7
 0xF0,0xFC,0xFC,0x3F,0x1F,0x8F,0xCF,0x7F
 0xBE,0xFF,0x3D,0xFE,0x7B,0xF9,0xF7,0xBD
 0x9F,0xB7,0xDB,0xE3,0xFE,0xFB,0x7D,0xFE
 0xEF,0x77,0xB7,0x3F,0x9E,0x7E,0xDC,0xFD
 0xB9,0xF8,0xF3,0xDB,0xAF,0xBF,0xDF,0xF1
 0xF8,0x7F,0xBE,0xFE,0xEF,0x77,0xB3,0x5F
 0xAE,0xBE,0xFD,0x7D,0xFA,0xFC,0x75,0xE7
 0xBF,0xDF,0xE7,0xF4,0xF6,0x78,0x3F,0x7F
 0x1F,0x0F,0xBB,0x7F,0xBE,0xFF,0x7D,0xFE
 0x7B,0xFD,0x37,0xF7,0xDC,0x6E,0x1F,0x10
 0x87,0xC3,0xA3,0x70,0xE8,0x3C,0x3B,0xB8
 0xDF,0x71,0xBE,0xE1,0xFD,0xC4,0x3B,0xEB
 0xDF,0xF7,0xDD,0xFB,0xF7,0x7B,0xBF,0xBE
 0xEF,0xB7,0xDB,0xBF,0xDF,0x7F,0xDE,0xFD
 0xDD,0xFE,0xFB,0xCD,0xDF,0xC3,0xE3,0xFB
 0xF8,0xFC,0x7F,0xBF,0x1F,0xCF,0xE7,0xBF
 0xDF,0x7F,0x0E,0xFE,0x3D,0xFE,0xFB,0xDE
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
 };
  

  

void main(void)
{
 output_low(pin_E0);                 // R/W apagar “RE0 a 0
 output_low(pin_C2);                 // CS apagar “RC2 a 0
 output_high(pin_C0);                // RS encendido “RC0 a 1 
byte Var1=0;

 //////////////////Tabla  de inicialización////////////////////////////////////

      for (Var1=0;Var1<19;Var1++)
            {
         output_high(pin_E1);         // E  encender “RE1 a 1
         OUTPUT_D(Inicio[Var1]);      // Digito unidades envio al puerto B
         output_toggle(PIN_E1);       // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);                 // Retardo Para evitar Datos
         output_toggle(PIN_C0);       // RS cambia el estado del pin RC0 y lo apago
         output_toggle(PIN_E1);       // E Cambia el estado y enciendelo “RE1 a 1

 }
 
 output_low(pin_C0);                  // Apaga RS “RC0 a 0
 output_low(pin_E1);                  // Apaga E  “RE0 a 0  
 
 //////////////////Tabla  de Grafico////////////////////////////////////

for (Var1=0;Var1<1600;Var1++)
            {
         output_high(pin_E1);         // E  encender “RE1 a 1
         OUTPUT_D(Grafico[Var1]);     // Digito unidades envio al puerto B
         output_toggle(PIN_E1);       // E Cambia el estado y apagalo “RE1 a 0
         delay_ms(1);                 // Retardo Para evitar Datos
         output_toggle(PIN_E1);       // E Cambia el estado y enciendelo “RE1 a 1


 }


         }

Me pregunto si tendría que ver con la memoria interna de la pantalla ya que solo esta recibiendo datos en los primeros 2080 Pixeles de los 12800 de la pantalla.
Otra posibilidad que se me ocurre es que se tengan que mapear cada 2080 pixeles o cada 260Byte´s un cambio de carro o puntero de tal forma que no se salga la información de la pantalla la verdad ya estoy un poco liado con esto y agradecería si me pudiesen tirar un cable.

Como comentario en la memoria del micro mi código solo consume el 6% de la ROM


Adjunto unas imágenes de la pantalla trabajando para que tengan una idea más clara de lo que intento explicar.

Agradezco de antemano su atención y ayuda.

P,D. si les interesa el PCB de la pantalla con gusto se lo subo.
P,D-2 El firware lo cargo al micro con el botlooader del CCS desde el Serial Port Monitor por USB

Saludos cordiales.
 

Adjuntos

  • Modo grafico_BMP.JPG
    Modo grafico_BMP.JPG
    192.8 KB · Visitas: 168
  • Modo Texto_.jpg
    Modo Texto_.jpg
    187.7 KB · Visitas: 149
Me pregunto si tendría que ver con la memoria interna de la pantalla ya que solo esta recibiendo datos en los primeros 2080 Pixeles de los 12800 de la pantalla.
Otra posibilidad que se me ocurre es que se tengan que mapear cada 2080 pixeles o cada 260Byte´s un cambio de carro o puntero de tal forma que no se salga la información de la pantalla la verdad ya estoy un poco liado con esto y agradecería si me pudiesen tirar un cable.

Como comentario en la memoria del micro mi código solo consume el 6% de la ROM


Adjunto unas imágenes de la pantalla trabajando para que tengan una idea más clara de lo que intento explicar.

Agradezco de antemano su atención y ayuda.

P,D. si les interesa el PCB de la pantalla con gusto se lo subo.
P,D-2 El firware lo cargo al micro con el botlooader del CCS desde el Serial Port Monitor por USB

Saludos cordiales.

Estuve viendo en este enlace algunos datos de tu display, y hay una sola patilla /CS (chip select). Por lo tanto parece que el banco de memoria de destino se debe configurar enviando comandos.

Fijate en la pagina 15 del pdf del controlador AQUÍ.
Cada línea horizontal tiene 180 pixels, y se puede cubrir con 20 registros de 8 bits o con
26 registros de 6 bits (igual se mandan 8, pero se utilizan 6).
Multiplicando 80 líneas por 26 te da 2080 y por 20 te da 1600.
O sea que para llenar la pantalla de 180 x 80 se requieren 2080/1600 direccionamientos
según se utilicen 6/8 bits del registro enviado al display.

Es solo una idea como para empezar a trabajar.

Saludos de nuevo
 
Última edición:
Resumiendo:

1) Para mandar imágenes completas simplemente se direcciona cada uno de los bytes
al inicio de los 8 pixels horizontales que corresponden.

2) Para asignar el estado a un pixel en particular hay que direccionar al byte de pantalla
que lo contiene.
Luego se manda un byte con todo cero excepto en los bits correspondientes a los pixels
que se desean cambiar, y se hace un XOR con el contenido existente en esa dirección.

Recordar que: 1 XOR 0 = 1 y 1 XOR 1 = 0

De paso les dejo fotos de un control con display de 128x64 que estoy armando.
 

Adjuntos

  • F2.JPG
    F2.JPG
    56.9 KB · Visitas: 46
  • F3.JPG
    F3.JPG
    62.2 KB · Visitas: 35
  • F4.JPG
    F4.JPG
    54.2 KB · Visitas: 43
  • F9.JPG
    F9.JPG
    56.1 KB · Visitas: 48
Última edición:
Sí, algo así.
Ese conector es para una entrada genérica de señal ya amplificada.
Otras dos entradas son para señal de audio, con su plaquita adaptadora de niveles y filtrado.
El conector negro frontal me permite sacar hacia el lpt de la pc o una placa de memoria ram auxiliar, para lograr una velocidad de captura de 10 KSPS. Para procesar el habla humana sobra.
Esto es indispensable ya que el pic tiene apenas unos 100 bytes contiguos a bordo.
La idea es tener un display bastante versátil, que se pueda configurar desde su consola (de 2 botones) para entrar/salir con todo tipo de datos estándard serie/paralelo y poder mandarlo a gráficas y/o a la PC.

Ya lo tengo todo probado y ahora estoy tratando de darle la forma final.
Cuando lo tenga todo lindo subo más fotos ...
 
Última edición:
Venga ya que suena tu proyecto de lujo y multi funcional yo solo le puse a mi targeta un conector USB y RJ11 para conectar modulos en bus y que sea fasi la expancion del sistema, pero tu si que te estas volando la barrda jejeje.

Saludos.
 
Venga ya que suena tu proyecto de lujo y multi funcional yo solo le puse a mi targeta un conector USB y RJ11 para conectar modulos en bus y que sea fasi la expancion del sistema, pero tu si que te estas volando la barrda jejeje.

Saludos.

Eso está bueno, porque usas estándares más modernos que yo.
Ya llegará el tiempo de actualizar mi proyecto y te pediré auxilio.
Saludos
 
Gracias, ya heche a andar el display nokia 5110, encontre 2 librerias que me servian para ello y ambas funcionaron, una para el 3310 (lo probe y es compatible) y otra adaptada al 5110 que solo tuve q modificar un poco la inicializacion para que funcionara en fisico, dejo los enlaces para aportar al tema:

http://www.ccsinfo.com/forum/viewtopic.php?t=25571

http://know.plugandprogram.com/index.php?title=PIC32-MX_Firmware:_Nokia_5110

En lo personal me gustó mas la libreria del 3310 pero deje de usarla porque no encontre como imprimir en video inverso, si alguien sabe como hacerlo le agradeceria mucho.

La libreria del 5110 tiene esa opcion y por eso la estoy usando pero tengo problemas para imprimir numeros almacenados en una variable, igual la ayuda es bien recibida.

Hola, que es lo que modificaste?, a mi no me ha funcionado
 
hola bros. bueno soy nuevo en los GLCD y necesito de su iluminacion tengo un GLCD JHD529M y la verdad no tengo idea de como programarlo, ya busque su datasheet y no hay mucha informacion para programarlo. si me iluminan un poco hacerca de este GLCD se los agradecere mucho.
 
Atrás
Arriba