Forum: Mikrocontroller und Digitale Elektronik BMP mit T6963


von Maier (Gast)


Lesenswert?

Hallo an Alle,

weiss jemand wie man eine BMP Grafik auf ein Display vom Typ T6963
bekommt? Ein Beispiel z.B. in C wie es funktioniert, das wäre toll.

von Rahul D. (rahul)


Lesenswert?

ausdrucken und aufkleben!

von Benedikt (Gast)


Lesenswert?

http://www.mikrocontroller.net/attachment.php/215117/lcdcon_USB.zip

Da findest zu einen BMP Dekoder in C.

Das ganze auf einem uC zu machen, macht wenig Sinn. Besser am PC in Raw
Daten umwandeln.

von Maier (Gast)


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.

von Maier (Gast)


Lesenswert?

Gibt es keinen C Code dafür?

von Jens (Gast)


Lesenswert?

> Ich benötige nur ein Tool womit man die BMP Datei in z.B. ein
> RAW Datei ablegt.

das kann doch so ziemlich jedes Grafiktool, z. B. Irfan View.

von Maier (Gast)


Lesenswert?

Da ich nicht so der Profi bin, brauche ich dazu noch für den AVR eine
Funktion womit man dann das Raw File auf das Display T6963 ausgeben
kann.

von GAWu (Gast)


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.

von Maier (Gast)


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.

von mthomas (Gast)


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.

von Hartmut Gröger (Gast)


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

von GAWu (Gast)


Angehängte Dateien:

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.

von beta-frank (Gast)


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.

von beta-frank (Gast)


Lesenswert?

Anmerkung: Im 1. Codefenster <u> bzw. </u> ist falsch. Muß ein
unterstrich sein. Hat die Formatierungsroutine verwurschtelt...

von Benedikt (Gast)


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.

von Maier (Gast)


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?

von Benedikt (Gast)


Lesenswert?

Das ist ganz einfach:
Das Byte ans LCD senden, und den Befehl 0xC0 hinterher.
Mehr muss man nicht tun.

von Marko B. (Gast)


Lesenswert?

Außer man betreibt das Display mit 6*8 Font. Dann werden nur die unteren
6 Bits einer Bytes ausgewertet. Da muß man dann ein wenig rechnen.

von Maier (Gast)


Lesenswert?

Ok Benedikt ich werds mal ausprobieren.

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
Noch kein Account? Hier anmelden.