Forum: Mikrocontroller und Digitale Elektronik Grundkurs Grafikprogrammierung


von Ben S. (theben)


Lesenswert?

Hallo Leutz!

Ich würde gern mit der Programmierung von Grafikdiplays anfangen, nur 
finde ich keine Tutorials oder Bücher die sich diereckt mit diesem Thema 
befassen.

Ich habe bis jetzt immer mit der AVR Familie programmiert und habe auch 
schon LCDs, wie im Toturial díeser Seite, angesteuert. Bis habe ich die 
AVRs nur im Assembler programmiert aber c-Erfahrungen habe ich auch.

Jetzt ist meine Frage: Wie programmiere ich ein Grafikdisplay?

Gibt es irgendwo ein Toturial oder ein Buch, das sich diereckt mit dem 
Thema befasst?

Kann ich ein Grafikdisplay überhaupt in C programmieren oder muss ich 
mir erstmal einen Wälzer mit c++ rein ziehen?

von Karl H. (kbuchegg)


Lesenswert?

B. S. schrieb:

> Jetzt ist meine Frage: Wie programmiere ich ein Grafikdisplay?

Das kommt drauf an, wo du einsteigen willst.

Im einfachsten Fall sieht die Sache für dein Programm so aus, dass es 
auf dem Display ein Pixel auf weiß/schwarz setzen kann. Mehr nicht. 
Alles andere muss dein Programm dann dadurch erzeugen, dass es gekonnt 
die richtigen Pixel setzt

> Gibt es irgendwo ein Toturial oder ein Buch, das sich diereckt mit dem
> Thema befasst?

Aufbauend auf dem einfachen Pixelsetzen sind alle Klassiker der 
Graphik-Programmierung geeignet. Da lernst und erfährst du dann alles 
was du über Grafik je wissen oder auch nicht wissen wolltest.

Aus meiner Lernzeit ist mir noch der Foley Van Dam in Erinnerung. 
Grafikprogrammierung von der Pieke auf. Zu seiner Zeit war es eine der 
Bibeln der Grafikprogrammierung.

Die beiden Bücher von David F. Rogers
"Mathematical Elements for Computer Graphics"
"Procedural Elements for Computer Graphics"
habe ich ebenfalls geliebt.
Ist der Foley van Dam eher auf dem theoretischen Pfad unterwegs und 
entwickelt die prinzipiellen Algorithmen und Verfahren mehr nebenbei, so 
ist insbesondere 'Proc. Elements' ein richtiges Praxisbuch mit dem 
Hauptaugenmerk auf Implementierung und der unbedingt notwendigen Theorie 
dazu mehr so nebenbei.

> Kann ich ein Grafikdisplay überhaupt in C programmieren

natürlich

> oder muss ich
> mir erstmal einen Wälzer mit c++ rein ziehen?

Alles was mit C++ programmierbar ist, ist auch mit C programmierbar 
(oder mit jeder beliebigen anderen Programmiersprache). Das liegt daran, 
dass sie alle turing-komplett sind. Und wenn das der Fall ist, hat ein 
schlauer Herr namens Alan Turing bewiesen, dann kann man damit alles 
überhaupt berechenbare auch tatsächlich berechnen. Die Methoden mit 
denen man arbeitet mögen variieren, aber in der prinzipiellen 
Leistungsfähigkeit sind sie alle gleichwertig, da turing-komplett.

von Floh (Gast)


Lesenswert?

B. S. schrieb:
> Jetzt ist meine Frage: Wie programmiere ich ein Grafikdisplay?

Hol dir ein Grafikdisplay, schlies es an und spiel ein bisschen damit 
rum. So lernt man es effektiv und spassig.
:-)

von Artur R. (artur2000)


Lesenswert?

> Jetzt ist meine Frage: Wie programmiere ich ein Grafikdisplay?

für C gibt es für die meisten Display fertige Funktionen. Du musst dann 
die Funktion verstehen und einsetzen. Das kann z.B. so aussehen

lcd_pos( 0, 0 ); //Position
lcd_text((u8*) string);//Gebe auf dem Display das String aus, String ist 
eine Art Varibale die einen Text beinhaltet, z.B Hallo

Das Display würde dann Hallo ausgeben.

Wenn du damit rumgespielt hast, kannst du dir die Funktionen genauer 
anschauen und versuchen zu verstehen was da gemacht wird.

von Ben S. (theben)


Lesenswert?

also setzt sich die Grafikdisplay Programmierung aus 2 Teilen zusammen, 
welche ich noch lernen muss:

Das Ansteuern der Pixelpunkte mit einem AVR?

Die eigentliche programmierung von Formen und Zeichen?


Gibt es Bücher auch in deutscher Sprache die sich mit diesem Thema 
befassen?

@Floh die hartware habe ich mir schon besorgt 
http://shop.myavr.de/index.php?sp=article.sp.php&artID=100064

@Artur R. wo gibt es solche biblioteken der funktionen?

von Michael R. (mexman) Benutzerseite


Lesenswert?

Hallo B. S.,

wenn ich das richtig verstehe, suchst Du eine fertige 
Bastelanleitung....

> Ich würde gern mit der Programmierung von Grafikdiplays anfangen, nur
> finde ich keine Tutorials oder Bücher die sich diereckt mit diesem Thema
> befassen.

Die besten Buecher um etwas zu verstehen, sind immer die Datenbuecher 
der Bauteile.
Alles andere ist Nachkochen nach Rezept, aber nicht unbedingt VERSTEHEN.


> Jetzt ist meine Frage: Wie programmiere ich ein Grafikdisplay?

So wie´s im Datenblatt steht.

> Kann ich ein Grafikdisplay überhaupt in C programmieren oder muss ich
> mir erstmal einen Wälzer mit c++ rein ziehen?

Man kann alles mit allem programmieren. Ob Du Deine SW in BASIC, C, 
C++,, Assembler programmierst, ist Dir ueberlassen.
Such DIr das aus, fuer das Du einen Assembler/Compiler/Debugger bekommst 
und das Du glaubst verstehen zu koennen.
Wenn Du hier nuch nach fertigen Anleitungen suchst, wirst Du enden wie 
so viele Nutzer, die irgendwo irgendwas abtippen und dann hier im Forum 
nach Hilfe rufen, weil sie beim kleinsten Fehler schon aufgeben, denn 
Sie verstehen nicht was sie tun!

Insofern wuerde ich erstmal klein anfangen und der Hinweis von Floh ist 
voellig richtig: So lernt man am besten!

Gruss und noch alles Gute fuer 2011

Michael

von spess53 (Gast)


Lesenswert?

Hi

Bei monochromen GLCDs mit eigenem Controller sind die Unterschiede zum 
Text-LCD nicht sehr gross: Ein Byte entspricht halt nicht mehr einem
Zeichen sonder 8 neben- oder übereinanderliegenden Pixeln.

MfG Spess

von Floh (Gast)


Lesenswert?

> Gibt es Bücher auch in deutscher Sprache die sich mit diesem Thema
> befassen?

> Das Ansteuern der Pixelpunkte mit einem AVR?
Das steht für gewöhnlich im Datenblatt des Displays.

> Die eigentliche programmierung von Formen und Zeichen?
Hier brauchste doch nur ein bisschen Fantasie, ich meine einen Punkt 
kannste ja zeichnen, für eine Gerade zeichnest du einfach mehrere 
Punkte, für ein 4-Eck 4 Geraden usw.
Fantasie ist hier gefragt, wie früher im Kindergarten (ich hab nur einen 
Stempel, wie verwüste ich die Wand am Schönsten).
:-)

von Karl H. (kbuchegg)


Lesenswert?

B. S. schrieb:
> also setzt sich die Grafikdisplay Programmierung aus 2 Teilen zusammen,
> welche ich noch lernen muss:
>
> Das Ansteuern der Pixelpunkte mit einem AVR?

Wie schon gesagt: Das hängt vom Display ab.
Es gibt natürlich auch Displays, deren Controller schon höhere 
'Primtiva' wie Linien, Kreise, Texte zur Verfügung stellen.
Aber kleinster gemeinsamer Nenner ist: Pixel setzen

Das gibt dir das Display vor, was es alles kann und wie es angesprochen 
werden will.

> Die eigentliche programmierung von Formen und Zeichen?

Das baut dann auf dem auf, was das Display zur Verfügung stellt. Ja.
So wie auf einem Text-LCD ein Menüsystem auf der Basisfunktion 'Text 
ausgeben' und diese wiederrum auf der Basisfunktion 'Einzelzeichen 
ausgeben' aufbaut.
Ein einzelnes Zeichen kann das LCD selbst hinmalen. Alles darüber 
hinausgehende muss dein Programm erledigen.

> Gibt es Bücher auch in deutscher Sprache die sich mit diesem Thema
> befassen?

Gibt es sicher auch.
Durchforste doch einfach mal Amazon oder durchforste das Web.

> @Artur R. wo gibt es solche biblioteken der funktionen?

Da die Lernkurve sowieso steil sein wird, solltest du einfach mal mit 
Google auf die Reise gehen. Beim Lesen kommen dir dann die nächsten 
Suchbegriffe unter. Einer der ersten wird zb 'Bresenham' sein. Und so 
führt dann eines zum anderen.

von Ben S. (theben)


Lesenswert?

ich möchte es ja richtig machen doch ich finde halt keinen anfang. ich 
hatte es mir so vorgestellt ein kleinens Beispielprogramm a la "Hallo 
Welt" zu bekommen und dann damit rum zu doktorn. sprich ein pixel hin 
und her setzen aber dazu brauch ich doch erstmal eine Bibliothek mit 
funktionen?

von Karl H. (kbuchegg)


Lesenswert?

B. S. schrieb:
> ich möchte es ja richtig machen doch ich finde halt keinen anfang. ich
> hatte es mir so vorgestellt ein kleinens Beispielprogramm a la "Hallo
> Welt" zu bekommen

Um Text auf einem grafischen LCD ausgeben zu können (ohne das das LCD 
das macht) musst du schon sehr firm in der Grafikprogrammierung sein! Da 
spielen dann schon viele Konzepte rein, eines davon ist zb das Konzept 
des Fonts.

Dein erstes Grafikprogramm wird sein:
   1 Pixel setzen wobei du bestimmen kannst, wo das Pixel hinsoll

dein nächstes:
   Pixel wieder löschen

nächstes Programm
vielleicht im Zusammenspiel mit dem ADC und 2 Poti, den Punkt über das 
LCD steuern. Wahlweise sollen gesetzte Punkte erhalten bleiben oder beim 
Bewegen wieder gelöscht werden

Dann wirst du mal eine Linie zeichen
Zuerst waagrecht, senkrecht. Dann mit Bresenhams Hilfe in jede beliebige 
Richtung.


etc. etc.

Und den 'Anfang finden'
Google ist dein Freund! Ich kann mir nicht vorstellen, dass sich mit 
Google nichts zum Thema Grundlagen Grafikprogrammierung finden lässt.


(Übrigens: man braucht nicht unbedingt ein grafisches LCD um damit 
anzufangen. Ein C Compiler auf dem PC, ein 2D-Array welches die Anzeige 
simuliert und geschickt gesetzte '*' als dunkle Pixel, reichen für die 
ersten Gehversuche vollständig aus)

von Karl H. (kbuchegg)


Lesenswert?

Ein Stichwort für Google ist zb 'Bresenham'.
Damit findest du sicher etwas.

Und dann schau dich auf der Site weiter um, ob der Autor noch mehr 
Einführungsartikel zum Thema Grafikprogrammierung bereitstellt.

von spess53 (Gast)


Lesenswert?

Hi

Warum wird hier immer auf den Pixeln herumgehackt? Es hat Jahre 
gedauert, bis ich das bei einem Grafikdisplay mal gebraucht habe. Ehe 
man 50 Pixel ausgerechnet hat, habe ich schon mein komplettes Display 
voll.

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

spess53 schrieb:
> Hi
>
> Warum wird hier immer auf den Pixeln herumgehackt?

Weil ich vom kleinsten gemeinsamen Nenner ausgehe.
Ich hab ihm weiter oben schon gesagt, dass es vom LCD abhängt, ob dessen 
Controller darüber hinaus höherwertige Primitiva zur Verfügung stellt.
Wenn er das nicht tut (ist eine Kaufentscheidung) dann muss man bei 
Pixeln anfangen.
Macht ja auch Spass.

von Daniel Walter (Gast)


Lesenswert?

An Büchern würde ich mich Karl-Heinz Buchegger anschliessen:
Computer Graphics: Principles and Practice in C.

Zum Thema Displays selber:
Du Programmierst ja nicht das Display sondern den Controller 
(klugscheiss). Der Controller steuert das eigentliche Display an.
Es gibt im Prinzip drei Arten von Displays zu kaufen:
- Controllerlose (da musst du einen externen Display-Controller 
dranhängen),

- mit integriertem Controller (ist schon einer drauf), die sind dann von 
der Ansteuerung ähnlich wie der HD44780 mit dem du vermutlich bei deinem 
Textdisplay gearbeitet hast, also z.b. 6/8 Datenleitungen und ein paar 
Steuerleitungen zum schreiben ins Grafik-RAM

- und welche auf denen noch ein extra µC sitzt, der schon die ganzen 
Grafikroutinen drin hat und nach aussen Z.b. RS232 spricht. dem sagst du 
dann nur noch KREIS(X, Y, R). (Sehr teuer und langweilig :-) )

Was für dich am Anfang m.E. wichtig ist, ist dass du dir einen gut 
dokumentierten Grafikcontroller rausuchst. Je verbreiteter der 
Controller, um so eher findest du im Netz Hilfe...

Bekannte Controller sind z.b. der S1D13700 von Epson oder der T6963.

von Ben S. (theben)


Lesenswert?

also ist jedes display anders anzusteuern? Also muss ich bei jedem neuen 
projekt meine Funktionen neu schreiben?

von Karl H. (kbuchegg)


Lesenswert?

B. S. schrieb:
> also ist jedes display anders anzusteuern? Also muss ich bei jedem neuen
> projekt meine Funktionen neu schreiben?

:-)
Die Basisfunktion.


Auf einem Text-LCD musst du ja auch nicht alles neu machen, nur weil da 
jetzt ein anderer Controller drauf ist.
Die Ausgabe eines Strings wird immer so aussehen
1
void lcd_puts( const char* text )
2
{
3
  while( *text )
4
    lcd_putc( *text++ );
5
}
egal welches Text-LCD du hast. Denn: Die Funktion 'String ausgeben' 
stützt sich auf die Funktion 'Zeichen ausgeben'. Und nur die ist vom 
LCD-Controller abhängig.
Und eine Funktion zur Zahlenausgabe
1
void lcd_puti( int i )
2
{
3
  char buff[10];
4
  itoa( buff, i, 10 );
5
  lcd_puts( buff );
6
}
ist aus genau dem gleichen Grunde davon nicht betroffen.
Von deinen LCD-Funktionen müssen nur die grundlegenden Basisfunktionen 
angepasst werden. Hast du die erst einmal, dann funktionieren alle 
anderen darauf aufbauenden Funktionen wieder wie gehabt.

Genau das ist ja das Prinzip, das du vom PC auch als Grafik-Treiber 
kennst. Der Treiber stellt die grundlegenden Funktionen (wie Pixel 
setzen, Linie malen, Rechteck ausfüllen) zur Verfügung und Windows 
benutzt die dann um damit Fenster zu malen.

In gleichen Masse ist natürlich eine Funktion
1
void PaintHorizontal( int xStart, int yStart, int xEnd )
2
{
3
  int i;
4
  for( i = xStart; i < xEnd; ++i )
5
    PaintPixel( i, yStart );
6
}
zunächst mal vom GLCD unabhängig.
Dass man diese Funktion eventuell dann doch ans GLCD anpasst, weil die 
spezifische interne GLCD Struktur Optimierungen ermöglicht, steht auf 
einem anderen Blatt.

von Daniel Walter (Gast)


Lesenswert?

Bis ich meine Antwort geschrieben hab, war der Thread schon explodiert 
:-)
Dein Problem ist also eher die Grafikprogrammierung an sich, OK.

Jeder Controller ist ein bisschen anders anzusteuern. Deine SW baust du 
also am besten so, dass die Grafikroutinen vom Controller abstrahieren. 
Also eine Zeichenschicht für Linien, Kreise,... welche dann funktionen 
Aufruft, die den Controller ansteuern.

Also irgendwie so:

GAL_DrawLine(X, Y, len)
{
 .....
 HW_PutPixel(x, y)
 ...
}

HW_PutPixel(x, y)
{
 ....
 CONTROLLER BIT-BANGING
}

von Olaf (Gast)


Lesenswert?

> Das Ansteuern der Pixelpunkte mit einem AVR?
>
> Die eigentliche programmierung von Formen und Zeichen?

Das ist die einfache Moeglichkeit. Sie hat den Nachteil das sie nicht 
immer den effizientesten Ansatz bietet was die Geschwindigkeit angeht. 
Solange man aber keine Video kucken moechte reicht es erstmal.

Dazu ein Beispiel:
Es bietet sich an in seiner set_pixel Funktion zu kontrollieren ob man 
nicht ausserhalb seines Bildschirms rummalt. Das kann naemlich zu 
Zeigerfehlern fuehren.
Wenn du dann in deinen hoeheren Funktionen eine Funktion hast welche 
eine Linie malt dann wuerde es eigentlich reichen zu kontrollieren ob 
der erste und der letzte Punkt auf dem Bildschirm liegt.

Ich wuerde dir aber trotzdem empfehlen erstmal eine Funktion zu 
schreiben die nur ein beliebiges Pixel setzen kann und alles andere 
darauf aufzubauen. Das hat dann auch den Vorteil das du mal ein anderes 
Display nutzen kannst indem du nur diese eine Funktion austauscht.

> Welt" zu bekommen und dann damit rum zu doktorn. sprich ein pixel hin
> und her setzen aber dazu brauch ich doch erstmal eine Bibliothek mit
> funktionen?

Deine Vorstellungen in allen Ehren, aber so geht es nicht weil jedes 
Display anders angesprochen wird.

> Datenleitungen und ein paar
> Steuerleitungen zum schreiben ins Grafik-RAM

Und wenn man dann merkt das benachbarte Bytes im Grafik-Ram keinesfalls 
immer benachbarte Pixel auf dem Bildschirm sind wird es interessant. :)


> Was für dich am Anfang m.E. wichtig ist, ist dass du dir einen gut
> dokumentierten Grafikcontroller rausuchst. Je verbreiteter der
> Controller, um so eher findest du im Netz Hilfe

Wichtig ist vor allem das man einfach das Datenblatt des Controllers 
auch mal liesst und nicht immer glaubt bei anderen abschreiben zu 
muessen!

> also ist jedes display anders anzusteuern?

Ja. Du kannst nicht einfach dein LCD austauschen und es wird laufen. 
Andererseits sind die Unterschiede nicht so extrem gross. Wenn man 
einmal ein Display am laufen hat dann kann man beim zweiten bestimmt 80% 
des Codes weiterverwenden und muss nur hier und da etwas aenderen.

> Also muss ich bei jedem neuen
> projekt meine Funktionen neu schreiben?

Es haengt von deinen Faehigkeiten ab. Ich habe z.B verschiedenste 
Basislibaries welche alle eine set_pixel Funktion, eine clrscr Funktion 
(Geschwindigkeitsgewinn), eine init-Funktion und ein paar defines 
(MAX_X, MAX_Y, BLACK, WHITE) zur Verfuegung stellen. Ich kann dann 
einfach durch aenderen eines defines ein gaenzlich anderes LCD anstecken 
und es funktioniert.


Olaf

von Andreas H. (andy78)


Angehängte Dateien:

Lesenswert?

Hallo

Muß jetzt auch meinen Senf dazugeben weil ich auch gerade ein 
Anzeigesystem für KFZ/Maritim Bereich baue basierend auf den LEDSEE 
320x240 echt super ding und rasend schnell im vergleich vom letzten 
pollin Touch display mit L irgendwas Controller da konnte man zuschauen 
wie ein Bild sich aufbaut bei diesen ist es nicht mit dem AUge Sürbar 
einschalten 320x240 Bild ist da.

Habe auch ein Analog Tacho und tankanzeige nachgebildet den Zeiger 
setzte ich und merke mir die Positionen (Linien/Zeigernadel)wen der 
Zeiger weiterwandert wird anschließend der alte Zeiger mit den alten 
positionen gelöscht und immer so weiter so sieht es dann auch aus wie im 
KFZ.
Großen Sinn macht es wenn das Display verschiedene Grafik Ebenen hat ich 
benutze 3Layer im Layer3 habe ich das Bild vom Tacho und Tankanzeige Im 
Layer 2 laufen die Zeiger und Zahlen /Text und im Layer 1 gebe ich 
Warnungen raus so spare ich mir das Löschen und neuzeichnen des 
gesammten Displays Das Hintergrundbild lade ich einmal und fertig.


Text und Zahlen weiß ich die breite und lösche deie gesammte feld und 
schreibe dann die neuen werte.

Alle Funktionen die ich benutze sind ja alle schon fix und fertig hier 
zu haben ich benutze die SED1335 Lib da ist die init Graphic (Linie 
Rechteck elipse kreis Bild aus Array usw)
Ich hatte nur das Problem mit den 8bit breiten d.h ich eine Font nicht 
direkt auf pixel 3 setzten sondern nur um ein vielfaches von 8 0,8,16,24 
usw.

Da habe ich mir eine Routine gebastelt mit hilfe hier im Forum die mir 
das pixelgebnaue stzten von Bilddateien/FOnts aus dem Array erlaubt.

ALs Font und Zeichen generator habe ich mir den BITFont Creator gekauft 
die Investition hat sich gelohnt ich kann für jeden Controller mir ein 
Array feld oder ganz und gar Fonts mit offset breite index usw.
damit ist ein einfacher zugriff auf die fonst möglich über 
printf(text,"Bla bla %d\2,"wert) möglich.

von 900ss (900ss)


Lesenswert?

Andreas Herrmann schrieb:
> meinen Senf

Ist zwar Offtopic, aber sieht trotzdem chic aus. Hast du das Display 
direkt in China bestellt?

Andreas Herrmann schrieb:
> ich benutze die SED1335 Lib

Was für eine Lib ist das? Hab Interesse.

von Andreas H. (andy78)


Angehängte Dateien:

Lesenswert?

Hallo

Ja direkt bei Ledsee und per Paypal bezahlt.

Aber bitte keine Angst bekommen.

Email Antworten darf man nicht erwarten habe zig mails geschrieben um 
mehr auskunft über das Display zu bekommen.

Man bekommt automatisch eine Mail nach der Bestellung und wenn die Ware 
versand worden ist.

Bei mir hat der ganze vorgang 3 Wochen gedauert aber dann wars da und 
gut verpackt und funktioniert.

Hier die Lib

Ich habe noch anpasungen in den defs nach Datenbaltt des SEDS gemacht 
weil ich alles auf grafik mit 3 layern mache.

Gruß

ANdy

von 900ss (900ss)


Lesenswert?

Andreas Herrmann schrieb:
> Hier die Lib

Danke, die hatte ich auch schon gefunden. Da muß man das meiste ja noch 
selber machen. Also die Basics sind drin.

von Andreas H. (andy78)


Lesenswert?

Hallo


Aber mit den Basics kann man gut arbeiten was willst du mehr???
Die Ports definieren die defs richtig setzten wie man es will und schon 
hat man alles.

Gruß

Andy

von 900ss (900ss)


Lesenswert?

Andreas Herrmann schrieb:
> was willst du mehr

Flächen füllen z.B. also mehr "intelligente" Funktionen. Highlight wäre 
natürlich 'ne Fensterverwaltung :-)

von Spess53 (Gast)


Lesenswert?

Hi

>Aber mit den Basics kann man gut arbeiten was willst du mehr???
>Die Ports definieren die defs richtig setzten wie man es will und schon
>hat man alles.

Gerechter Weise sollte man aber sagen, das der SED1335 schon wesentlich 
mehr als gebräuchliche Controller bietet. Schon Befehle zum Pixelsetzen/ 
-löschen haben viele Controller nicht. Von Layern ganz zu schweigen. Da 
werden viele Sachen, die auf einem anderen Controllern Krampf sind zum 
Kinderspiel.

MfG Spess

von Arc N. (arc)


Lesenswert?

900ss D. schrieb:
> Andreas Herrmann schrieb:
>> was willst du mehr
>
> Flächen füllen z.B. also mehr "intelligente" Funktionen. Highlight wäre
> natürlich 'ne Fensterverwaltung :-)

Gibt's fast vollständig bei der "Konkurrenz"...Microchip Graphics 
Library
http://www.youtube.com/watch?v=Y3JdgkiPGpU (ab 1:40)

von Jobst M. (jobstens-de)


Lesenswert?

@ B. S. (theben)

Zunächst einmal sollte man erwähnen, daß es intelligente und nicht 
intelligente Displays gibt.

Ein intelligentes Display kann z.B. selber einen Strich oder Kreis 
ziehen oder Text schreiben.

Unintelligente Displays (wie z.B. die DOGMs) können nur Punkte setzen - 
und die nicht mal einzeln.

Bei den dummen Displays musst Du also alles selber machen und dann ein 
gesamtes Bild zum Display übertragen. Dazu musst Du also erst mal ein 
Bild im RAM erzeugen. Dazu benötigst Du eine Funktion, mit der Du Punkte 
in diesem Bild setzen kannst. Dann baust Du Dir eine Funktion, mit der 
Du mittels der Punkte-Funktion eine Linie zeichnen kannst. Dann ein 
Kreis.
Dann überlegst Du Dir, wie Du Buchstaben am besten ablegst und ins Bild 
kopieren kannst. Dann ganze Texte.

Und wenn Du Dein Bild fertig gemalt hast, überträgst Du es auf das 
Display. Dann wird der Speicherbereich gelöscht und Du fängst von vorne 
an. (Oder Du radierst in dem Bild herum etc. whatever)

Ich habe für ein Projekt mal pro Pixel ein ganzes Byte verbraucht.
Wenn das Byte != 0, dann wurde ein Pixel gemalt. So konnte ich mehrere 
Layer einfach durch ver-UND-ung wieder löschen, während andere stehen 
blieben.


Gruß

Jobst

von Andreas H. (andy78)


Lesenswert?

Hallo

Also ich habe mir auch vorher gedanken gemacht ob ich mir ein fertiges 
Display Board mit USB oder RS232 oder SPI ansteuerung kaufe aber wo ich 
die Preise gesehen habe bin ich ohnmächtig geworden.
Und ich muß sagen selbst ist der Mann oder die Frau. Alles andere kann 
jeder mit den PC das Display so fertig malen und dann in das board 
schieben.Ne das ist nichts für mich. Und auserdem lernt man nichts 
dabei.

Gruß

Andy

von _BT (Gast)


Lesenswert?

für das Grafikdisplay von myAVR gibts auch fertige und offene 
Bibliotheken... zum Beispiel hier: 
http://myavr.info/myForum/viewtopic.php?t=2832

cu BT

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.