BMP mit T6963

Gast #216508
Lesenswert?

Das bringt mir auch nicht viel weiter.
Ich kann die EXE Datei nicht ausführe. Kein Programm Fenster erscheint
bei mir.
Ich benötige nur ein Tool womit man die BMP Datei in z.B. ein RAW Datei
ablegt.
Anschließend benötige ich noch eine C Routine wo dann das ganze auf
mein Display ausgibt.
Gast #216512
Lesenswert?

Professionelle Software Grafik LCD Bibliotheken für den T6963 Controller
findest du unter:

www.easygui.com
www.ramtex.dk

Sind leider sehr teuer.
Wenn jemand eine günstigere Alternative dazu anbieten kann bin ich auch
daran interessiert.
Gast #216513
Lesenswert?

Vor einiger Zeit habe ich mal C-Codes zu diesem Thema gesehen.
Ich benötige da eine Funktion PUT_BITMAP in der ich dann die ganzen
Werte von der Raw Datei übergebe und anschließend werden diese dann auf
das Display ausgegeben.
Gast #216514
Lesenswert?

Fuer den Gameboy-Advance gibt es einige Tools zur Konvertierung und von
Bitmaps und auch ein paar Routinen zur Anzeige, mglw. 'was Nuetzliches
als Ideengeber dabei.
Mit Fontgen (irgendwo auf 8052.com) koennen ebenfalls BMP-Dateien in
"C-Arrays" konvertiert werden. Anzeigeroutine ist dann "nur noch"
Array durchlaufen und Punkte setzen.
Gast #216515
Lesenswert?

Hi

bei Electronic Assembly (ich glaube www.lcd-module.de) habe ich vor
einiger Zeit Software zu Konvertierung von Bitmaps in programmtechnisch
verwerdbare Formate. Ob C dabei ist kann ich im Moment nicht sagen.

MfG HG
Gast #216516
Lesenswert?

Die von dir genannte Software bezieht sich auf "intelligente LCD
Module" - siehe Artikel unten.

Die weltweit ersten Displays mit eingebauter Intelligenz sind da ! Mit
8 eingebauten Zeichensätzen und mehr als 112 integrierten
Grafikfunktionen geben sie einen Einblick in die Grafikprogrammierung
von morgen. Ab sofort sind keine Programmierkenntnisse mehr
erforderlich, um die Möglichkeiten eines modernen Grafikdisplays voll
auszuschöpfen. Die Verwendung diverser Schriftarten- und größen, Linien
zeichnen, Bilder platzieren, Bargraph anzeigen, Erstellen von Pulldown
Menus, um nur einige der hier integrierten Befehle zu nennen, all das
gelingt mühelos und schnell.
Die Anbindung erfolgt flexibel über eine der 3 eingebauten
Schnittstellen RS-232, SPI und I²C-Bus. Die Versorgungsspannung liegt
bei +5V. Die Displays gibt es in blau-weiß und schwarz-weiß (FSTN).
Alle sind für einen Betriebstemperaturbereich von -20..+70°C ausgelegt;
Temperaturkompensation inklusiv.
Optional sind die Displays der EA eDIP240-7 Serie auch mit analogem
Touchpanel lieferbar. Trotz integriertem Touchkontroller und voller
Softwareunterstützung ist der Aufpreis mit nur 10.- EUR gering. Über
das Touchpanel lassen sich Eingaben tätigen, Bildschirme ändern,
Analogwerte einstellen, Menus öffnen, oder aber auch x-beliebige Werte
über die serielle Schnittstelle senden. Dadurch können sehr einfach
externe Geräte gesteuert werden. Im EEPROM-Speicher können komplette
Befehlsabläufe und Bilder ablegt oder auch die integrierten Fonts
geändert und erweitert werden.
Die Displays besitzen auf einer Fläche von 4,5" (96x61mm) eine
Auflösung von 240x128 Punkten. Mit nur 113x70x10,8mm sind sie extrem
kompakt aufgebaut. Die Montage erfolgt kostengünstig durch einfaches
Einlöten in eine Platine. Alle im industriellen Umfeld gültigen
EMV-Richtlinien werden selbstverständlich voll eingehalten.
Ein komplettes Entwicklungstool samt Simulator für Windows ist
kostenfrei im Internet verfügbar. Es zeigt schnell die ganze
Funktionalität und unterstützt gleichzeitig später die Entwicklung.
Angehängte Dateien:
Gast #216517
Lesenswert?

Vielleicht so:
Mit Paintshop o.ä. das S/W-Bild als *.pbm mit der Option "binär"
abspeichern. Schön einfaches Format. Der einfachheithalber sollte das
Bild in X-Richtung ein vielfaches von 8 aufweisen. Die Datei enthält
nun ein Header, der u.a. X- u. Y-Auflösung angibt. Die Pixeldaten
enthalten pro Byte 8 Pixel. Die Bytes sind Zeilenweise von links oben
nach recht unten nacheinander abgelegt.

Datei mit einem bin2hex-Tool (z.B. winbin.exe von www.ulrichradig.de)
umwandeln. Die Datei als *.h umbenennen und folgendes am Anfang
einfügen:
1
#include <inttypes.h>
2
#include <avr/pgmspace.h>
3
static uint8_t __attribute__ ((progmem)) my_foo_pic[]={
4
/*hier kommen jetzt die Bilddaten...*/

Ganz unten nicht vergessen:
1
/*...letzte Zeile Bilddaten*/
2
};

Zum Bild zeichnen aus dem Header die X- u. Y- Auflösung ermitteln.
Aufbau Header siehe google (ist einfach der Header)
1
void main(){
2
/* ...init_something etc... */
3
draw_pic(my_foo_pic, 17, 3); /*Bildquelle, X-Ausgabepos.,
4
Y-Ausgabepos.*/
5
}
6

7
void draw_pic(uint8_t* pdata, uint8_t x_pos, uint8_t y_pos){
8
uint8_t x_size;
9
uint8_t y_size;
10
uint8_t x_count;
11
uint8_t y_count;
12

13
x_size = /* x-Auflösung aus Header ermitteln...*/
14
y_size = /* y-Auflösung aus Header ermitteln...*/
15

16
pdata= /* nach Header zeigen -> wo Pixeldaten beginnen... */
17

18
for(y_count=y_pos; y_count<(y_size+y_pos); y_count++){
19
for(x_count=x_pos; x_count<(x_size+x_pos); x_count+=8){
20
set_byte(x_count, y_count, pgm_read_byte(pdate++));
21
}
22
}
23

24
}

Anmerkung zu set_byte: Deine LCD-schreibe-Funktion; Gibt an
X-Y-Position 8 Pixel horizontal aus. Bei Display>256Pixel(X||Y)
uint16_t Variablen verwenden.
Gast #216519
Lesenswert?

>Mit Paintshop o.ä. das S/W-Bild als *.pbm mit der Option "binär"
abspeichern. Schön einfaches Format.

Das geht mit BMP genauso:
Der Header besteht aus 62Bytes bei einem SW Bild und der Rest sind
reine Bilddaten. Allerdings steht das Bild auf dem Kopf, also vorher
das Bild auf den kopf stellen.
Und die Bildbreite wird auf 4Byte aufgerundet:
Ist das Bild z.B. 240 Pixel = 30Byte breit, werden 32 gespeichert.
Gast #216520
Lesenswert?

Hei ich danke euch!
Meine Funktion für Pixel setzen lautet so:
void LCD_PutPixel(unsigned char x, unsigned char y, unsigned char Set)
{
unsigned int XY;
unsigned char bitByte;

  XY=0x0000;
  XY=XY+(y*22);
  XY=XY+(x/6);


       out(0x24, XY & 0x00FF, XY>>8);
  bitByte=5-(x % 6);

  if (0 != Set)
   {
          bitByte |= 0xF8;
         }
        else
         {
          bitByte|=0xF0;
         }

  out(bitByte, 0, 0);    //0b1111SXXX , s is set/reset, xxx is bit 
number
xxx
          //(Each memorybyte i six graphics bits (pixels))
}
Wie bekomme ich es hin, das ich z.B. 8 Pixel gleichzeitig ausgeben
kann? Dies beötige ich doch dafür oder?

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