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
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 ;)
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?
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
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 | }
|
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
Doch geht schon, den Links hats nur ein bisschen "zerbröselt": http://www.stoix.de/bmp2ks/bmp2ks.zip
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
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
Hallo, Tatsache, ohne Photoshop gehts. Mit Linux geht das Programm "kolourpaint". bmp2ks kann dann problemlos konvertieren. Danke grüße gaston
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 | }
|
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 | }
|
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
@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ß!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.