TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx en 16 de Noviembre de 2006, 18:02:01

Título: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: fastyx en 16 de Noviembre de 2006, 18:02:01
Amigos : estoy usando un display grafico de 128 x64 byn , ya pude hacer lineas ,circulos textos

ahora quisiera ver los bitmap , pero mas alla de la tabla que genera el bitmap editor de mikroelectronica no pude pasar

esto es lo que generó el bitmap editor :

// ------------------------------------------------------ 
// GLCD Picture name: bank.bmp           
// GLCD Model: KS0108 128x64           
// ------------------------------------------------------ 

unsigned char const bank_bmp[1024] = {
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,  0, 64,128,  0,
  98, 68,  8, 16,  0,128, 72,132,  0,  0, 96, 32,  0,192, 64,  0,
 128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,128, 16,132,121,  4,  3,  1,128,  0,
   0,  0,  0,  0,  0,  0, 24, 23, 16,  0,  0,  0, 32, 32, 64,128,
 128,  1, 34,156,112,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,128,  0, 64,192,  0, 96, 64,
  16, 64, 96, 32,128, 64,  0,128,  0,  0,  0,  0,  0,  0, 32, 16,
   0,  0,  0,  4,  0,  0,  0,  3,  0,  3,  0,  4,  4,  6,  8, 16,
 112,192,  0,  0,  0,  0,  0,  0,  0,  0,128, 32,  0,  0,  8,  1,
   7,  6,  4,  6,  4,  7,  4,  4,  0,  8,  8, 16,112,192,  0,  0,
   0,  0,  0,  0,  0,  0,240,  0,  0,122,122,  0, 64,  0,  2,  0,
   4,248,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,128,128,  0, 64,128,  0, 96,128, 48, 96, 24, 24,
  32, 12, 20, 18,  6, 12,  3,  7,  4,  3,  3, 26,  1, 31,125, 60,
  60, 60,125, 25,  6,  2,  3,  5,  4,  2,  9, 12,  6, 18, 10, 36,
  48, 64, 96, 48,192,192, 32,160,192, 64, 16,144,  0,  8,  8,  4,
   6,  1,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,
   0,  0, 32, 32, 32, 32, 32,  0, 16, 16,  8, 12,  6,  3,128,128,
 128,  0,  0,192,192,128,255,  0,  0,  7, 69,  8,192,135,  0,  0,
 128,255,  8,224,240,240,224,192,192,128,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  1,  1,  1,129,  1, 63, 33, 33, 33, 33,123, 63, 37,
  37, 37, 63,187, 33, 33, 33, 57, 37, 35,163, 39, 47, 61, 57, 49,
  33, 35, 63, 39, 37, 45, 57, 57, 63, 63, 33, 33, 59,127, 63, 37,
  37, 37, 47, 59, 57, 49,225, 33, 33, 33, 33, 63, 33,  1,192,  0,
 224, 32, 32,  0,  0,  0, 48, 48, 32,  0,136,152,152, 16,128,140,
  76, 72, 64,  0,198,230, 36, 32,  0,  3,227,242, 16, 16,  1,  1,
   9,248,248,  0,  0,  4,255,  0,  0,141,136,152,144, 61,  1,  0,
 218,255,  0,255,255,255,255,255,255,255,255,255,254,252,252,248,
   0,  0,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,255, 86,  0,
   0,  0,  0,255,  0,  0,  0,  0,255,255, 16,172,244, 62, 37, 39,
  35, 34, 34,226, 34, 34, 34, 35, 37, 38, 58,228,248,  0,255,255,
   0,  0,  0,255,255,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,  0,
 255,  2,  0,  0,127, 65, 65,  0, 63, 63,  0,  0, 32, 32, 63, 63,
   0,128,128,128,159,159,144,144,128,128,143,143,136,  8, 72, 72,
  64,199, 71,192,192,  4, 15,  0, 16,  5, 33, 34, 38, 32, 48,  0,
  15,  6,  0,255,255,255,255,255,255,255,255,255,255,255,255,255,
   0,  0,  0,  0,  0,  0, 64, 64,127, 64, 64, 64, 64,127,107, 64,
  64, 64, 64,127, 64, 64, 64, 64,127,127, 64, 84,127, 64, 64, 64,
  64, 64, 64,127, 64, 64, 64, 64, 64, 64, 64,127,127, 64,127,127,
  64, 64, 64,127,127, 64, 64,127, 64, 64, 64, 64, 64, 64, 64,240,
 255,  0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,255, 64,255,255,  0, 16, 16, 16, 16, 16, 16,
  16,255,  0,255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,255, 63,255, 15,255,255,255,255,255,255,255,255,255,
   0,  0,  0,  0,  0,  0,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
   6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
   6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
   6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  0,  0,  0,  0,  0, 63,
  43, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 40, 40, 47, 32, 63, 63, 32, 32, 32, 32, 32, 32, 32,
  32, 63, 32, 47, 47, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  40, 40, 40, 63, 32, 32, 32, 47, 63, 47, 47, 63, 63, 63, 63, 63
};


pregunta : como se escribe ese bitmap en la ram para despues leerlo con la instruccion glcd_update () ?

desdde ya gracias !!!!
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: BrunoF en 18 de Noviembre de 2006, 03:56:23
Bueno, ya estuvimos conversando por MSN.
Aca te dejo la solucion que necesitas:

Código: C
  1. unsigned char const Prueba[64][16] = {
  2. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  3. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  4. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  5. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  6. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  7. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  8. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  9. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  10. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  11. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  12. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  13. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  14. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  15. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  16. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  17. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  18. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  19. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  20. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  21. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  22. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  23. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  24. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  25. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  26. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  27. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  28. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  29. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  30. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  31. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  32. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  33. 255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
  34. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  35. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  36. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  37. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  38. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  39. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  40. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  41. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  42. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  43. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  44. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  45. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  46. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  47. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  48. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  49. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  50. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  51. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  52. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  53. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  54. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  55. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  56. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  57. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  58. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  59. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  60. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  61. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  62. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  63. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  64. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
  65. 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255
  66. };


Y así lo dibujas en el GLCD:

Código: C
  1. char i,j;
  2. signed char k;
  3.  
  4. for( i = 0 ; i < 64 ; i ++ ){
  5.   for( j = 0 ; j < 16 ; j ++){
  6.     for(k=7;k>-1;k--){
  7.       if( bit_test( Prueba[i][j] , k ) ) glcd_pixel( j*8+k,i, nn );
  8.     }
  9.   }
  10. }

Saludos...


Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: isabelino en 28 de Diciembre de 2006, 01:05:17
BrunoF:
He hecho el siguiente programa pero no funca.


#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=10000000)


#include <HDM64GS12.c>
#include <graphics.c>
#include <math.h>

//unsigned char const Prueba[64][16]={
BYTE const Prueba[64][16]={
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,128,128,
 128, 64, 64, 64, 64, 64, 64, 32, 32, 32, 32, 32, 32, 32, 32, 32,
  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
  32, 32,160,160,160, 96,224,224, 96, 96, 96, 32,  0, 32, 32, 32,
  32, 32, 32, 32, 32, 32,  0,  0, 64, 64, 64,  0,128,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,254,  0,  1,  1,  1,  1,  1,253,253,253,253,
   1,  1,  1,  1,  1,  1,253,253,253,253,  1,  1,  1,  1,253,253,
 253,253,249,241,225,193,129,193,225,249,253,253,253,253,253,  1,
   1,  1,  1,253,253,253,253,221,221,221, 29, 17,  1,255,  1,  1,
   1,  1,  0,254,  1,168,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
   8,  8,  8,  8, 16,224, 24, 36,132,  0,  2,130,  5, 81, 68,112,
 160,192, 96, 96, 32,  0,128,128,192,192,192, 64,  0,  0,  0,  0,
   0,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0, 63, 96, 96, 96,224, 96, 96,127,127,127,127,
 124,124,124,124, 96, 96,127,127,127,127, 96, 96, 96, 96,127,127,
 127,127, 97,103,111,127,127,111,103, 99, 97,127,127,127,127, 96,
  96, 96, 96,127,127,127,127,125,125,125,124,116, 96,127, 64, 64,
  64,160, 96,252,246,  1, 14,  6,  6,  2,  2,  2,  2,  2,  2,  2,
   2,  2,  2,  2,  2, 66,114, 60, 32, 16, 16,  0,  4,  2,  3,  2,
   0,  0,  0,  4,  4,  4,  4, 20, 16, 16, 16, 16, 16,  9,  9, 41,
 112, 32, 67,  5,240,126,174,128, 56,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,
   1,  1,127,127,127,127,255,255,247,251,123,191, 95, 93,125,189,
 189, 63, 93, 89,177,115,243,229,207, 27, 63,119,255,207,191,255,
 255,255,255,255,255,255,255,127,127,127,127,127,127,127,127,255,
 255,255,127,127,125,120,120,120,120,120,248,120,120,120,120,120,
 120,248,248,224,135,  0,  0,  0,  0,  0,  0,  0,  0,128,240,248,
 120,188,220, 92,252, 28, 28, 60, 92, 92, 60,120,248,248, 96,192,
 143,168,216,136, 49, 68, 72,  2,160, 96,  0,  0,  0,  0,  0,  0,
   0,  0,  0,128,192,248,248,248,248,252,254,254,254,254,254,254,
 254,254,254,254,254,255,255,255,255,255,246,239,208,246,174,173,
 169,128,209,208,224,247,249,255,255,252,220,240,127,255,223,255,
 255,255,255,255,255,254,254,255,255,255,255,255,255,255,254,255,
 255,255,255,255,255,255,254,254,254,254,254,254,254,254,254,254,
 254,254,254,254,255,255,255,255,255,255,254,255,190,255,255,253,
 240,239,221,223,254,168,136,170,196,208,228,230,248,127,126,156,
 216,224,240,240,242,242,240,177, 32,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  1,  1,  1,  1,  3,  3,  3,  7,  7,  7,  7,  7, 15,
  15, 15,  7, 15, 15, 15,  7,  7, 15, 14, 15, 13, 15, 47, 43, 43,
  43, 43, 43, 47,111,239,255,253,253,255,254,255,255,255,255,255,
 191,191,239,239,239,191,255,191,255,255,255,255,255,255,255,255,
 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
 255,255,255,255,127,127,127,127,255,255,191,191,191,191,255,254,
 255,253,255,255,255,251,255,255,255,127,125, 63, 31, 31, 31, 31,
  31, 31, 63, 15, 15,  7,  7,  3,  3,  3,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,
   1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
   1,  1,  1,  1,  3,  3,  3, 11, 11, 11, 11,  7,  3, 14,  6,  6,
   6,  2, 18, 19, 19,  3, 23, 21, 21, 17,  1, 19, 19,  3,  6,  6,
  14, 15, 15,  7, 15, 15, 15, 11,  2,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
};



void main()
{
char i,j;
signed char k;

glcd_init(ON);

for( i = 0 ; i < 64 ; i ++ )
  for( j = 0 ; j < 16 ; j ++)
    for(k=7;k>-1;k--)
      if( bit_test( Prueba[j] , k ) )
        glcd_pixel( j*8+k, i, ON);
}

La imagen la adjunto ( la original es BMP pero la transformé a PNG para subirla) , al igual que el esquema en Proteus.

Gracias.
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: BrunoF en 28 de Diciembre de 2006, 01:40:18
Hola isabelino.

Mira, no tengo los archivos a mano, pero en cuanto tenga te posteo el codigo completo.

Por ahora te voy diciendo que me parece que falta alguna linea de configuracion ademas del glcd_init y assegurate que los pines de datos y selectores esten correctamente configurados en el archivo de configuracion del GLCD.

El algoritmo que postee no se comportaba realmente bien. Hay que hacerle una pequeña modificacion que no postee.
Por ahi si fastyx lee esto te pase lo que yo hice ya que el posee una copia.

Saludos.
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: micro_cadaver en 28 de Diciembre de 2006, 09:16:28
yo recuerdo haber vuisto el video tutorial de un tal tojeiro donde lo pasaba desde el paint y con un programa en el PBP (creo no recuerdo pero si ves el video ahi sale) obtenia su codigficacion en PBP o en asembler para q simplementes lo peges, es el ultimo de sus videos lo puedes buscar en la pagina de joel ocmin o sino en videotutoriales, sino me lo pides , chau.
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: isabelino en 01 de Enero de 2007, 18:49:12
BrunoF: tienes los ejemplos por favor.

gracias. :lol:
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: BrunoF en 01 de Enero de 2007, 20:40:42
No los tengo en esta PC. En cuanto los tenga los pongo :S

Saludos.
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: isabelino en 02 de Enero de 2007, 17:36:45
Gracias BrunoF: sigo en la dulce espera.

 :D :lol:
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: LordLafebre en 02 de Enero de 2007, 19:12:36
Hola:

Yo para escanear las imagenes utilizo el generador todopic de Lager, crea tablas para distintos compiladores, lo puedes descargar de la pagina de J1M:

http://www.hobbypic.com/index.php?option=com_content&task=view&id=15&Itemid=36
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: fastyx en 05 de Enero de 2007, 23:29:41
esta rutina muestra un bitmap por el display

   glcd_init ( ON ) ;
   glcd_fillScreen ( BB ) ;
   glcd_update ( ) ;

///////////////////////////////////////////////////////////////////////////////



for( i = 0  ; i < 64 ; i ++ )
{
  for( j = 0 ; j < 16 ; j ++)
  {
    for( k = 0 ; k < 8 ; k ++ )
    {
      posfila = j * 8 + k;
      if ( bit_test ( ex [j] , 7 - k ) )
      glcd_pixel( posfila,i, nn );
    }
  }
}
glcd_update ( ) ;delay_ms ( 10000 ) ;
glcd_fillScreen ( BB ) ;
glcd_update ( ) ;

en este caso el bitmap es ex y esta colocado en esta tabla:

unsigned char const EX[64][16] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,0,
63,0,0,126,127,255,255,252,15,255,255,192,0,127,255,128,
31,128,0,252,127,255,255,252,15,255,255,192,0,255,255,240,
15,192,1,248,127,255,255,252,15,255,255,192,3,255,255,248,
15,192,1,248,127,255,255,252,15,255,255,192,7,248,7,248,
7,224,3,240,0,7,192,0,15,128,0,0,15,224,0,248,
3,224,3,224,0,7,192,0,15,128,0,0,31,192,0,120,
3,240,7,224,0,7,192,0,15,128,0,0,31,128,0,24,
1,248,7,192,0,7,192,0,15,128,0,0,63,0,0,8,
0,248,15,128,0,7,192,0,15,128,0,0,62,0,0,0,
0,252,31,128,0,7,192,0,15,128,0,0,126,0,0,0,
0,124,31,0,0,7,192,0,15,128,0,0,124,0,0,0,
0,62,62,0,0,7,192,0,15,128,0,0,124,0,0,0,
0,63,62,0,0,7,192,0,15,128,0,0,252,0,0,0,
0,31,124,0,0,7,192,0,15,128,0,0,248,0,0,0,
0,15,248,0,0,7,192,0,15,255,255,192,248,0,0,0,
0,7,240,0,0,7,192,0,15,255,255,192,248,0,0,0,
0,7,240,0,0,7,192,0,15,255,255,192,248,0,0,0,
0,3,224,0,0,7,192,0,15,255,255,192,248,0,0,0,
0,7,240,0,0,7,192,0,15,128,0,0,248,0,0,0,
0,7,248,0,0,7,192,0,15,128,0,0,248,0,0,0,
0,15,248,0,0,7,192,0,15,128,0,0,248,0,0,0,
0,31,124,0,0,7,192,0,15,128,0,0,248,0,0,0,
0,62,62,0,0,7,192,0,15,128,0,0,252,0,0,0,
0,62,62,0,0,7,192,0,15,128,0,0,124,0,0,0,
0,124,31,0,0,7,192,0,15,128,0,0,124,0,0,0,
0,252,31,128,0,7,192,0,15,128,0,0,126,0,0,0,
0,248,15,128,0,7,192,0,15,128,0,0,62,0,0,0,
1,240,7,192,0,7,192,0,15,128,0,0,63,0,0,8,
3,240,7,224,0,7,192,0,15,128,0,0,31,128,0,24,
3,224,3,224,0,7,192,0,15,128,0,0,31,192,0,56,
7,224,3,240,0,7,192,0,15,128,0,0,15,224,0,248,
15,192,1,248,0,7,192,0,15,255,255,192,7,248,7,248,
15,192,0,248,0,7,192,0,15,255,255,192,3,255,255,248,
31,128,0,252,0,7,192,0,15,255,255,192,1,255,255,224,
63,0,0,126,0,7,192,0,15,255,255,192,0,127,255,128,
0,0,0,0,0,0,0,0,0,0,0,0,0,15,252,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
7,249,128,127,131,227,252,254,1,240,112,39,224,248,12,0,
6,1,128,96,14,48,96,195,7,28,112,33,131,140,12,0,
6,1,128,96,12,48,96,193,134,12,88,33,131,12,30,0,
6,1,128,96,24,0,96,193,140,6,76,33,134,0,30,0,
6,1,128,96,24,0,96,193,140,6,76,33,134,0,51,0,
7,249,128,127,152,0,96,195,12,6,70,33,134,0,51,0,
6,1,128,96,24,0,96,254,12,6,67,33,134,0,97,128,
6,1,128,96,24,0,96,195,12,6,67,33,134,0,127,128,
6,1,128,96,12,48,96,193,134,12,65,161,131,12,97,128,
6,1,128,96,14,48,96,192,199,28,64,225,131,140,192,192,
7,249,254,127,131,224,96,192,97,240,64,231,224,248,192,192,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};

con esto te lo va amostrar 10 segundos
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: isabelino en 06 de Enero de 2007, 00:28:20
Gracias fastyx:
            He estado esperando dicha rutina de tí o de BrunoF.
            Gracias a ambos.

 :-/ :-/
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: isabelino en 06 de Enero de 2007, 09:54:18
fastyx:
 El código no compila , genera errores :
  1) if ( bit_test ( ex [j] , 7 - k ) ) , creo que debe ser por el tipo de array. Tal vez debería ser
     
      if ( bit_test ( ex [j] , 7 - k ) )

  2) glcd_pixel( posfila,i, nn ) , nn no declarado , ¿qué valor vá? 0

Aquí te dejo el programa para ver si tú le encuentras el error, el esquema que utilizé para simularlo está en el post de arriba. Gracias fastyx.


#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=10000000)


#include <HDM64GS12.c>
#include <graphics.c>

unsigned char const EX[64][16] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x80,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0xA0,0xA0,0x60,
0xE0,0xE0,0x60,0x60,0x60,0x20,0x00,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x40,0x40,0x40,0x00,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x01,0x01,
0x01,0x01,0x01,0xFD,0xFD,0xFD,0xFD,0x01,0x01,0x01,0x01,
0x01,0x01,0xFD,0xFD,0xFD,0xFD,0x01,0x01,0x01,0x01,0xFD,
0xFD,0xFD,0xFD,0xF9,0xF1,0xE1,0xC1,0x81,0xC1,0xE1,0xF9,
0xFD,0xFD,0xFD,0xFD,0xFD,0x01,0x01,0x01,0x01,0xFD,0xFD,
0xFD,0xFD,0xDD,0xDD,0xDD,0x1D,0x11,0x01,0xFF,0x01,0x01,
0x01,0x01,0x00,0xFE,0x01,0xA8,0x08,0x08,0x08,0x08,0x08,
0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0xE0,
0x18,0x24,0x84,0x00,0x02,0x82,0x05,0x51,0x44,0x70,0xA0,
0xC0,0x60,0x60,0x20,0x00,0x80,0x80,0xC0,0xC0,0xC0,0x40,
0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0x60,0x60,0x60,0xE0,0x60,0x60,0x7F,
0x7F,0x7F,0x7F,0x7C,0x7C,0x7C,0x7C,0x60,0x60,0x7F,0x7F,
0x7F,0x7F,0x60,0x60,0x60,0x60,0x7F,0x7F,0x7F,0x7F,0x61,
0x67,0x6F,0x7F,0x7F,0x6F,0x67,0x63,0x61,0x7F,0x7F,0x7F,
0x7F,0x60,0x60,0x60,0x60,0x7F,0x7F,0x7F,0x7F,0x7D,0x7D,
0x7D,0x7C,0x74,0x60,0x7F,0x40,0x40,0x40,0xA0,0x60,0xFC,
0xF6,0x01,0x0E,0x06,0x06,0x02,0x02,0x02,0x02,0x02,0x02,
0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x72,0x3C,0x20,0x10,
0x10,0x00,0x04,0x02,0x03,0x02,0x00,0x00,0x00,0x04,0x04,
0x04,0x04,0x14,0x10,0x10,0x10,0x10,0x10,0x09,0x09,0x29,
0x70,0x20,0x43,0x05,0xF0,0x7E,0xAE,0x80,0x38,0x00,0x00,
0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xF7,0xFB,0x7B,0xBF,0x5F,
0x5D,0x7D,0xBD,0xBD,0x3F,0x5D,0x59,0xB1,0x73,0xF3,0xE5,
0xCF,0x1B,0x3F,0x77,0xFF,0xCF,0xBF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
0x7F,0xFF,0xFF,0xFF,0x7F,0x7F,0x7D,0x78,0x78,0x78,0x78,
0x78,0xF8,0x78,0x78,0x78,0x78,0x78,0x78,0xF8,0xF8,0xE0,
0x87,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,
0xF8,0x78,0xBC,0xDC,0x5C,0xFC,0x1C,0x1C,0x3C,0x5C,0x5C,
0x3C,0x78,0xF8,0xF8,0x60,0xC0,0x8F,0xA8,0xD8,0x88,0x31,
0x44,0x48,0x02,0xA0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xC0,0xF8,0xF8,0xF8,0xF8,0xFC,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
0xFF,0xFF,0xFF,0xFF,0xF6,0xEF,0xD0,0xF6,0xAE,0xAD,0xA9,
0x80,0xD1,0xD0,0xE0,0xF7,0xF9,0xFF,0xFF,0xFC,0xDC,0xF0,
0x7F,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFE,0xFF,0xBE,0xFF,0xFF,0xFD,0xF0,0xEF,0xDD,
0xDF,0xFE,0xA8,0x88,0xAA,0xC4,0xD0,0xE4,0xE6,0xF8,0x7F,
0x7E,0x9C,0xD8,0xE0,0xF0,0xF0,0xF2,0xF2,0xF0,0xB1,0x20,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
0x01,0x01,0x03,0x03,0x03,0x07,0x07,0x07,0x07,0x07,0x0F,
0x0F,0x0F,0x07,0x0F,0x0F,0x0F,0x07,0x07,0x0F,0x0E,0x0F,
0x0D,0x0F,0x2F,0x2B,0x2B,0x2B,0x2B,0x2B,0x2F,0x6F,0xEF,
0xFF,0xFD,0xFD,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,
0xBF,0xEF,0xEF,0xEF,0xBF,0xFF,0xBF,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,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xBF,0xBF,0xBF,
0xBF,0xFF,0xFE,0xFF,0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,
0xFF,0x7F,0x7D,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x3F,
0x0F,0x0F,0x07,0x07,0x03,0x03,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x03,0x03,0x03,0x0B,0x0B,0x0B,0x0B,
0x07,0x03,0x0E,0x06,0x06,0x06,0x02,0x12,0x13,0x13,0x03,
0x17,0x15,0x15,0x11,0x01,0x13,0x13,0x03,0x06,0x06,0x0E,
0x0F,0x0F,0x07,0x0F,0x0F,0x0F,0x0B,0x02,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()
{
  int i,j,k,posfila;

   glcd_init ( ON ) ;
   glcd_fillScreen ( on ) ;

///////////////////////////////////////////////////////////////////////////////



for( i = 0  ; i < 64 ; i ++ )
{
  for( j = 0 ; j < 16 ; j ++)
  {
    for( k = 0 ; k < 8 ; k ++ )
    {
      posfila = j * 8 + k;
      if ( bit_test ( ex [j] , 7 - k ) )
      glcd_pixel( posfila,i, no );
    }
  }
}
}
 :lol: :lol:
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: fastyx en 06 de Enero de 2007, 10:39:00
Isabelino : este codigo esta funcionando en un display real de un instrumental de avion que estoy terminando.

en cuanto a el valor nn y bb son las abreviatuas de blanco y negro que las modifique para ahorrar escritura.

esto lo tenes que modoficar en el archivo glcd.c en este pedazo:

#define GLCD_CS1     PIN_B3   // Chip Selection 1
#define GLCD_CS2     PIN_B2   // Chip Selection 2
#define GLCD_DI      PIN_E2  // Data or Instruction input
#define GLCD_E       PIN_E1   // Enable
#define GLCD_RST     PIN_B4   // Reset
//#define GLCD_BL      PIN_C0   // Back Light

#define GLCD_LEFT    0
#define GLCD_RIGHT   1

#define ON           1
#define OFF          0

#define NN           1                      // **************************AQUI nn en lugar de NEGRO
#define BB           0                      // **************************AQUI bb en lugar de BLANCO

Suerte!
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: isabelino en 08 de Enero de 2007, 17:37:47
fastyx:
 Gracias por tus aportes, pero en el Proteus no lo puedo hacer funcionar. Si llegas a tener tiempo pruébalo con el circuito que diseñé en Proteus más arriba en éstos posts. Inclusive está el bmp que he utilizado. Agradezco lo que puedas hacer.

Gracias. :lol:
Título: Re: como escribir un bmp en un lcd 128 x 64 b/w
Publicado por: BrunoF en 02 de Febrero de 2007, 12:25:16
Funciona en el Proteus isabelino porque a la formula se la hice yo a fastyx y lo probe con el proteus antes y se veia todo perfecto(incluso el avion que menciona fastyx).

Saludos.