www.mikrocontroller.net

Forum: Projekte & Code Bitmap auf KS0108


Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Florian G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie bringt man dem controller jetzt genau bei, dass er die ganze 
header datei ausgeben soll. Hast du eventuell ein Beispiel von dir, wie 
du es gemacht hast?

Autor: axel sch. (Gast)
Datum:

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

void glcdMainOut(void)
{
    ks0108ClearScreen();

    int offset = 0;
    int y = 0;
    int x =0;

    for(y=0; y<63 ;y=y+8)
    {
      for(x=0; x<64 ;x++)
      {
        ks0108GotoXY(x, y);
        ks0108WriteData(ImageMap[offset]);
        offset++;
      }
    }
    
    for(y=0; y<63 ;y=y+8)
    {
      for(x=63; x<127 ;x++)
      {
        ks0108GotoXY(x, y);
        ks0108WriteData(ImageMap[offset]);
        offset++;
      }
    }
}

Tool funktioniert 1a! Lob an Peter! ;)
Gruß axel

Autor: axel sch. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kleine Korrektur...
#include "bitmap.h"

void glcdMainOut(void)
{
    ks0108ClearScreen();

    int offset = 0;
    int y = 0;
    int x =0;

    for(y=0; y<63 ;y=y+8)
    {
      for(x=0; x<64 ;x++)
      {
        ks0108GotoXY(x, y);
        ks0108WriteData(ImageMap[offset]);
        offset++;
      }
    }
    
    for(y=0; y<63 ;y=y+8)
    {
      for(x=63; x<128 ;x++)
      {
        ks0108GotoXY(x, y);
        ks0108WriteData(ImageMap[offset]);
        offset++;
      }
    }
}

Autor: Christoph Wolf (redstorm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
der Link, den Peter oben angegeben hat, tut leider nicht mehr. Kann 
vielleicht jemand einen aktuellen Link posten. Das währe sehr nett.
Grüße
Redstorm

Autor: Esquilax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch geht schon, den Links hats nur ein bisschen "zerbröselt":
http://www.stoix.de/bmp2ks/bmp2ks.zip

Autor: gaston (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielleicht mit Kanonen (Photoshop) auf Spatzen (Bitmap) geschossen?

Hab gerade mal zum Test mit Windows-Paint (WinXP) ein Bild mit 128x64 in 
s/w bestellt, ein Linien reingemalt, gespeichert und konvertiert.

Keine Probleme...

Gruß aus Berlin
Michael

Autor: gaston (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Tatsache, ohne Photoshop gehts.
Mit Linux geht das Programm "kolourpaint". bmp2ks kann dann problemlos 
konvertieren.

Danke

grüße gaston

Autor: nixversteh (Gast)
Datum:

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

    uint16_t offset = 0;
    uint8_t y = 0;
    uint8_t x =0;

    for(y = 0; y < 64; y += 8) {
        for(x = 0; x < 64; x++) {
            ks0108GotoXY(x, y);
            ks0108WriteData(pgm_read_byte(ptr + offset));
            offset++;
        }
    }
    for(y = 0; y < 64; y += 8) {
        for(x = 64; x < 128; x++) {
            ks0108GotoXY(x, y);
            ks0108WriteData(pgm_read_byte(ptr + offset));
            offset++;
        }
    }
}

Autor: nixversteh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich nochmal.
Aber, in der Kürze liegt die Würze.
void ks0108WritePic(const uint8_t* ptr) {
    ks0108ClearScreen();

    uint8_t y=0;
    uint8_t x=0;

    for(y=0; y<64; y+=8) {
        for(x=0; x<64; x++) {
            ks0108GotoXY(x, y);
            ks0108WriteData(pgm_read_byte(ptr++));
        }
    }
    for(y=0; y<64; y+=8) {
        for(x = 64; x<128; x++) {
            ks0108GotoXY(x, y);
            ks0108WriteData(pgm_read_byte(ptr++));
        }
    }
}

Autor: gaston (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Felix L. (linsenm)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.