Hallo alle zusammen :P Bis jetzt habe ich schon Dotmatrix Displays und auch TFT Touch Displays von Electronic Assembly mit eigenen Bibliotheken realsiert. Jetzt wollte ich mir für mein nächstes Projekt die Ansteuerung eines Grafik Displays vornehmen. Das hier wird es wohl werden: http://www.winstar.com.tw/products_detail_ov.php?lang=de&ProID=49 Dieses hat einen 7108 als Controller verbaut. Allerdings finde ich zu Grafikfähigen Displays nur wenig gute deutsche Hilfe. Selbst hier um Forum habe ich nicht viel dazu gefunden. Kennt jemand eine Seite bei der es zu diesem Thema ein gutes Tutorial gibt? Vielleicht sogar fertige Bibliotheken? Die Datenblätter habe ich mir von einigen angesehen aber so ganz verstanden habe ich es noch nicht. Der Controller mit dem ich das ganze ansteuern möchte ist ein ATxmega128A1U.
Matthias F. schrieb: > Die Datenblätter habe ich mir von einigen angesehen aber so ganz > verstanden habe ich es noch nicht. Der 7108 ist ja ein sehr einfacher Controller. Kannst du ihn denn schon ansteuern? Sprich einfach mal ein Byte ins Graphic RAM schreiben? Mit diesem Controller kannst du nur Pixel setzen. Mehr unterstützt dich der Controller nicht. D.h. alles weiter darauf aufbauende musst du selbst machen. Um also eine Linie zu zeichnen, liegt es an dir die entsprechenden Pixelkoordinaten zu erreichnen und dann die entsprechenden Pixel auf schwarz zu setzen. Um ein schwarzes Rechteck zu malen, liegt es an dir die entsprechenden Pixel innerhalb des Rechtecks auf schwarz zu setzen. etc. etc. > Vielleicht sogar fertige Bibliotheken? Gibt es sicher irgendwo. Meine persönliche Meinung ist allerdings, dass es ganz gut ist, wenn man weiss welche Arbeit ein Computer damit hat, die Pixel einer zu zeichnenden Linie zu bestimmen. Aber erstes Zwischenziel ist es erst mal, überhaupt irgendwelche Pixel einzufärben und auszuhorchen, wie die Sache mit dem Y Register bzw. X Register (dem Page Register) funktioniert. Einfach mal 1 Byte an das Displa ausgeben und nachsehen welche Pixel schwarz werden. :-) Das nächste Ziel ist dann eine Funktion, der man gezielt die Koordinaten eines Pixels angeben kann, die diese Koordinaten in die Werte des Y und X Registers umrechnet, das Byte von der dortigen Position holt, das Pixel in Form des richtigen Bits auf 0 oder 1 setzt und wieder zurück schreibt. Als Ergebnis muss dann genau an der richtigen Position genau dieses eine angebene Pixel auftauchen. Hat man dann erst mal eine Pixel Setz Funktion, kann alles weitere erst mal auf dieser Funktion beruhen. Um eine Linie (allgemein) zu malen, benutzt man einen Bresenham Algorithmus. Für waagrechte bzw. senkrechte Linien kann man sich auch spezielle Funktionen bauen. Rechtecke werden gemalt, in dem eine entsprechende Anzahl an waagrechten oder senkrechten Linien nebeneinader bzw. untereinander gemalt werden, etc. etc. Und so führt dann eben eines zum anderen. Leg am Anfang noch nicht allzuviel Wert auf Optimierung. Benutze erst mal deine Pixel Basis Funktion. Optimierung kommt später. Am Anfang ist es erst mal wichtiger, die Verfahren zu verstehen.
:
Bearbeitet durch User
Hi
>Dieses hat einen 7108 als Controller verbaut.
Das ist der simpelste Grafikcontroller den es überhaupt gibt. Ist auch
unter KS0108B bekannt.
MfG Spess
Karl H. schrieb: > Der 7108 ist ja ein sehr einfacher Controller. > Kannst du ihn denn schon ansteuern? Sprich einfach mal ein Byte ins > Graphic RAM schreiben? Nein ich habe bis jetzt noch gar keine Schaltung dazu aufgebaut. Bis jetzt habe ich nur allgemein mal nach Grafikdisplays gegoogelt. Vorraussichtlich werde ich auch erst in 2-3 Wochen dazu kommen, eine Platine aufzubauen. Aber ich will bis dahin in etwa wissen wie ich das ganze dann angehen muss, damit ich gleich loslegen kann. > Leg am Anfang noch nicht allzuviel Wert auf Optimierung. Benutze erst > mal deine Pixel Basis Funktion. Optimierung kommt später. Am Anfang ist > es erst mal wichtiger, die Verfahren zu verstehen. Deine Vorgehensweiße erscheint mir logisch. Aber wie ist das dann später mit Buchstaben und Zahlen? Muss ich hier den mühsam jeden Buchstaben einzeln erstellen und schauen wie er aussieht oder geht es auch einfacher? In einem Youtube finde habe ich mal gesehen, wie jemand ein Bild in ein Programm am PC gezogen hat und das Programm dann die hierfür notwendigen Pixelpositionen ausgespuckt hat. Hört sich das nur einfach an oder lässt sich das leicht umsetzen nachdem man es geschaft hätte ein paar einzelne Pixel zu setzen?
Matthias F. schrieb: > Aber wie ist das dann später mit Buchstaben und Zahlen? > Muss ich hier den mühsam jeden Buchstaben einzeln erstellen und schauen > wie er aussieht oder geht es auch einfacher? Im Prinzip geht es nicht einfacher. Um ein 'A' aufs Display zu malen, musst du die Pixel
1 | +---+---+---+---+---+ |
2 | | | * | * | * | | |
3 | +---+---+---+---+---+ |
4 | | * | | | | * | |
5 | +---+---+---+---+---+ |
6 | | * | | | | * | |
7 | +---+---+---+---+---+ |
8 | | * | * | * | * | * | |
9 | +---+---+---+---+---+ |
10 | | * | | | | * | |
11 | +---+---+---+---+---+ |
12 | | * | | | | * | |
13 | +---+---+---+---+---+ |
14 | | | | | | | |
15 | +---+---+---+---+---+ |
setzen, wobei du zb die Position links/oben als die Position zur Positionierung eines Buchstabens benutzt (kannst auch links/unten nehmen). Rate mal welche Funktion die einzelnen Pixel setzt :-) Du wirst also Font Daten brauchen (= eine Beschreibung, die die dargestellte Matrix in Zahlenform ausdrückt.). Die kann man sich natürlich selbst erstellen. Aber weil ich das gerade vor 2 Wochen für ein STM-Discovery Board gemacht habe, ... die einfachere Variante ist es natürlich bei anderen 'Anleihen' zu nehmen und sich zb ein Programm zu nehmen, welches einen Windows-Font Buchstabe für Buchstabe entsprechend aufrastert. :-) Hat man die entsprechende Abarbeitungsfunktion erst mal fertig, dann ist ein Fonttausch nur noch eine Sache von Sekunden. D.h. wenn man damit leben kann eine oder mehrere fixe Fontgrößen zu haben. Wenn es komplett wahlfrei werden soll, dann wirds aufwändiger. Dann muss man die Buchstaben in Form von Sammlungen von Linien oder Splines beschreiben. > Pixelpositionen ausgespuckt hat. Hört sich das nur einfach an oder lässt > sich das leicht umsetzen nachdem man es geschaft hätte ein paar einzelne > Pixel zu setzen? Ist nicht weiter ein Problem. Basis ist immer, dass man ein einzelnes Pixel setzen kann. Grafik an sich ist gar nicht so schwer. Interessant wird es, wenn es richtig schnell werden soll.
:
Bearbeitet durch User
Klingt bis jetzt eigentlich alles ganz logisch :P Karl H. schrieb: > die einfachere Variante ist es > natürlich bei anderen 'Anleihen' zu nehmen und sich zb ein Programm zu > nehmen, welches einen Windows-Font Buchstabe für Buchstabe entsprechend > aufrastert. :-) Kennst du ein solches Programm? Vielleicht auch eines, das Bilder in Arrays wandeln kann? Kann ich dann eigentlich per Software den Kontrast des Displays verändern? Ich hab irgendwo mal was gelesen, dass dann die einzelnen Punkte nicht so oft aktualisert werden müssten. Bleiben diese nicht bestehen bis sie gelöscht werden? wenn ich es richtig verstanden habe gebe ich ja mit einem Befehl gleich 8 Pixel weiter an das Display. Das heißt wenn ich eine Linie Zeichen will, welche von links nach rechts geht muss ich die oberen bzw unteren Pixel auch jedes mal mitsetzen obwohl ich dies vielleicht gar nicht ändern will?
@Frank91 Zur Ansteuerung von einfachen Grafikdisplays ist zu empfehlen: Manfred Schwabl-Schmitt: "AVR-Programmierung", Bd.2+3, Elektor-Verlag. Die sind zwar nicht ganz billig, aber damit habe ich mir in mühevoller Kleinarbeit ("try & error") die Grundlagen der Grafikprogrammierung mit AVR erarbeitet. Um das nicht wieder der Vergessenheit anheim fallen zu lassen, gibt's dazu von mir auch einen 110-seitigen Entwicklungsbericht ... (derzeitiger Stand, noch nicht veröffentlicht). Grüsse aus Berlin PSblnkd
Matthias F. schrieb: > Kennst du ein solches Programm? Vielleicht auch eines, das Bilder in > Arrays wandeln kann? Such nach 'Font Editor'. Ich hab meinen von hier aus dem Forum. Wenn ich mich recht erinnere hat Hagan Re da mal einen gepostet (danke, übrigens). Es gibt aber auch noch jede Menge anderer. > Kann ich dann eigentlich per Software den Kontrast des Displays > verändern? Da musst du im Datenblatt des Displays nachsehen, ob da etwas vorgesehen ist. > Ich hab irgendwo mal was gelesen, dass dann die einzelnen Punkte nicht > so oft aktualisert werden müssten. Bleiben diese nicht bestehen bis sie > gelöscht werden? Was hat das mit dem Kontrast zu tun? Natürlich bleiben die solange bestehen, bis sie überschrieben werden. Genau zu diesem Zweck hast du ja einen Controller und genau zu diesem Zweck hat der RAM mitgekriegt. Schön langsam muss ich mich allerdings schon fragen, wie ich deine Aussage aus dem Eröffnungsposting, nachdem du ... > Bis jetzt habe ich schon Dotmatrix Displays und auch TFT Touch > Displays von Electronic Assembly mit eigenen Bibliotheken realsiert. gemacht haben willst, verstehen soll. > wenn ich es richtig verstanden habe gebe ich ja mit einem Befehl gleich > 8 Pixel weiter an das Display. ja. > Das heißt wenn ich eine Linie Zeichen > will, welche von links nach rechts geht muss ich die oberen bzw unteren > Pixel auch jedes mal mitsetzen obwohl ich dies vielleicht gar nicht > ändern will? ja. Was glaubst du, warum ich in der Kurzbeschreibung der Pixel-Setz Funktion darüber gesprochen habe, dass man zuerst das Byte an der Pixelposition auslesen muss?
Karl H. schrieb: > Matthias F. schrieb: > >> Kennst du ein solches Programm? Vielleicht auch eines, das Bilder in >> Arrays wandeln kann? > > Such nach 'Font Editor'. > > Ich hab meinen von hier aus dem Forum. Wenn ich mich recht erinnere hat > Hagan Re da mal einen gepostet (danke, übrigens). Es gibt aber auch noch > jede Menge anderer. Ah, da ist ja der Thread Beitrag "glcd fontcreator aktuell" Aber wie gesagt: es gibt noch viele andere Font Editoren, die das können.
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.