Forum: Mikrocontroller und Digitale Elektronik Wie Display beschalten und Temperatur ausgeben?


von Tobias N. (silberkristall)


Lesenswert?

Hallo,

ich habe folgendes Display:

http://www.pollin.de/shop/dt/NTc1OTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_TG12864B_03.html

Es ist das erste mal das ich etwas mit einem Display mache. I/O 
Schaltungen mittels eines ATMega8 habe ich schon erfolgreich gebaut.

Jetzt möchte ich mich mit einem Display versuchen.

Ich habe wie erwähnt das oben genannte Display, der Controller ist ein 
KS0108. Die beschaltung selber dürfte ich eventuell noch hinbekommen. 
Für den ersten Test habe ich mir gedacht das ich mittels eines DS18S20 
die Temperatur messe und diese einfach auf dem Display ausgebe.

Den DS18S20 wollte ich extern beschalten, wenn ich das richtig 
verstanden habe wird GND an GND angeschlossen, VDD an 5V+ und die 
Datenleitung mittels 4,7k an die VDD leitung und ein einen freien PIN 
des ATMega8, ok, soweit so gut, aber wie geht es dann weiter?

Nun hört mein Verständis erstmal auf.

Je nach Display-Controller muss man ja eine andere LIB etc nehmen. Ich 
würde mich freuen wenn mir da ein paar experten Informationen zu geben 
würden.

Danke euch schonmal.

P.S.: Interessant wäre noch zu wissen wie man dann vll. so eine Grafik 
wie auf dem Display in dem Link zu sehen auf das Display bekommt, aber 
erstmal reicht es mir wenn mir das Display die Temperatur ausgibt.

von Eumel (Gast)


Lesenswert?

Tobias N. schrieb:
> Je nach Display-Controller muss man ja eine andere LIB etc nehmen. Ich
> würde mich freuen wenn mir da ein paar experten Informationen zu geben
> würden.

Nö, du musst nur das Datenbaltt lesen und das Display entsprechend 
ansteuern. Ist nicht schwer.

von Eumel (Gast)


Lesenswert?

Tobias N. schrieb:
> P.S.: Interessant wäre noch zu wissen wie man dann vll. so eine Grafik
> wie auf dem Display in dem Link zu sehen auf das Display bekommt, aber
> erstmal reicht es mir wenn mir das Display die Temperatur ausgibt.

Na ja, du "sagst" dem Display halt welche Pixel Blau sein sollen und 
welche weißt. Manchmal macht es sinn sich entsprechende primitive 
Grafikfunktionen zu basteln und die dann zu benutzen.

von Cyblord -. (cyblord)


Lesenswert?

Du bist echt putzig.

Was erwartest du jetzt? Das DS18B20 hat ein Datenblatt, da steht drinn 
wie du das Ding auslesen kannst. Du kannst auch eine fertige 1Wire Lib 
oder gleich eine fertige DS18B20 Lib nehmen.

Das Display hat ebenfalls ein Datenblatt (besser der Controller des 
Displays) da steht drinn wie du das Display ansteuerst und da drauf was 
anzeigst. Da musst du dich einlesen und das implementieren.
Oder du suchst auch dafür ne lib.

Wenn du zu irgendwas eine Lib hast, dann musst du diese lib richtig 
benutzen, dazu hat diese lib wahrscheinlich eine Doku. LESEN!
Allerdings schadet es auch nicht wenn du diese Bauteile ohne lib 
ansteuerst und dir deshalb klar wird, was wie funktioniert.

Allgemein ist dein Anliegen nicht gerade einfach. Da du, wie aus deinem 
Post zu ersehen ist, absolut null Ahnung hast, kannst du das nicht 
umsetzen. Fange kleiner an. Und nimm wenigstens ein Text Display.

gruß cyblord

von Karl H. (kbuchegg)


Lesenswert?

Und fang mit der Ausgabe an.
Den DS1820 lässt du erst mal links liegen und siehst zu, dass du erst 
mal Texte bzw. Variablen ausgeben kannst.
Wenn dann diese Zahlenausgabe in weiterer Folge ein Zahlenwert ist, den 
du vom DS1820 bekommst, dann ist das ok. Aber das ist nicht deine erste 
Anlaufstelle.
Immer die Aufgaben aufteilen und in einer sinnvollen Reihenfolge 
bearbeiten. Sinnvoll ist praktisch immer, sich erst mal darum zu 
kümmern, dass man irgendwo eine Ausgabefläche hat, damit man möglichst 
schnell aus dem Zustand "Stochern im Nebel" rauskommt.

von Tobias N. (silberkristall)


Lesenswert?

ok,

also erstmal zusehen das ich ein "Hallo Welt" auf das Display bekomme, 
das richtig beschalte etc. pp und mich dann an alles weitere mache, 
richtig?

Bevor ich anfange zu löten gehe ich aber davon aus das ich vorab nen 
Schaltplan posten kann um nochmals anzufragen ob/inwieweit das so ok 
ist, oder?

von Eumel (Gast)


Lesenswert?

Wieso nimmst du eigentlich gleich ein graphisches Display? Das ist 
wesentlich schwieriger für einen Anfänger als ein normales Textdisplay 
(HD44780)

von Tobias N. (silberkristall)


Lesenswert?

Ich denke hiermit bin ich gut beholfen, oder?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

von Wolfgang (Gast)


Lesenswert?

Tobias N. schrieb:
> Ich würde mich freuen wenn mir da ein paar experten Informationen zu
> geben würden.

Wie die Ansteuerung funktioniert, steht im Datenblatt
http://download.maritex.com.pl/pdfs/op/TG12864B-03.pdf

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:
> Ich denke hiermit bin ich gut beholfen, oder?
>
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

Nicht für dein Grfaik-LCD.

Aber grundsätzlich wäre ein reines Textdisplay einfacger - und dafür ist 
dann auch dieses Tutorial.

von Tobias N. (silberkristall)


Lesenswert?

ok, also ich werde mich erstmal um die beschaltung und die 
initialisierung kümmern, danach geht das weiter das ist erstmal 
"irgendwas" und danach "text" auf das display bekomme und dann weiter 
testen.

Aber ich habe da noch eine im moment weiter ferne aber mal informative 
frage:

Wäre es möglich einen ATMega8 mit dem Display zu verbinden und diesen 
dann als "Master" setzen und dann weitere X beliebige ATMega8 an 
verschiedenen Orten mit diesem komunizieren zu lassen? Also diese senden 
dem ATMega8 am Display etwas zu und der zeigt dann wiederrum was 
grafischen auf dem Display an!?

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:

> Wäre es möglich einen ATMega8 mit dem Display zu verbinden und diesen
> dann als "Master" setzen und dann weitere X beliebige ATMega8 an
> verschiedenen Orten mit diesem komunizieren zu lassen? Also diese senden
> dem ATMega8 am Display etwas zu und der zeigt dann wiederrum was
> grafischen auf dem Display an!?

Sicher ist das möglich.
Mit einer kleinen Abwandlung ist das sogar ziemlich einfach: Die anderen 
senden nicht einfach drauflos, sondern der Master fragt reihum seine 
Slaves: Hast du was?

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:

> Wäre es möglich einen ATMega8 mit dem Display zu verbinden und diesen
> dann als "Master" setzen und dann weitere X beliebige ATMega8 an
> verschiedenen Orten mit diesem komunizieren zu lassen? Also diese senden
> dem ATMega8 am Display etwas zu und der zeigt dann wiederrum was
> grafischen auf dem Display an!?

Sicher ist das möglich.
Mit einer kleinen Abwandlung ist das sogar ziemlich einfach: Die anderen 
senden nicht einfach drauflos, sondern der Master fragt reihum seine 
Slaves: Hast du was für mich?

Aber du träumst jetzt schon von Schritt 398. Erst mal kommt Schritt 1.

von Walter (Gast)


Lesenswert?

Tobias N. schrieb:
> ok, also ich werde mich erstmal um die beschaltung und die
> initialisierung kümmern, danach geht das weiter das ist erstmal
> "irgendwas" und danach "text" auf das display bekomme und dann weiter
> testen.

an einem Grafikdisplay wirst du als Anfänger verzweifeln,
warum hörst du nicht auf die Ratschläge und nimmst erst Mal ein 
Text-Display!

von Eumel (Gast)


Lesenswert?

Beitrag "Standheizung selbstbau, einige Fragen"

Ist auch von Tobias. Scheint ein allgemeines Problem bei ihm zu sein.

von Cyblord -. (cyblord)


Lesenswert?

Eumel schrieb:
> Beitrag "Standheizung selbstbau, einige Fragen"
>
> Ist auch von Tobias. Scheint ein allgemeines Problem bei ihm zu sein.

Der is ja auch "Car-Hifi-Freak". Sowas macht die Birne matschig ;-)

von Eumel (Gast)


Lesenswert?

Um sich ne 17000 Euro teure Anlage auf Kredit in seine Karre bauen zu 
lassen muss die auch schon vorher matschig gewesen sein.

von Cyblord -. (cyblord)


Lesenswert?

Eumel schrieb:
> Um sich ne 17000 Euro teure Anlage auf Kredit in seine Karre bauen zu
> lassen muss die auch schon vorher matschig gewesen sein.

Ja gut, die Frage ist, in welche Richtung hier die Kausalität läuft.

von Tobias N. (silberkristall)


Lesenswert?

Hi,

ich habe das Displa Gestern noch angeschlossen aber es passiert nichts. 
Also ich rede jetzt nicht von einer ausgabe oder sowas aber weder die 
LED beleuchtung noch das Displa Selbst schaltet sich ein.

Funktioniert das erst wenn alles angeschlossen ist oder hätte das 
Display und die Hintergrundbeleuchtung schon angehen müssen??

von Michael (Gast)


Lesenswert?

Tobias N. schrieb:
> ich habe das Displa Gestern noch angeschlossen aber es passiert nichts.

Was hast du denn wo angeschlossen, um z.B. die Beleuchtung zu 
aktivieren?

von skyperhh (Gast)


Lesenswert?

Pin 42 ist nicht angeschlossen...

Nee, im Ernst...

1. Ohne Schaltplan wirst du keine Hilfe bekommen zu der Frage, warum 
geht die Hintergrundbeleichtung nicht... gut wäre noch ein Foto dazu, um 
evtl. "grobe" Fehler zu finden

2. Ohne Initalisierung des Displays wird dieses entweder nichts 
anzeigen, oder vielleicht auch irgendwas zufälliges ...

Ich würde erstmal klein anfangen, blinkende LED usw., bevor ich mich an 
Deiner Stelle auf ein fette Grafikdisplay stürzen würde...

von Tobias N. (silberkristall)


Lesenswert?

wie im Datenblatt:

Background LED + an 5 V mit 100 Ohm vorwiderstand, Background LED GND an 
GND.

VSS an GND
VDD an 5V+

Kontrast an GND

Mehr habe ich erstmal nicht angeschlossen.

von skyperhh (Gast)


Lesenswert?

Wie kommst Du auf die 100 Ohm ?

Tobias N. schrieb:
> wie im Datenblatt:
>
> Background LED + an 5 V mit 100 Ohm vorwiderstand, Background LED GND an
> GND.

von skyperhh (Gast)


Lesenswert?

Sehe im Datenblatt keinen "Kontrast-Pin" ... aber es gibt eine 
Beschaltung mit einem Poti zur Kontrastregelung... vielleicht solltest 
Du Dir die mal anschauen!

So wie ich das im Datenblatt sehe, steht oben eine Spannung für das 
Backlight ... gesehen? Bzw. überlegt, was das im Zusammenhang mit deinen 
Widerstand bedeutet?

von Tobias N. (silberkristall)


Lesenswert?

ja habe ich.

Ich Datenblatt ist V0/VO für Kontrast.

Also ich hole die Spannung von einem 7805er wenn ich nur den LED 
beleuchtung anschliesse passiert nichts. nach dem 7805 habe ich noch 
eine LED um zu sehen ob die Spannung auch da ist.

Komisch ist, sobald ich VSS und VDD vom display beschalte geht die LED 
aus, als ob keine Spannung mehr da wäre, schliesse ich nur die LED 
beleuchtung an leuchtet diese weiter hin.

Ist VSS und VDD vielleicht verpolt?

DIe Spannung für die LED beleuchtung, 5V steht auch auf der Platine des 
Displays.

von Walter S. (avatar)


Lesenswert?

Tobias N. schrieb:
> Ist VSS und VDD vielleicht verpolt?

woher soll ich das wissen?

von Klaus W. (mfgkw)


Lesenswert?

Tobias N. schrieb:
> Also ich hole die Spannung von einem 7805er wenn ich nur den LED
> beleuchtung anschliesse passiert nichts. nach dem 7805 habe ich noch
> eine LED um zu sehen ob die Spannung auch da ist.

Brauchst du nicht auch noch 9 V für den Kontrast?

Und vor allem: wieso liest du nicht endlich die Datenblätter? Sollen wir 
das machen und dir die Passagen vorlesen?

von Klaus W. (mfgkw)


Lesenswert?

Walter S. schrieb:
> Tobias N. schrieb:
>> Ist VSS und VDD vielleicht verpolt?
>
> woher soll ich das wissen?

Schau doch ins DB und sag ihm, was drin steht :-)

von skyperhh (Gast)


Lesenswert?

Die 9V kommen vom Diplay für die Kontrastregelung, im Datenblatt steht 
auch nicht, das mann Vee mit Vss verbinden soll... evtl. liegt da der 
Fehler, bzw. vielleicht hat das, dass Display schon gekillt... denn wenn 
deine 5V Kontroll LED für die Versorgungsspannung ausgeht, dann hast Du 
einen Kurzschluss gefunden :-).

von Michael (Gast)


Lesenswert?

Tobias N. schrieb:
> Mehr habe ich erstmal nicht angeschlossen.
Wenn du überhaupt etwas sehen möchtest, lies mal im DS über die Funktion 
des RST Signals.

von Tobias N. (silberkristall)


Lesenswert?

So, von der Arbeit zuhause als nochmals ans Display, es wäre toll wenn 
mir da jemand nochmal kurz was zur beschaltung sagen könnte. Ich 
beschalte das Display also nun nochmal neu,

Laut Datenblatt:

VSS = 0V
VDD = 5V
V0 (contrast) = -4,8V
D/I = H/L
R/W = H/L
E = H/L
DB0 - DB7 = H/L
CS1 = H/L
CS2= H/L
RST = H/L
VEE = -14,5V
LED- = 0V
LED+ = 5V

Um nun erstmal das Display zum "leuchten" zu bringen, also um 
"irgendetwas" zu sehen dachte ich an folgende Beschaltung:

VSS an GND
VDD an 5V vom 7805
V0 = GND
RST an GND
VEE an GND
LED- an GND
LED+ an 5V vom 7805

Gehe ich somit richtig der annahme das ich dann erstmal "irgendwas" 
sehen werde?

Weitergehend dachte ich dann an DB0 - DB7 an die PINs PB0 - PB7 
anzuschliessen.

Wäre das so ok oder doch anders beschalten?

Danke euch schonmal.

von Marti (Gast)


Lesenswert?

Tobias N. schrieb:
> Gehe ich somit richtig der annahme das ich dann erstmal "irgendwas"
> sehen werde?

Nein. Ohne Initialisierung siehst du nur die Hintergrundbeleuchtung 
leuchten. Sonst nix.

von Tobias N. (silberkristall)


Lesenswert?

ja soweit bin ich jetzt also "ohne" chip leuchtet zumindestens schonmal 
die Beleuchtung, das war ja gestern auch noch nicht der fall. jetzt geht 
es eigentlich an den Code, richtig?

von Eumel (Gast)


Lesenswert?

Ja, hast du dir denn mal das Datenblatt angeschaut? Da steht GENAU drin 
wie man das Display ansteuert. Hälst du dich an diese Anleitung wird 
nichts schief gehen.

von Tobias N. (silberkristall)


Lesenswert?

ich bin noch am datenleitungen verlöten, also led, vcc usw ist schon 
dran, nur noch die DB0 - DB7 dann werde ich mich mal daran machen.

von Tobias N. (silberkristall)


Angehängte Dateien:

Lesenswert?

So sieht das ganze dann jetzt aus. Das ganze dient nur als Testplatine. 
Dann würde ich sagen geht das ganze dann mal jetzt an den Code. Also, 
lesen, lesen und lesen. :)

von Tobias N. (silberkristall)


Lesenswert?

Hiermit sollte ich ja auch noch gut beholfen sein, oder?

http://www.mikrocontroller.net/articles/KS0108_Library

und

Beitrag "KS0108 GLCD Routinen"

von Tobias N. (silberkristall)


Lesenswert?

egal was ich tue und versuche, ich bekomme nichtmals einen punkt auf das 
Display :(

von spess53 (Gast)


Lesenswert?

Hi

>egal was ich tue und versuche, ich bekomme nichtmals einen punkt auf das
>Display :(

Wundert mich bei deinem Drahtverhau nicht wirklich. Hast du eigentlich 
einen Vorwiderstand an der Beleuchtung oder betreibst du die mit 
'Konstantspannung'?

MfG Spess

von Tobias N. (silberkristall)


Lesenswert?

100Ohm habe ich vorgeschaltet.

Naja, aus dem Datenblatt werde ich nicht wirklich schlau.

Woran sehe ich ob das Display initialisiert ist?

Dann mit High und Low arbeiten, ok, aber die "routinen" brauche ich 
nicht wirklich dafür, oder?

Aber selbst wenn ich die Routinen nutze und die Ports anpasse kommt auch 
nichts. Überall steht R/W wird in den Routinen nicht genutzt in den 
Routinen wiederrum wird R/W aber auf High gesetzt, also irgendwie ist 
das alles nur verwirrend.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Vee würd ich erstmal nicht  auf GND legen, das ist vermutlich die 
negative Hilfsspannung die dir das Display freundlicherweise liefert! 
Poti zwischen VEE und GND, und den Schleifer an V0 (contrast)

von Tobias N. (silberkristall)


Lesenswert?

ich wäre glücklich wenn ich überhaupt nur mal einen punkt sehen würde. 
aber es passiert ja mal rein garnichts. also displays sind doof. -.- im 
programmierboard passiert auf jedenfall was denn die leds blinken machen 
tuen etc. also wenn der chip geflasht ist.

von Stephan (Gast)


Lesenswert?

Tobias N. schrieb:
> ich wäre glücklich wenn ich überhaupt nur mal einen punkt sehen würde.
> aber es passiert ja mal rein garnichts. also displays sind doof.

deswegen solltest Du ja als Anfänger ein Textdisplay nehmen.
Aber es gibt immer wieder Leute die wollen 400m Hürden laufen und können 
nicht mal krabbeln.

von Tobias N. (silberkristall)


Lesenswert?

also wenn ich kontrast voll auf VEE lege, dann ich das ganze display 
ausgefüllt, ist der kontrast also "unumgänglich" ? falls ja dann muss 
ich mir gleich noch ein poti besorgen.

kann es daran liegen das ich nichts gesehen habe oder klappt das auch 
wenn ich den kontrast wie gesagt voll auf VEE, also auf die -14,5V lege?

Halt alles erstmal zum Test. Bei der "endgültigen" sache dann werde ich 
ja ein poti verbauen aber erstmal zum probieren etc. kann man da eine 
"notlösung" machen?

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:
> also wenn ich kontrast voll auf VEE lege, dann ich das ganze display
> ausgefüllt, ist der kontrast also "unumgänglich" ?

Dann hast du den Kontrast soweit aufgedreht, dass du vor lauter 
schwarzer Blöcke nichts mehr siehst.

> falls ja dann muss
> ich mir gleich noch ein poti besorgen.
Das brauchst du sowieso.
Die Kontrastspannung muss einstellbar sein. Denn welche Einstellung du 
brauchst hängt unter anderem auch davon ab, in welchem Winkel du auf das 
Display schaust.
Wenn es eine Einstellung für alles gäbe, dann hätte der Hersteller des 
LCD das schon auf der Platine vorverdrahtet.

> kann es daran liegen das ich nichts gesehen habe

Den Kontrast kannst du erst dann vernünftig einstellen, wenn du das 
erste mal etwas sinnvolles auf dem LCD ausgegeben hast. Erst dann kannst 
du (zb mit einem Buchstaben) den Kontrast so einstellen, dass der in 
sattem schwarz auf hellem Grund steht.

> Halt alles erstmal zum Test. Bei der "endgültigen" sache dann werde ich
> ja ein poti verbauen aber erstmal zum probieren etc. kann man da eine
> "notlösung" machen?

Nein. Denn am Kontrastregler wirst du noch ein paar mal drehen.

von Spess53 (Gast)


Lesenswert?

Hi

>Die Kontrastspannung muss einstellbar sein. Denn welche Einstellung du
>brauchst hängt unter anderem auch davon ab, in welchem Winkel du auf das
>Display schaust.

Von der Temperaturabhängigkeit ganz zu schweigen.

>Den Kontrast kannst du erst dann vernünftig einstellen, wenn du das
>erste mal etwas sinnvolles auf dem LCD ausgegeben hast.

Geht schon. Im uninitialisiertem Zustand den Kontrast so weit drehen, 
das das Anzeigefeld (Pixel) anfängt ganz leicht dunkel zu werden.

MfG Spess

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Spess hat recht, Kontrast einstellen geht ganz gut ohne "Inhalt".

Aber ich fürchte mit dem eigentlichen thema wird der TE überfordert 
sein. Ich kann mich jetzt an den KS0108 nicht erinnern, aber bis ich den 
ersten Pixel auf meinem T6963 gesehen habe, vergingen Wochen. Und ich 
kenn mich mit Displays aus (http://lcd4linux.bulix.org)

von Tobias N. (silberkristall)


Lesenswert?

ich habe mir jetzt ein poti geholt und werde den gleich mal einlöten. 
eintrimpoti 10k liegend.

naja also kontrast, strom und hg beleuchtung geht, ich muss jetzt nur 
noch was auf das display kriegen, ein einziger pixelpunkt würde mich 
erstmal schon beruhigen aber ich kapiere das datenblatt nicht

von Spess53 (Gast)


Lesenswert?

Hi

>Ich kann mich jetzt an den KS0108 nicht erinnern, aber bis ich den
>ersten Pixel auf meinem T6963 gesehen habe, vergingen Wochen. Und ich
>kenn mich mit Displays aus

Der KS0108 ist mit seinen sieben Befehlen eher übersichtlich. Nicht mit 
dem  T6963 zu vergleichen.

@ Tobias N. (silberkristall)

Meine Bemerkung zu deinem Drahtverhau war ernst gemeint. Mach deine 
Verbindungen zum Display so kurz wie möglich.

MfG Spess

von Cyblord -. (cyblord)


Lesenswert?

Tobias N. schrieb:
> ich wäre glücklich wenn ich überhaupt nur mal einen punkt sehen würde.

Das ist ja auch die meiste Arbeit, bis der 1. Punkt mal zu sehen ist. 
Denn dann stimmt ja mal alles. Das Display ist korrekt angeschlossen, 
korrekt initalisiert und man hat die Befehle verstanden und korrekt 
umgesetzt. Danach kommt doch nur noch das schreiben einiger High-Level 
Funktionen für Linien oder Zeichen. Also "nur" einen Punkt ist eben das 
ganze Problem. Und wenn du das Datenblatt nicht kapierst, kann dir 
keiner helfen. Dann kannst du das Display nicht ansteuern. Also: Was 
kapierst du denn da nicht? Frag doch mal was konkretes.

Noch was: Ist es bei diesem Display nicht so, dass dort 2 identische 
Controller drauf sind, welche jeweils eine Hälfte bedienen und mittels 
CS1 und CS2 selektiert werden? Muss man eben Beachten diesen Umstand.

gruß cyblord

von Tobias N. (silberkristall)


Angehängte Dateien:

Lesenswert?

so sieht das ganze jetzt aus. also Kontrast ist nun auch einstellbar.

Ja ich habe CS1 und CS2, einmal der linke, und einmal der rechte teil.

Also ich habe ja die anschlüsse:

D/I = H/L
R/W = H/L
E = H/L
DB0 - DB7 = H/L
CS1 = H/L
CS2= H/L
RST = H/L

DB0 - DB7 ist an PD0 - PD7
D/I an PC0
R/W an PC1
E an PC2
CS1 an PC3
CS2 an PC4
RST an PC5

So, ich habe es nun folgendermassen aus dem Datenblatt verstanden,

R/W auf Low setzen zum schreiben (...|&= ~(1<<PC1)) ok
CS1 auf High setzen (...|=(1<<PC3)) ok
D/I und E verstehe ich nicht wofür die seien sollen, aber das erlese ich 
mir gerade nochmal genau.

Aber mit dem "daten senden" habe ich dann meine Probleme. H/L (1/0) wie 
soll ich das verstehen? in einer schleife High und Low je nachdem durch 
pattern? also das ist eigentlich mein hauptproblem.

Ok, also D/I ist Daten oder Instruction signal, also auf High setzen das 
man "daten" sendet. ok das ist auch soweit klar.

Und was ist mit "initialisieren" gemeint? Also was geschieht da? Im 
Datenblatt finde ich diesbezüglich nichts.

von Ottmar K. (wil1)


Lesenswert?

Hallo Tobias,

Ich komme zwar von der Microchip-PIC-Fraktion und programmiere nur in 
Assembler, Zudem habe ich Dein Display noch nie bearbeitet. Habe mir 
aber mal das Datenblatt vorgenommen, denn ich kannDeine Hilflosigkeit 
nicht mehr länger mit ansehen. Ich versuche Dir mal nachfolgend etwas 
auf die Sprünge zu helfen.

Das Display ist in 2 Bereiche (Segment-Arrays) aufgeteilt und wird 
jeweils vom Controller CS1 (Chip Select 1) bzw. von CS2 Chip Select 2) 
verwaltet.

Initialisierung:
"The system can be initialized by setting RST terminal at low level when 
turning power on"
RESET-PIN nach Prozessor-Start sofot auf 0-Level legen.

Das 1. Signal Deines Controllers an das GLCD ist:
RESET (RST) auf Low-Level (0) ziehen.
Danach wartest Du ein paar µs, sicherheitshalber 1ms, damit sparst Du 
Dir den Status abzufragen.
Danach gibst Du den Pin frei indem Du ihn hochohmig als Eingang 
schaltest und wartest nochmals 1ms.

Datenblatt S.9
2.1 INTERFACE PIN DESCRIPTION

Offensichtlich willst Du das Dispöly mit 8-Bit Datenbus betreiben
DB0 - DB7 ist der Datenbuss des GLCD . Dieser ist  mit 8 Pins 0 - 7 
eines Ports an Deinem Controller angeschlossen.
D/I  = 0 bzw. 1 bedeutet Instructionen bzw. Daten senden
Instructionen sind  Befehle wie z.B. Display  ON/OFF
    Display-Start-Line
    Set page
    Set adress
    Status read
Daten sind  Pixel die gesetzt/nicht gesetzt werden sollen
                        Lesen von Display-Daten
R/W = 0/1  Schreiben von Daten in das / Lesen von Daten aus dem GLCD

Displäy senden, z.B. Adresse, Löschen usw .
D/I=1 Daten senden, z.B. Y-Adresse eines Pixels meist werden Bytes 
gesendet in denen z.B. ein H-Bit bedeuted dass ein Pixel gesetzt wird 
bzw. ein Low-Bit bedeutet, dass ein Pixel gelöscht, bzw. nicht gesetzt 
wird

Ich würde es mal so probieren

Power ON
wait 100ms

Setze RESET (RST) = Low
wait 10ms
RST-PIn als hochohmigen Eingang schalten
wait 10ms

CS1=1 CS2=0
musst halt probieren in welchen Segmentbereich Deine Adresse 
reinschreibt Die Segmente , das sind die einzelnen Pixel-Spalten in 
Y-Richtung

RW =0 Daten SCHREIBEN für alle nachfolgenden Sequenzen!
D/1=0 für alle Instructionen

Jetzt beginne mit dem Senden von Instructionen (vgl. Dazu Tabelle im 
Datenblatt)

Display ON
Enable = 1 das nennt man toggeln und schiebt den Befehl
Enable = 0 bzw. die Daten über den 8-BitBus ins GLCD

Set page
Enable = 1 Enable = 0

Set Y-Adresse
Enable = 1 Enable = 0

Set X-Adresse
Enable = 1 Enable = 0

D/1=1 für alle Datenübertragungen
Write display-data z.B. '01011110'
Enable = 1 Enable = 0

Jetzt- wenn der Kontrast stimmt müssten irgendwo die von Dir 
herbeigesehnten Pixel auftauchen

Ich kann Dir leider nicht mehr sagen, aber so oder so ähnlich muss es 
laufen!

Lass hören, wenn es Dir geholfen hat!

mfg Ottmar

von Tobias N. (silberkristall)


Lesenswert?

ok, also wenn ich das jetzt erstmal richtig verstanden habe brauche ich 
die ks lib usw garnicht. also ich kann die pins auch ganz normal wie bei 
I/O schalten!?

Ok dann werde ich nur mal gucken wie ich dann z.b. "01001101" an das 
Display "sende".

demnach müsstens ja dann das zweite, fünfte, sechste und achte pixel/dot 
"aufleuchten", richtig?

danke auf jeden fall schonmal. werde mich da morgen mal ran machen :)

von Klaus Dieter (Gast)


Lesenswert?

Meine Güte, nun nimm doch endlich die Routinen hier aus dem Forum! Die 
funktionieren hervorragend, besser wirst du es sicherlich nicht 
hinbekommen!

von Al3ko -. (al3ko)


Lesenswert?

Tobias N. schrieb:
> Ok dann werde ich nur mal gucken wie ich dann z.b. "01001101" an das
> Display "sende".
>
> demnach müsstens ja dann das zweite, fünfte, sechste und achte pixel/dot
> "aufleuchten", richtig?
Nein?

von Tobias N. (silberkristall)


Lesenswert?

ich habe die routine schon genommen diese sind für den mega16 ich habe 
auch viele im inet gefunden aber alle nur für 32 oder 16 wenn ich dort 
dann die ports änder und das flashe passiert rein garnichts.

bei manchen steht der R/W bin muss selbst gesetzt werden dann wiederrum 
soll die main.c direkt do laufen aber nichts der gleichen funktioniert.

von Klaus Dieter (Gast)


Lesenswert?

Dann machst du was verkehrt.

von Cyblord -. (cyblord)


Lesenswert?

Das ist doch komplett sinnlos. Ihr reitet hier ein totes Pferd. Merkt 
das keiner? Hier fehlt es an den grundlegendsten Grundlagen. Mit solchen 
Vorrausetzungen kann man eben nicht mal schnell nen Grafik LCD 
Programmieren. Und auch keine lib dafür benutzen.
Darüber hinaus ist der TE absolut und zu 100% beratungsresistent. Weder 
hört er auf den Rat ein normales Text-LCD zu verwenden, noch liest er 
das Datenblatt, noch liest er die Erklärungen zum Datenblatt von Ottmar. 
Ich meine die Ansteuerung könnte man ihm vortanzen und da wär trotzdem 
kein Lichtlein am Ende des Tunnels.

Mein Rat an den TE: Bleib bei deiner "fetten" Mucke.

gruß cyblord

von Stephan (Gast)


Lesenswert?

cyblord ---- schrieb:
> Das ist doch komplett sinnlos. Ihr reitet hier ein totes Pferd. Merkt
> das keiner? Hier fehlt es an den grundlegendsten Grundlagen. Mit solchen
> Vorrausetzungen kann man eben nicht mal schnell nen Grafik LCD
> Programmieren. Und auch keine lib dafür benutzen.
> Darüber hinaus ist der TE absolut und zu 100% beratungsresistent. Weder
> hört er auf den Rat ein normales Text-LCD zu verwenden, noch liest er
> das Datenblatt, noch liest er die Erklärungen zum Datenblatt von Ottmar.
> Ich meine die Ansteuerung könnte man ihm vortanzen und da wär trotzdem
> kein Lichtlein am Ende des Tunnels.
>
> Mein Rat an den TE: Bleib bei deiner "fetten" Mucke.
>
> gruß cyblord

mein Reden. (siehe oben)
Selbst mit dem 44780 hat er mehr zu tun als er sich vorstellt.

von Klaus W. (mfgkw)


Lesenswert?

cyblord ---- schrieb:
> Das ist doch komplett sinnlos. Ihr reitet hier ein totes Pferd. Merkt
> das keiner?

Doch, deshalb beobachte ich das nur gelegentlich mit Amüsement und halte 
mich ansonsten raus. (Alleine schon, um nicht ausfallend zu werden.)

von Tobias N. (silberkristall)


Lesenswert?

cyblord ---- schrieb:
> Darüber hinaus ist der TE absolut und zu 100% beratungsresistent. Weder
> hört er auf den Rat ein normales Text-LCD zu verwenden, noch liest er
> das Datenblatt, noch liest er die Erklärungen zum Datenblatt von Ottmar.

Das ist ja so nicht ganz korreckt.

1. Nunja, vll. wäre ein Textdisplay erstmal einfacher aber das ist 
nunmal gerade nicht da. Und ausserdem warum erst ein Textdisplay 
verwenden wenn man auf einem Grafikdisplay auch Text ausgeben kann?

Es wird ja überall geredet das es "enorme" unterschiede zwischen Text- 
und Grafikdisplay gibt also warum erst ein Textdisplay nehmen wenn man 
für ein Grafikdisplay eh wieder alles neu lernen muss?

2. Datenblatt muss ich ja wohl gelesen haben sonst wüsste ich die 
anteuerung ja nicht, oder?

3. Die erklärungen von Ottmar habe ich sehr wohl gelesen sonst würde ich 
ja auch nicht die drauf folgende Frage stellen.

4. Ich kann Deutsch und Latein, English halt so lala demnach fällt es 
mir nunmal schwer das Datenblatt auch nur ansatzweise zu verstehen.

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:

> 1. Nunja, vll. wäre ein Textdisplay erstmal einfacher aber das ist
> nunmal gerade nicht da. Und ausserdem warum erst ein Textdisplay
> verwenden wenn man auf einem Grafikdisplay auch Text ausgeben kann?

Weil du als Baby erst mal krabbeln lernen musst, dann balanzieren, dann 
gehen, dann laufen, dann radfahren und dann, nachdem du das alles 
gelernt hast, dann läufst du erst mal ein paar Langstrecken ehe du dich 
zum New York Marathon anmeldest und dich über Laufstrategien schlau 
machst. Im ersten Lebensjahr gleich zum NY-Marathon funktioniert nun mal 
nicht.


Ich vergass. du läufst ja nicht. Du fährst ja mit Schalldruck.

von spess53 (Gast)


Lesenswert?

Hi

>Und ausserdem warum erst ein Textdisplay
>verwenden wenn man auf einem Grafikdisplay auch Text ausgeben kann?

Kannst du das auch? Auf einem Textdiplay wird ein Zeichen mit einem Byte 
ausgewählt. Bei einem Grafikdisplay must du dir das Zeichen aus Pixeln 
zusammenbasteln. Es gibt zwar auch Grafikdisplays, die auch einen 
Textmode haben, dazu gehört aber deins nicht.

>Es wird ja überall geredet das es "enorme" unterschiede zwischen Text-
>und Grafikdisplay gibt also warum erst ein Textdisplay nehmen wenn man
>für ein Grafikdisplay eh wieder alles neu lernen muss?

Muss man nicht. Die Ansteuerung mit E, RS, RW ... ist eigentlich recht 
identisch.

MfG Spess

von Honk (Gast)


Lesenswert?

Tobias N. schrieb:
> 1. Nunja, vll. wäre ein Textdisplay erstmal einfacher aber das ist
> nunmal gerade nicht da. Und ausserdem warum erst ein Textdisplay
> verwenden wenn man auf einem Grafikdisplay auch Text ausgeben kann?

1. weil es einfacher zu handeln ist und so auch zu einem Erfolg führt
2. weil es einfacher zu handeln ist und so auch zu einem Erfolg führt
3. weil es einfacher zu handeln ist und so auch zu einem Erfolg führt
4. weil es einfacher zu handeln ist und so auch zu einem Erfolg führt
und
5. weil es einfacher zu handeln ist und so auch zu einem Erfolg führt

von Tobias N. (silberkristall)


Lesenswert?

ich glaube ich habe nun das problem gefunden warum nichts klappt. R/W 
muss ja auf HIGH gesetzt werden nur das tut keine lib, demnach kann ja 
nichts passieren, das werde ich nachher mal testen.

Aber mal eine andere frage, woran erkennt man am Display das es 
Initialisiert wurde? Also was macht das Display dann?

Danke euch schonmal.

von Karl H. (kbuchegg)


Lesenswert?

spess53 schrieb:

> Muss man nicht. Die Ansteuerung mit E, RS, RW ... ist eigentlich recht
> identisch.

Und ich möchte hinzufügen: So wie eigentlich vieles. Im Grunde ist das 
ansteuern der meisten externen Hardware nichts anderes als ein 
geordnetes und zeitlich richtiges 'Wackeln' mit ein paar Output-Pins. Je 
mehr Pins es es sind, desto mehr Möglichkeiten für Fehler gibt es auch. 
Daher fängt man auch erst mal mit ein einer übschaubaren Anzahl an 
'Fehlermöglichkeiten' an, die man auch als Anfänger noch beherrschen 
kann und arbeitet sich dann hoch. Alleine die Übung und die Erfahrung, 
die man auf diese Art gewinnt, zahlt sich in späteren Projekten (die 
sich ev. um ganz andere Hardware drehen) 100-fach aus.
Je mehr Fehlermöglichkeiten es gibt, desto mehr muss auf Anhieb richtig 
sein, damit es funktioniert.

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:
> ich glaube ich habe nun das problem gefunden warum nichts klappt. R/W
> muss ja auf HIGH gesetzt werden

Nö.
Siehe Seite 6 in deinem Datenblatt

R/W ist Low   bei einer Write-Operation

von egbert (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Tobias N. schrieb:
>> ich glaube ich habe nun das problem gefunden warum nichts klappt. R/W
>> muss ja auf HIGH gesetzt werden
>
> Nö.
> Siehe Seite 6 in deinem Datenblatt
>
> R/W ist Low   bei einer Write-Operation

Wie üblich sitzt das Problem vor der Tastatur.

von Ottmar K. (wil1)


Lesenswert?

Autor: Tobias N. (silberkristall)
Datum: 30.10.2012 16:07
> ich glaube ich habe nun das problem gefunden warum nichts klappt. R/W
> muss ja auf HIGH gesetzt werden

Autor: Ottmar K. (wil1)
Datum: 29.10.2012 21:55
>RW =0 Daten SCHREIBEN für alle nachfolgenden Sequenzen!
>D/1=0 für alle Instructionen

Hallo Tobias!
Eigentlich sollte ich jetzt SAUER sein! DEUTSCH kannst Du doch lesen und 
in dieser Sprache habe ich im Beitrag vom 29.10.2012 Dir geantwortet:

>RW =0 Daten SCHREIBEN für alle nachfolgenden Sequenzen!

Ich glaube bald den anderen im Thread, dass Du wirklich 
beratungsresistent bist!

Ottmar

von Tobias N. (silberkristall)


Lesenswert?

ne du hast schon recht, ja low nicht high das habe ich verwechselt ich 
lese im moment im inet soviel das ich etwas verwirrt bin. auf der seite 
hier in den tuts mit der glcd routine für ks0108 steht das die routine 
R/W nicht nutzt und man dieses selber auf HIGH setzen muss damit kam ich 
jetzt durcheinander.

von Stephan H. (stephan-)


Lesenswert?

Tobias N. schrieb:
> ne du hast schon recht, ja low nicht high das habe ich verwechselt ich
> lese im moment im inet soviel das ich etwas verwirrt bin. auf der seite
> hier in den tuts mit der glcd routine für ks0108 steht das die routine
> R/W nicht nutzt und man dieses selber auf HIGH setzen muss damit kam ich
> jetzt durcheinander.

das ist eben das Problem mit Copy and Paste.
Die Benutzung fremden Codes ist die eine Sache, wenn man davon aber rein 
gar nichts versteht, weil elemantare Grundlagen fehlen, wird es 
hoffnungslos und stiehlt den Leuten die hier wirklich gern helfen VIEL 
unnötige Zeit.

wobei:
Tobias N. schrieb:
> ok,
>
> also erstmal zusehen das ich ein "Hallo Welt" auf das Display bekomme,
> das richtig beschalte etc. pp und mich dann an alles weitere mache,
> richtig?

selbst das hast Du offensichtlich nicht verstanden.
Auch das muß programmiert werden. Wie ich schon 2 Mal sagte,
44780 nehmen und üben.

von Tobias N. (silberkristall)


Angehängte Dateien:

Lesenswert?

Es läuft :)

von Rene Z. (renezimmermann)


Lesenswert?

2,8 MB das gibt mecker.;-)Glückwunsch, war schon lustig mitzulesen.

von Karl H. (kbuchegg)


Lesenswert?

Rene Zimmermann schrieb:
> 2,8 MB das gibt mecker.;-)

ist nur noch das Tüpfelchen auf dem i
(Ich werd dann mal wieder)

> Glückwunsch, war schon lustig mitzulesen.
Du glaubst doch nicht im ernst, das er das programmiert hat?
Nach vielen Versuchen wird er halt die Anschlüsse endlich so hingekriegt 
haben, das eine der vorgefertigen Beispiele einer vorgefertigten Lib 
funktionieren.

ABer seis drum. Jetzt geht der Spass ja erst richtig los :-)

von Tobias N. (silberkristall)


Lesenswert?

Karl Heinz Buchegger schrieb:
>> Glückwunsch, war schon lustig mitzulesen.
> Du glaubst doch nicht im ernst, das er das programmiert hat?
> Nach vielen Versuchen wird er halt die Anschlüsse endlich so hingekriegt
> haben, das eine der vorgefertigen Beispiele einer vorgefertigten Lib
> funktionieren.
>
> ABer seis drum. Jetzt geht der Spass ja erst richtig los :-)

ja, die mylcd lib war die erste die nun geklappt hat. Aber "so" einfach 
war das nun auch nicht. ich musste jede zeile der files durchgehen und 
viel anpassen. naja nachdem ich so in etwa wusste was ich suche ging es 
dann vorran.

Was meinst du mit, jetzt geht der spaß erst richtig los?

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:

> Was meinst du mit, jetzt geht der spaß erst richtig los?

Jetzt funktioniert die erste Komponente.
Soweit so gut.

Die will ja jetzt auch verwendet werden. Bildaufteilung, wie erreicht 
man eine schöne Ausgabe etc.
Eben der Spass, das Display zu verwenden.

Und dann wartet ja auch der DS1820 noch in den Startlöchern.

von Tobias N. (silberkristall)


Lesenswert?

richtig, also ich "spiele" jetzt erstmal ein wenig rum was man alles so 
tolles machen kann. Und morgen werde ich erstmal gucken wie man den DS 
beschaltet um nicht immer zu programmieren chip umstecken etc., also um 
mal eine "live" ausgabe zu beobachten.

mir fällt da noch ein, kennt jemand vll. eine Seite auf der Steht wie 
man etwas "messen" kann?

Also ich habe hier einen Fototransistor und mich würde man interessieren 
ob man "messen" kann in wie weit der durchgeschaltet ist.

Auf jedenfall ein großes dankeschön an alle :)

von Martin K. (maart)


Lesenswert?

Langsam, langsam.
Sorge erst mal dafür, dass das Display richtig funktioniert und du in 
der Lage bist, Sachen wie z.B. "Wert i = yyz" auf dem Display darstellen 
kannst. So hast du nämlich eine "DEBUG"-Ausgabe, was eine spätere 
Fehlersuch doch enorm erleichtert

von Bankberater (Gast)


Lesenswert?

Tobias N. schrieb:
> mir fällt da noch ein, kennt jemand vll. eine Seite auf der Steht wie
>
> man etwas "messen" kann?


Das wird da weiterhelfen:
http://www.aponorm.de/wissen_richtig_fieber_messen/

von Honk (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> ABer seis drum. Jetzt geht der Spass ja erst richtig los :-)

... und ich sag noch, nimm ein Textdisplay ...

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.