www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BMP mit T6963


Autor: Maier (Gast)
Datum:

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

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
ausdrucken und aufkleben!

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/attachment.php/2151...

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.

Autor: Maier (Gast)
Datum:

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

Autor: Maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es keinen C Code dafür?

Autor: Jens (Gast)
Datum:

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

Autor: Maier (Gast)
Datum:

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

Autor: GAWu (Gast)
Datum:

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

Autor: Maier (Gast)
Datum:

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

Autor: mthomas (Gast)
Datum:

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

Autor: Hartmut Gröger (Gast)
Datum:

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

Autor: GAWu (Gast)
Datum:
Angehängte Dateien:

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

Autor: beta-frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <inttypes.h>
#include <avr/pgmspace.h>
static uint8_t __attribute__ ((progmem)) my_foo_pic[]={
/*hier kommen jetzt die Bilddaten...*/

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

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

void draw_pic(uint8_t* pdata, uint8_t x_pos, uint8_t y_pos){
uint8_t x_size;
uint8_t y_size;
uint8_t x_count;
uint8_t y_count;

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

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

for(y_count=y_pos; y_count<(y_size+y_pos); y_count++){
for(x_count=x_pos; x_count<(x_size+x_pos); x_count+=8){
set_byte(x_count, y_count, pgm_read_byte(pdate++));
}
}

}

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.

Autor: beta-frank (Gast)
Datum:

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

Autor: Benedikt (Gast)
Datum:

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

Autor: Maier (Gast)
Datum:

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

Autor: Benedikt (Gast)
Datum:

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

Autor: Marko B. (Gast)
Datum:

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

Autor: Maier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Benedikt ich werds mal ausprobieren.

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.