Autor Tema: como escribir un bmp en un lcd 128 x 64 b/w  (Leído 6638 veces)

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

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
como escribir un bmp en un lcd 128 x 64 b/w
« 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 !!!!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #1 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...


"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado isabelino

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 138
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #2 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.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #3 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.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #4 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.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado isabelino

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 138
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #5 en: 01 de Enero de 2007, 18:49:12 »
BrunoF: tienes los ejemplos por favor.

gracias. :lol:

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #6 en: 01 de Enero de 2007, 20:40:42 »
No los tengo en esta PC. En cuanto los tenga los pongo :S

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado isabelino

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 138
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #7 en: 02 de Enero de 2007, 17:36:45 »
Gracias BrunoF: sigo en la dulce espera.

 :D :lol:

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #8 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

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #9 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

Desconectado isabelino

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 138
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #10 en: 06 de Enero de 2007, 00:28:20 »
Gracias fastyx:
            He estado esperando dicha rutina de tí o de BrunoF.
            Gracias a ambos.

 :-/ :-/

Desconectado isabelino

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 138
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #11 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:

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #12 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!

Desconectado isabelino

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 138
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #13 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:

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: como escribir un bmp en un lcd 128 x 64 b/w
« Respuesta #14 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.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.