Hi@all ich hab hier ein LCD Display (HY-240128B) 240x128 Pixel mit T6963C welches ich an einem ATMEL 89S51 betreibe. Die Initialisierung, Pointeradressierung usw. hab ich auch schon hinbekommen. Auch die Textausgabe ist kein Problem. Wo ich aber nicht durchblicke ist der Grafikmodus. In dem Datenblatt zum T6963C stehen 8 Befehle zum setzten der einzelnen Pixel. Der Adressbereich des Pointers hat aber 8x8 Pixel. Des Weiteren wird es ja ziemlich mühsam jeden Pixel einzeln zu setzen. Hab gelesen dass man eine bmp Datei im Ram des Kontrollers speichern kann und diese dann an das Display senden kann. Leider hab ich so etwas noch nie gemacht. Programmieren möchte ich das alles in Assambler und Keil da ich bis jetzt nur mit Keil gearbeitet habe und auch nicht unbedingt umsteigen möchte. THX
einzelne pixel is echt etwas krückig ... is aber auch schnellund einfach zu realisieren wie du richtig erkannt hast ist in X richtung die adresse 8 bit breit in Y richtung kannst du die zeilen direkt per adrese erreichen du must also eine funktion schreiben die die 240 pixel /8 und je nach wert das passende pixel setzt bmps werden dazu einfach im 8bit format gespeichert diese 8bit kann man einfcah in den RAM zeilenweise reinhauen im textmodus hast du 8x8 pixel, im grafikmodus sind das dann 128 zeilen zu 40 8bit blöcken
>eine bmp Datei
.bmp ist ein Grafikformat für 3 x 2^8 Farben.
Dein Display hat nur s/w , also " eine Farbe ".
.bmp ist nicht geeignet.
.tif hingegen kann man als "1 Farbe" definieren.
Einzustellen ist korrekte Breite, Höhe, "1 Farbe" ; keine Komprimierung
!
Die .tif Datei beinhält Zusatzinfos in Form eines "Headers" sowie evtl.
einen "Footer". Die Nutzdaten stehen also mittendrin.
Die Rohdaten für 240x128 in s/w haben die Länge 240*128/8 = 3840 Bytes.
Es gilt jetzt, die Rohdaten in der .TIF zu finden.
Dazu eine solche .tif mit allen Pixel = weiss sowie eine zweite
derselben Grösse (240x128) mit allen Pixel = schwarz zu erstellen und
speichern (am PC).
Durch Vergleich findet man jetzt, wo die Nutzdaten stehen, die wie schon
gesagt 3840 Bytes Länge haben.
Wichtig: immer dasselbe Programm für die Erstellung der Bilder
verwenden, z.B. Irfanview. (Später können auch vorhandene echte Bilder
damit in das passende Format gebracht werden).
Ist die Position der Nutzdaten in der Datei bekannt, muss man diesen
Teil ausschneiden, das geht z.B. mit WinHex.
Diese Rohdaten speichert man jetzt separat ab, als Extension
<Datei.ROH>.
Dann nur noch diese Daten in den uC bringen und auf das LCD ausgeben.
Die Reihenfolge der Daten in der .TIF bzw. .roh ist "zeilenweise",
beginnend links oben, eine Pixelzeile nach der anderen.
So jedenfalls meine Vorgehensweise, wie vor vielen Jahren praktiziert.
Also das mit der y Richtung hab ich verstanden. Nur erscheinen die angegebenen Pixel bei mir wenn ich die passende Adresse eingeben doppelt. Einmal auf der linken u einmal auf der rechten Seite (Bild) Woran könnte das liegen. Adressbereiche von Grafik u Text stimmen. Zum erstellen der Grafik hab ich mir aus dem Forum das Programm FastLCD besorgt nur leider weiss ich jetzt nicht was ich mit der erstellten .bas Datei machen muss? Als Image speichern od. als Image Array und dann einfach in einem Editor öffnen? Und egal ob der Pin an FS 1 oder 0 ist, die Schriftbreite bleibt immer auf 6x8? Ist Da noch ein zusätzlicher Befehl notwendig?
bei meinem LCD ist 6x8 odedr 8x8 mit einem pin außen je nach dem welche man wählt mus man bei der addressierung aufpassen da sich die adressen auch ändern !! da die ganzen bytes jetz nur noch 6bit lang sind ... das is bei dem LC teilweise nen bissel krückig der adressbereich bleibt gleich .. aber die start und endeadressen für die zeilen ändern sich bei 8x8 is es einfacher ... bei 6x8 muss man 240/6 für das setzen der bits rechnen
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.