Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/06/2012 #101


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
17/06/2012 #102

Avatar de asherar

night29 dijo: Ver Mensaje
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
Hay varios programas en la web.
Googlea "conversion bmp a glcd" o similar.

Probá con LCDAssistant

o bien con bitmap2lcd.com
18/06/2012 #103


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...
18/06/2012 #104

Avatar de asherar

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.
18/06/2012 #105


va muchas gragias ya logre utilizar tus consejos con el lcd grafico, por fin pude meterle una imagen cuidate y en verdad te lo agradezco
20/06/2012 #106


Este es un editor de imagenes para glcd es muy sencillo de usar y es la version completa

---------- Actualizado después de 2 minutos ----------

Disculpas es este
Archivos Adjuntos
Tipo de Archivo: rar GLCD.rar (152,5 KB (Kilobytes), 250 visitas)
29/06/2012 #107


alguien sabe como presentar graficos con texto al en una sola imagen en lcd 160x80
11/07/2012 #108


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.
Imágenes Adjuntas
Tipo de Archivo: jpg Modo grafico_BMP.JPG (192,8 KB (Kilobytes), 166 visitas)
Tipo de Archivo: jpg Modo Texto_.jpg (187,7 KB (Kilobytes), 147 visitas)
11/07/2012 #109

Avatar de asherar

olinqui dijo: Ver Mensaje
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
13/07/2012 #110

Avatar de asherar

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.
Imágenes Adjuntas
Tipo de Archivo: jpg F2.JPG (56,9 KB (Kilobytes), 43 visitas)
Tipo de Archivo: jpg F3.JPG (62,2 KB (Kilobytes), 32 visitas)
Tipo de Archivo: jpg F4.JPG (54,2 KB (Kilobytes), 40 visitas)
Tipo de Archivo: jpg F9.JPG (56,1 KB (Kilobytes), 45 visitas)
17/07/2012 #111


Hola asherar gracias por responder muy buena tu explicación ya me pongo a escribir código y te comento como me fue.

Saludos cordiales.
18/07/2012 #112


Hola de nuevo asherar se ve buena tu targeta pero me llama la atencion el conector BNC vas a hacer un osciloscopio?
18/07/2012 #113

Avatar de asherar

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 ...
19/07/2012 #114


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.
21/07/2012 #115

Avatar de asherar

olinqui dijo: Ver Mensaje
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
24/07/2012 #116


Hectorpkmn dijo: Ver Mensaje
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...re:_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
26/07/2012 #117


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.
01/08/2012 #118

Avatar de nietzche

Es el lcd de 40 x 20 ? La rutina esta en picc creo, y ahí mismo dice como utilizarla
01/08/2012 #119


es un GLCD de 128x64. JHD529
02/08/2012 #120

Avatar de asherar

Intercalo por acá esto que me pareció importante:

Mostrar caracteres personalizados en un GLCD en el modo alfanumérico -> ir al enlace
por Daniel Meza
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.