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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.