Autor Tema: 128x64 desglosado  (Leído 1782 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado STICK_MASTER

  • PIC10
  • *
  • Mensajes: 30
128x64 desglosado
« en: 14 de Julio de 2011, 21:53:33 »
buenas tardes noches dias amigos foreros

en esta ocasion traigo un problema con la pantalla 128x64 que usa el controlador KS0108 se controlar la pantalla con la libreria de ccs desde un microcontrolador microchip pero en esta ocasion mi proyecto de la universidad consiste en realizar la inicializacion y posicionar un pixel en una posicion con una fpga comprendo la rutina de inicializacion de la pantalla que existen las llamadas paginas verticales y las dos posiciones horizontales cs1 y cs2 que controlan cada una la mitad de la pantalla como deben especificarse los pines para dicha tarea sin embargo no entiendo como posicionar un pixel en por ejemplo la posicion 1,1 si se la pagina y la posicion en x y el chip cs1 o cs2 segun sea como especifico el pixel dentro de la pagina???

agrego la parte de codigo que no comprendo de ccs espero no violar ninguna regla si algo me corrigen
de antemano gracias

void glcd_pixel(int x, int y, int1 color)
{
   BYTE data;
   BYTE chip = GLCD_CS1;  // Stores which chip to use on the LCD

   if(x > 63)  // Check for first or second display area
   {
      x -= 64;
      chip = GLCD_CS2;
   }

   output_low(GLCD_DI);                                     // Set for instruction
   bit_clear(x,7);                                          // Clear the MSB. Part of an instruction code
   bit_set(x,6);                                            // Set bit 6. Also part of an instruction code
   glcd_writeByte(chip, x);                                 // Set the horizontal address
   glcd_writeByte(chip, (y/8 & 0b10111111) | 0b10111000);   // Set the vertical page address
   output_high(GLCD_DI);                                    // Set for data
   data = glcd_readByte(chip);

   if(color == ON)
      bit_set(data, y%8);        // Turn the pixel on
   else                          // or
      bit_clear(data, y%8);      // turn the pixel off
   output_low(GLCD_DI);          // Set for instruction
   glcd_writeByte(chip, x);      // Set the horizontal address
   output_high(GLCD_DI);         // Set for data
   glcd_writeByte(chip, data);   // Write the pixel data
}


saludos desde colombia    :-/


Lo importante no es de lo que dispones lo importante es como lo uses

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: 128x64 desglosado
« Respuesta #1 en: 15 de Julio de 2011, 02:08:14 »
Este es el protocolo:

   1) Pasar al modo _instruccion_
      DI = 0;
   2) Seleccionar la columna (0-63).
     Esta es la coordenada x, es decir, la horizontal.
      KS0108_write(KS0108_CMD_COLUMN | x);
   3) Seleccionar la pagina
      Si empleamos coordenadas XY, la pagina es la parte alta de la coordenada Y, es decir y/8, o su equivalente binaria y >>  4 .
      KS0108_write(KS0108_CMD_PAGE | (y >>  8 ));
   4) Pasamos al modo dato
      DI = 1;
   5) Leemos la pagina seleccionada, con lo cual obtenemos un byte al que llamaremos 'dato'.
   6) Modificamos el dato borrando o seteando el bit que nos interese.
      Si empleamos coordenadas XY, este bit corresponde al nible bajo de la coordenada Y, es decir y%8, o su equivalente binaria  y & 0xF.
   7) Volvemos al modo _instruccion_ para seleccionar nuevamente la columna
      DI = 0;
   8 )  Seleccionar la columna como en el paso 2
      KS0108_write(KS0108_CMD_COLUMN | x);
   9) Volver al modo dato
      DI = 1;
   10) Escribir el dato.

Como son útiles los apuntes  ;-)
-- Espero que te sirva.
« Última modificación: 15 de Julio de 2011, 02:10:48 por fabianjm »
@fabianjsm is on twitter


 

anything