Bitmap auf KS0108

Gast #102369
Lesenswert?

Hi,
da ich kein Tool gefunden habe, welches mir ein Bitmap in eine
Header Datei für das KS0108 umwandelt, habe ich selber eins
geschrieben. Es kann monochrome, unkomprimierte 128x64 Pixel große
Bitmaps verarbeiten. In der Headerdatei stehen dann 1024 Hexwerte,
nach dem schema
chip0 pattern 0 byte 0 bis 63
chip0 pattern 1 byte 0 bis 63
.
.
.
chip1 pattern 7 byte 0 bis 63
Konnte aber mangels Speicher :( noch gar kein ganzes Bild testen.
Nur bis chip 0 patter 5. Sah aber ganz gut aus.
Falls ihr es benutzt, sagt doch hier kurz bescheid wie gut es
funktioniert.
<a href="http://www.stoix.de/bmp2ks/bmp2ks.zip">Programm</a>;
Grueße
peter
#526313
Lesenswert?

hallo peter,
da ich grade mit einem graphikdisplay am basteln bin, habe ich mir dein 
programm mal angesehen.
es ist recht nützlich, aber leider schade, dass man keine ausgabge für 
assembler machen lassen kann.
ich programmiere ausschliesslich in assembler, deshalb ist es recht 
umständlich, das h-file, welches dein programm erzeugt, erst in asm 
umzusetzen. aber wenn du einen passenden konevrter hast...
bis jetzt habe ich meine graphiken von hand immer in dieses format 
gebracht:

chip 0  pattern 0  bytes 0..63
chip 1  pattern 0  bytes 0..63
chip 0  pattern 1  bytes 0..63
chip 1  pattern 1  bytes 0..63

usw.

aber sosnt - nützliches tool ;)
Gast #739170
Lesenswert?

Hallo,
habe das ganze zusammen mit den C-Routinen von ape wie folgt gelöst:
1
#include "bitmap.h"
2

3
void glcdMainOut(void)
4
{
5
    ks0108ClearScreen();
6

7
    int offset = 0;
8
    int y = 0;
9
    int x =0;
10

11
    for(y=0; y<63 ;y=y+8)
12
    {
13
      for(x=0; x<64 ;x++)
14
      {
15
        ks0108GotoXY(x, y);
16
        ks0108WriteData(ImageMap[offset]);
17
        offset++;
18
      }
19
    }
20
    
21
    for(y=0; y<63 ;y=y+8)
22
    {
23
      for(x=63; x<127 ;x++)
24
      {
25
        ks0108GotoXY(x, y);
26
        ks0108WriteData(ImageMap[offset]);
27
        offset++;
28
      }
29
    }
30
}

Tool funktioniert 1a! Lob an Peter! ;)
Gruß axel
Gast #739633
Lesenswert?

kleine Korrektur...
1
#include "bitmap.h"
2

3
void glcdMainOut(void)
4
{
5
    ks0108ClearScreen();
6

7
    int offset = 0;
8
    int y = 0;
9
    int x =0;
10

11
    for(y=0; y<63 ;y=y+8)
12
    {
13
      for(x=0; x<64 ;x++)
14
      {
15
        ks0108GotoXY(x, y);
16
        ks0108WriteData(ImageMap[offset]);
17
        offset++;
18
      }
19
    }
20
    
21
    for(y=0; y<63 ;y=y+8)
22
    {
23
      for(x=63; x<128 ;x++)
24
      {
25
        ks0108GotoXY(x, y);
26
        ks0108WriteData(ImageMap[offset]);
27
        offset++;
28
      }
29
    }
30
}
Gast #937707
Lesenswert?

Hallo,

hab irgendwie Probleme, ein akzeptables Format herzustellen.

Wenn ich mit Photoshop ein bitmap (1 bit farbtiefe) mit 128x64 pixeln 
erstelle, kommt immer die Standartfehlermeldung mit dem bmp2ks tool.

Kann mir jemand erklären wie ich das hinbekomme?

Danke und Grüße
Gast #938108
Lesenswert?

Weil wir gerade dabei sind, meine Version der Mal-Routine.
Jetzt dürfen die Pic's auch im Flash bleiben.
Aufgerufen wird so:
1
ks0108WritePic(ImageMap);
1
void ks0108WritePic(const uint8_t* ptr) {
2
    ks0108ClearScreen();
3

4
    uint16_t offset = 0;
5
    uint8_t y = 0;
6
    uint8_t x =0;
7

8
    for(y = 0; y < 64; y += 8) {
9
        for(x = 0; x < 64; x++) {
10
            ks0108GotoXY(x, y);
11
            ks0108WriteData(pgm_read_byte(ptr + offset));
12
            offset++;
13
        }
14
    }
15
    for(y = 0; y < 64; y += 8) {
16
        for(x = 64; x < 128; x++) {
17
            ks0108GotoXY(x, y);
18
            ks0108WriteData(pgm_read_byte(ptr + offset));
19
            offset++;
20
        }
21
    }
22
}
Gast #938131
Lesenswert?

Sorry, ich nochmal.
Aber, in der Kürze liegt die Würze.
1
void ks0108WritePic(const uint8_t* ptr) {
2
    ks0108ClearScreen();
3

4
    uint8_t y=0;
5
    uint8_t x=0;
6

7
    for(y=0; y<64; y+=8) {
8
        for(x=0; x<64; x++) {
9
            ks0108GotoXY(x, y);
10
            ks0108WriteData(pgm_read_byte(ptr++));
11
        }
12
    }
13
    for(y=0; y<64; y+=8) {
14
        for(x = 64; x<128; x++) {
15
            ks0108GotoXY(x, y);
16
            ks0108WriteData(pgm_read_byte(ptr++));
17
        }
18
    }
19
}
Gast #938138
Lesenswert?

weißt du diese sorry bezieht sich doch nur auf bytes die du mit schrift 
voll machst.
poste ich ein bild sind 2.5 millionen bytes wech. sind wir doch alle 
froh, dass du nicht nen bild gepostet hast ;)
ps: bin grad nicht in der verfassung, aber kann man diese for's nicht in 
do-whiles umwandeln, könnte man noch mehr sparen.

N8 dann auch
#1037054
Lesenswert?

@Peter,

ich benutze dein Programm und es funktioniert hervorragend. Dankeschön!

Mit was hast du es denn geschrieben? Kannst du den Source-Code 
vielleicht posten?

@All: Da ich eine Weile gebraucht habe bis ich ein gültiges Format 
erzeugen konnte möchte ich meinen Weg unter Windows kurz posten:

1. Bitmap mit Gimp erstellen
2. Mit paint öffnen
3. Mit paint speichern. Das geforderte Speicherformat kann hier 
komfortabel ausgewählt werden.

Schönen Gruß!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren