Forum: Mikrocontroller und Digitale Elektronik Grafikdisplay ansteuern wg12864b Controller 7108


von Matthias F. (frank91)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
von spess53 (Gast)


Lesenswert?

Hi

>Dieses hat einen 7108 als Controller verbaut.

Das ist der simpelste Grafikcontroller den es überhaupt gibt. Ist auch 
unter KS0108B bekannt.

MfG Spess

von Matthias F. (frank91)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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
von Matthias F. (frank91)


Lesenswert?

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?

von PSblnkd (Gast)


Lesenswert?

@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

von Karl H. (kbuchegg)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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