MikroBasic PRO tips & tricks
 
  Box pubblicitario
Visualizzare una immagine bitmap
su display grafico 128x64 (KS0108)

Vedere anche:

Per le informazioni riferite a questo argomento e per compilare i programmi è stata usata la
vers. 5.01 di mikroBasic Pro for PIC.

Altre versioni del compilatore potrebbero avere comportamenti diversi o non funzionare.

Per visualizzare una immagine bitmap, bisogna prima crearla con un programma grafico qualunque, ad es. il programma Paint, fornito con Windows.

Aprire il programma e creare una bitmap larga esattamente 128 pixel ed alta 64 pixel.

  Poi salvare il file in formato bitmap monocromatica

Adesso bisogna importare la bitmap nel nostro programma in mikroBasic PRO.

Per fare questo, cliccare, sulla barra dei menu, prima su

(1) Tools e poi su

(2) GLCD Bitmap Editor.

Nella finestra che si aprirà, cliccare
(3) sulla linguetta KS0108

e poi cliccare sul pulsante
(4) Load BMP

  Dalla finestra Apri file bitmap, scegliere il file desiderato, il quale sarà poi visibile nel riquadro di anteprima del display grafico.

(5) Cliccare su mikroBASIC PRO e poi

(6) sul pulsante Copy Code To Clipboard per salvare tutto negli appunti.
Dopo aver fatto questo, chiudiamo la finestra.

Adesso dobbiamo creare un nuovo modulo ed incollare

(7) in questo punto, il codice che è stato generato dal GLCD bitmap editor.

Avremmo potuto inserire il codice anche direttamente nel nostro programma ma, è preferibile usare un modulo. In questo modo, se vogliamo visualizzare un'altra immagine, basta includere il relativo modulo, senza effettuare grosse modifiche al programma principale.
E poi, l'immagine può essere usata anche da altri programmi.

Il codice è stato incollato nel punto indicato.
Cliccando sull'icona "Save",

(8) al modulo, è stato dato un nome ed è stato salvato nella cartella del nostro programma.

Prendiamo nota del nome della const creata (una matrice di 1024 bytes).
In questo caso il nome è
(9) bedu2.

Ci servirà, successivamente, quando dovremo visualizzare l'immagine sul display grafico.

Prima, però, dobbiamo inserire il modulo nel progetto, come indicato nella pagina "Creare un nuovo modulo mikroBasic PRO".
Se non lo facciamo avremo degli errori in compilazione.

Una volta inserito il file del modulo nel progetto, aprendo il Project manager, ci troveremo
(10) in questa situazione.

Adesso, per far visualizzare la nostra immagine, dobbiamo inserire, tra le parentesi dell'istruzione Glcd_Image(...),

(11) il nome della const che abbiamo visto al punto (9) (bedu2), preceduto dal carattere "@".

Con quel carattere, indichiamo al compilatore di prendere l'indirizzo di memoria del primo byte della costante "bedu2".
In pratica, indichiamo l'indirizzo d'inizio dell'immagine.

Ecco il risultato sulla mia "vecchia" easypic3.

File bedu2_image.mbas:

module bedu2_image
' ------------------------------------------------------  
' GLCD Picture name: bedu2.bmp            
' GLCD Model: KS0108 128x64            
' ------------------------------------------------------  

const bedu2 as byte[1024] = (
  0,   0,   0,   0,   0,   0, 128,  64,  32,  16,  16,   8,   8,   8,   8,   8,
  8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
  8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
  8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,  16,  16,  32,  64, 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, 254,   1,   0,   0,   0,   0,   0,   0,   0,   0, 128,
112,  46,  33,  46, 112, 128,   0, 252, 136,   4,   4, 248,   0,   0, 252, 136,
  4,   4, 248,   0,   0, 252,   0,   0,   0, 252,   0,   0, 252,   8,   4,   4,
248,   0,   4, 255,   4,   0, 253,   0,   0,   0,   0,   0,   0,   0,   0,   1,
254,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 252,   4,   4,   4,   4,
  4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
  4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
  4,   4,   4,   4,   4,   4,   4,   4, 252,   0,   0,   0,   0,   0,   0,   0, 
  0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
  0,   0,   0,   0,   0,   1,   0,   3,   0,   1,   1,   0,   0,   0,   3,   0,
  1,   1,   0,   0,   0,   0,   1,   1,   1,   1,   0,   0,   1,   0,   0,   0,
  1,   0,   0,   1,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,
  0,   0, 255, 255, 255, 255,   0,   0,   0,   0,   0,   0,   0,   0, 255, 255,
255, 255,  15,  15,  15,  15,   0,   0,  48,  48,  48,  48,  48,  48,  48,  48,
 63,  63,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0, 
  0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 224,  16,
 16,  32, 252,   0,   0, 244,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,
  0,   0, 255, 255, 255, 255, 192, 192, 192, 192,   0,   0,   0,   0, 255, 255,
255, 255, 192, 192, 192, 192,   0,   0,  63,  63,  48,  48,  63,  63,  48,  48,
 63,  63,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   3,   4,
  4,   4,   7,   0,   0,   7,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,
  0,   0, 255, 255, 255, 255,   3,   3, 255, 255, 255, 255,   0,   0, 255, 255,
255, 255,   3,   3,   3,   3,   0,   0,   0,   0,   0,   0,  51,  51,  51,  51,
 63,  63,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0, 240, 128,  64,
 64, 128,   0,   0, 240,  16,  16,  16,  16,  16,   0,   0, 128,  64,  64, 128,
240,   0,   0, 192,   0,   0,   0, 192,   0,   0, 208,   0,   0, 192, 128,  64,
 64, 128,   0,   0, 128,  64,  64,  64, 128,   0,   0,   0,   0,   0,   0,   0,
255,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,
  0,   0,  63,  63,  63,  63,  60,  60,  63,  63,  15,  15,   0,   0,  63,  63,
 63,  63,  60,  60,  60,  60,   0,   0,   3,   3,   3,   3,  63,  63,  51,  51,
 63,  63,   0,   0,   0,   0,   0,   0, 255,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,  63, 192,   0,   0,   0,   0,   0,   0,  31,   8,  16,
 16,  15,   0,   0,  31,  17,  17,  17,  17,  17,   0,   0,  15,  16,  16,  16,
 31,   0,   0,  15,  16,  16,  16,  31,   0,   0,  31,   0,   0,  31,   0,   0,
  0,  31,   0,   0,  15,  16,  16,  16,  15,   0,   0,   0,   0,   0,   0, 192,
 63,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  31,  16,  16,  16,  16,
 16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
 16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,  16,
 16,  16,  16,  16,  16,  16,  16,  16,  31,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   1,   2,   4,   4,   8,   8,   8,   8,   8,
  8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
  8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
  8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,   4,   4,   2,   1,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
)

implements

end.

File prova_glcd.mbas:

program prova_glcd
' PIC16F877A - 8MHz
' Connessioni modulo GLCD 
dim GLCD_DataPort as byte at PORTD

dim GLCD_CS1 as sbit at RB2_bit
    GLCD_CS2 as sbit at RB3_bit
    GLCD_RS  as sbit at RB4_bit
    GLCD_RW  as sbit at RB5_bit
    GLCD_EN  as sbit at RB6_bit
    GLCD_RST as sbit at RB7_bit

dim GLCD_CS1_Direction as sbit at TRISB2_bit
    GLCD_CS2_Direction as sbit at TRISB3_bit
    GLCD_RS_Direction  as sbit at TRISB4_bit
    GLCD_RW_Direction  as sbit at TRISB5_bit
    GLCD_EN_Direction  as sbit at TRISB6_bit
    GLCD_RST_Direction as sbit at TRISB7_bit
' End connessioni modulo GLCD

dim cerchi as byte

sub procedure delay2S
  delay_ms(2000)        ' ritardo di circa 2 secondi
end sub

main:
    Glcd_Init()       ' inizializza glcd
    while TRUE
        Glcd_Fill(0x00)
        Glcd_Image(@bedu2) ' visualizza bitmap
        delay2S

        Glcd_Fill(0x00)
        Glcd_Box(22, 16, 90, 57, 2) ' disegna rettangolo pieno
        delay2S

        Glcd_Fill(0x00)
        for cerchi = 1 to 10   ' disegna cerchi
            Glcd_Circle(63, 32, 3 * cerchi, 1)
        next cerchi
        Delay2S()
    wend
end.

Bibliografia:
Manuale mikroBasic PRO
Datasheet PIC16F877A

Ultima modifica