Forum: Mikrocontroller und Digitale Elektronik Grafik LCD ansteuerung


von M. M. (blackcow)


Lesenswert?

Hallo,

ich will ein Grafik LCD ansteuern (122x32).
Ich habe das Display angeschlossen und ein kleines Programm geschrieben 
das dieses Display initialisieren soll. Leider funktioniert das nicht 
wie es sollte. Nach anlegen der Spannung sehe ich einen schwarzen 
Balken.
Bedeutet dass, das das Display nicht initialisiert ist?
Und weis wer zufällig ein gutes Tutorial über GLCDs in Assembler? Oder 
einen Code den ich verstehen und nachprogrammieren kann? Ich hab schon 
danach gegooglet, aber das ist alles mit C.

Und was ich noch wissen wollte: für was ist dieser Anschluss "external 
Clock 2KHz" > clock für den Displaycontroller?
und wenn ich "Enable Signal" auf low setze, gibt es da eine interne 
Clock?
Ich bin total am verzweifeln da das Datenblatt i-wie fürn popo ist!

von GroberKlotz (Gast)


Lesenswert?

Wie wäre es wenn Du die genaue Bezeichnung Deines GLCD bekannt geben 
würdest? Es wäre auch hilfreich Deinen Code als Anhang beizufügen. Hier 
kann doch keiner hellsehen!
mfg GroberKlotz

von dfb (Gast)


Lesenswert?

was für einen controllertyp verwendest du?

wenn avr, ist jtag abgeschaltet?

unter bascom avr gibt es eine fertige routine, die man zum testen bequem 
benutzen kann.

von M. M. (blackcow)


Lesenswert?

Ja klar! Also das LCD heißt  LM042-13A, und das ist das Datenblatt:
http://www.produktinfo.conrad.com/datenblaetter/175000-199999/187399-da-01-en-Grafik_122x32_LDC_Modul.pdf

Was heißt 80 SERIEL, bzw. 68 SERIEL?

Der Controller den ich benutze ist ein Attiny2313. Ich kann aber leider 
nur in Assembler programmieren.

von dfb (Gast)


Lesenswert?

M. M. schrieb:
> Der Controller den ich benutze ist ein Attiny2313. Ich kann aber leider
> nur in Assembler programmieren.

das macht eigentlich nix, bascom avr ist für solche testzwecke 
"idiotensicher". ist eine art basic für µC.

www.mcselec.com/index.php?option=com_docman&task=doc_download&gid=139&It 
emid=54

(datei bcavrdmo.zip von mcselec.com)

Unter "Inhalt" nach "Graphikdisplay" suchen, das Beispielprogramm 
rüberkopieren und den Controllertyp, die Quarzfrequenz und die 
Anschlussbelegung deines GLCDs anpassen.

Dann noch den Progger einstellen, kompilieren und auf den Chip 
schreiben.

Was für einen Progger hast du?

von M. M. (blackcow)


Lesenswert?

Muss mir das Bascom mal anschaun.

Der Controller tut das was ich will (gemessen), ich schätz ich gebe die 
falschen Befehle aus.

Also ich habe wie gefolgt angeschlossen:
1 | Vss | GND
2 | Vdd | +5V
3 | V0  | 10k Poti
4 | A0  | Hi: Daten Low: Befehl
5 | CS1 | Chip rechts
6 | CS2 | Chip links
7 | CL  | wundersame Uhr > auf GND
8 | E   | GND (seri 68 ausgewählt??)
9 | R/W | Hi: Read Low:Write?
10-17|  Datenbus
18| RES | scheinbar kein Reserve > Hi> seri68

Bei der Initialisierung macht AVR folgendes:
A0 auf Low
CS1 Hi
CS2 Low
R/W Low > spielt das eine Rolle wenn A0 auf Low ist?
auf dem Datenbus kommt dann der Befehl Reset mit 0b11100010
Ich habe den Befehl irgendwann irgendwo aus dem Internet her.
Kann es sein das SERI80 bzw 68 ein standartprotokoll ist?
Jedenfalls dachte ich dass nach dem initialisieren das LCD leer sein 
sollte.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

M. M. schrieb:
> Kann es sein das SERI80 bzw 68 ein standartprotokoll ist?

Wenn Du Dir das Datenblatt des Displays bzw. des darauf verbauten 
Controllers ansehen würdest, könntest Du dort die Timingdiagramme sehen, 
die den Unterschied zwischen beiden Schnittstellenprotokollen 
beschreiben.

Das Datenblatt solltest Du Dir sowieso ansehen, weil Du anscheinend 
nur äußerst vage Vorstellungen davon hast, wozu die unterschiedlichen 
Signale da sind.

von dfb (Gast)


Lesenswert?

M. M. schrieb:
> auf dem Datenbus kommt dann der Befehl Reset mit 0b11100010
> Ich habe den Befehl irgendwann irgendwo aus dem Internet her.
> Kann es sein das SERI80 bzw 68 ein standartprotokoll ist?
> Jedenfalls dachte ich dass nach dem initialisieren das LCD leer sein
> sollte.

kenne mich leider mit sowas nicht aus, deshalb der tipp mit bascom. da 
ist der "kleinkram" schon vorprogrammiert, man muss nur noch die 
parameter angeben... zum testen super. ob bascom selber so toll zum 
programmieren ist, weiß ich nicht, es scheiden sich die geister. dort 
kann man aber auf jeden fall auch asm-zeilen eingeben, so weit ich weiß.

ach ja, ist das display eigentlich T6963-kompatibel?

von M. M. (blackcow)


Lesenswert?

Mhmm, also mit Bascom komme ich garnicht klar!

 Rufus Τ. Firefly schrieb:
"Wenn Du Dir das Datenblatt des Displays bzw. des darauf verbauten
Controllers ansehen würdest, könntest Du dort die Timingdiagramme sehen,
die den Unterschied zwischen beiden Schnittstellenprotokollen
beschreiben."

Jop, hab ich gemacht.
-mit RES wähle ich ob ich im 80- oder 68-Port Modus bin
 demnach ergeben sich dann auch die Funktionen von Pin 8 und 9
-der Hauptunterschied zwischen 80 und 68 ist das Signal Enabled Pin (8).
 wenn E Hi ist, dann wertet der Displaycontroller A0, CS1 und CS2 aus?!
 >ich nehme den 80-Port-Modus (also ohne E)
-dieser Clock-Eingang wird einfach benötigt, da der Displaycontroller 
keinen
 internen Taktgeber hat.
 >ich benutze testhalber den Kalibrierausgang meines Oszis, da ich 
keinen
  Nerv habe irgend eine N555 Timerschaltung auf meinem windigwackligem
  Steckbrett aufzubauen. (benötigt: 2kHz, Oszi: 1kHz). Wird schon gehen.
-auf Seite 11 steht wieder eine ganz andere Pinbelegung. Ich werde mich 
nach
 der von der letzten Seite richten, da ich ja den Kontrast nachweislich
 beim 3. Pin einstellen muss. > ich ignoriere also Seite 11
-Wenn ich das LCD initialisieren will muss ich ja einen Resetbefehl o.ä.
 geben. Also A0 auf Low (Instruction Select).
 Die Instruction liegt dann beim Datenbus an. Wo stehen diese 
Instructions?
 Zusätzlich muss ich ja noch auf "Write" stellen, weil ich schreibe ja
 die "Instruction" bzw. den Befehl
 Das ganze muss ich sowohl bei Chip1 als auch bei Chip2 machen.

Stimmt das so, oder hab ich da den Wurm drin?
Und meine Hauptfrage ist, wo ich diese "Instructions" finde?

von M. M. (blackcow)


Lesenswert?

Also das Display ist jetzt nach dem initialisieren leer. Aber schreiben 
funktioniert nicht.
Muss ich da so vorgehen?:
-auf instruction stellen
-auf dem bus instruction "markiere zeile XX" ausgeben
-auf data stellen
-8 senkrechte Pixel ausgeben

Aber wie sieht der Befehl aus?

von dfb (Gast)


Lesenswert?

M. M. schrieb:
> Mhmm, also mit Bascom komme ich garnicht klar!

Zur Not kann ich hier morgen ein kleines Bascom-Testprogramm posten, 
wenn es dann noch benötigt wird.

bräuchte dafür folgende Infos:

-Displayauflösung

-Controllertyp

-Quarzfrequenz

-Portname, an dem D0 bis D7 hängen

-die Portpin-Namen, an denen /WR, /RD, /CE, C/D, RESET und FS hängen


Das Display muss T6963C-kompatibel sein.


PS: hast du den Kontrast richtig eingestellt?

von Floh (Gast)


Lesenswert?

M. M. schrieb:
> Der Controller den ich benutze ist ein Attiny2313. Ich kann aber leider
> nur in Assembler programmieren.

Scheint mir eine Fehlentscheidung des Controllers zu sein. Insgesamt 2 
kB Flash für eine Schaltung mit Grafikdisplay? Da passt gar nichts rein, 
ein voller Zeichensatz (256 Zeichen) für Grafikdisplays 8x5 Pixel hat 
schon ca 1,2 kB.

Wäre sinnvoller, einen größeren Controller zu nehmen.

Frage am Rande: Was wird das für ein Projekt?

von M. M. (blackcow)


Lesenswert?

@dfb:
das ist saulieb von dir, aber ich scheiter da irgendwie schon beim 
übertragen mit Bascom. Ich bräuchte halt irgend ein Tutorial das ichs 
versteh.

@Floh:
Ich hab bei mir nur den 2313 rumliegen. Es soll die Spannung vom 
Weidezaun gemessen und bei einer Mindestspannung löst dann ein Alarm aus 
(per SMS über aufgebohrtes Handy). Zusätzlich wird ausgewertet ob ein 
rapider Spannungseinbruch innerhalb einer kurzen Zeit auftritt. Auch 
dann gibt es Alarm. Das ganze funktioniert auch recht gut, aber ich 
hätte den Verlauf der letzten 24 Stunden gerne angezeigt bekommen. 
Deswegen das Grafikdisplay.
Und falls ich doch noch eine Anwendung habe, wo ich quasi auf das 
gespeicherte Bild zugreifen müsste, kann man das Display auslesen 
(theoretisch jedenfalls).

von M. M. (blackcow)


Lesenswert?

Wie finde ich raus ob mein lcd T6963C-kompatibel ist?

von dfb (Gast)


Lesenswert?

M. M. schrieb:
> das ist saulieb von dir, aber ich scheiter da irgendwie schon beim
> übertragen mit Bascom.

Programm übertragen von Bascom zum Controller?


Floh schrieb:
> Scheint mir eine Fehlentscheidung des Controllers zu sein. Insgesamt 2
> kB Flash für eine Schaltung mit Grafikdisplay? Da passt gar nichts rein,
> ein voller Zeichensatz (256 Zeichen) für Grafikdisplays 8x5 Pixel hat
> schon ca 1,2 kB.

Unter Bascom benötigt das Display nur mit Line-Befehl etwa 800Byte (mit 
zusätzlichen Buchstaben und Kreis-Befehl ca. das Doppelte)

Wenn man lediglich PSET benötigt, sind es wahrscheinlich noch weniger 
als die 800Byte.

von dfb (Gast)


Lesenswert?

M. M. schrieb:
> Wie finde ich raus ob mein lcd T6963C-kompatibel ist?

Schau dir die Chips auf dem LCD an, einer von denen sollte etwas wie 
"T6963C" aufgedruckt haben, ansonsten ins Datenblatt gucken, so weit 
vorhanden...

von M. M. (blackcow)


Lesenswert?

Programm übertragen von Bascom zum Controller? >> ja genau ich bin wohl 
zu blöde dafür.
Ich geh jetzt schlafen und such morgen nochmal nach den Instructions.
Trotzdem danke für die Tipps!

von M. M. (blackcow)


Lesenswert?

Ah AX6120AA heißt der Controller ich grad sah :-).
Da lässt sich vll. was finden!

von dfb (Gast)


Lesenswert?

M. M. schrieb:
> Programm übertragen von Bascom zum Controller? >> ja genau ich bin wohl
> zu blöde dafür.

Du musst auf jeden Fall unter "Options" --> "Programmer" deinen 
Programieradapter einstellen.

Ich habe einen AVRISP MKII, den mag Bascom nicht ohne Extratreiber (im 
Gegensatz zum AVR-Studio). Deshalb nehme ich für Bascom einen alten 
SP12.

von Snoop (Gast)


Lesenswert?


von M. M. (blackcow)


Lesenswert?

Ah danke! Damit bin ich dann wohl eine Weile beschäftigt.

von M. M. (blackcow)


Lesenswert?

Noch eine letzte Frage:
Das LCD braucht ja eine gewisse Zeit, um einen Befehl auszuführen 
(Stichwort Timing). Aber zu langsam kann ein Befehl nicht sein oder?
Also ich mein ein Befehl kann auch 1 min anstehen bis der nächste kommt?

von W.S. (Gast)


Lesenswert?

M. M. schrieb:
> ich will ein Grafik LCD ansteuern (122x32).

Soso.  "Ich will.. ähh, ja ich will Buntstift!"

oder "device doesnt work, please advice!"

Manchmal kommt mir die schiere Verzweiflung den Hals hoch.
Warum können und/oder wollen die Leute heutzutage nicht mehr im 
Geringsten darüber nachdenken, was sie denn eigentlich wollen und was 
man sinnvollerweise wohl dafür brauchen könnte?

Schon der allererste Gedanke könnte ja sein, daß man eine Idee 
entwickelt, was zum Kuckuck man denn auf einem Display darstellen 
möchte.

Soll es Schrift sein, dann braucht man Schriftzeichen dafür und die 
fallen nicht vom Himmel, sondern wollen irgendwo im uC in irgendeiner 
Weise vorgehalten werden.

Sollen es andere Dinge sein (Linien, Punkte, Flächen usw) dann braucht 
man dafür sowohl Werkzeuge (Zeichenroutinen) als auch etwas, worauf man 
diese Werkzeuge zeichnen lassen kann, also etwas, das dem Blatt Papier 
entspricht, im Klartext heißt das "RAM". Und dessen nötige Größe sollte 
man aus den Dimensionen seines gekauften LCD's abschätzen können.

Das alles kann man überdenken, bevor man sich an die Details der 
physischen Schnittstelle macht. Diese richtig zu bedienen ist ein 
Klacks, das Internet ist voll von Beispielen und die Doku zum 
Display/Controller kann man lesen.

UND MAN SOLLTE DAS AUCH VORHER BEDENKEN, DAMIT MAN WENIGSTENS EIN 
ERKENNBARES ZIEL VOR AUGEN HAT! So ein "ich will ein Grafik LCD 
ansteuern" hingegen ist nur Nervensäge für alle Anderen - im Moment grad 
für mich. Wer qualifizierte Antworten haben will, möge sich mit seiner 
Frage bitte sehr auch etwas Mühe geben.

W.S.

von u8glib (Gast)


Lesenswert?

Soweit ich das bisher beurteilen kann, ist der
AX6120AA
identisch mit dem SED1520 und dieser
identisch mit dem SBN1661

Die init sequence ist recht einfach:
http://code.google.com/p/u8glib/source/browse/csrc/u8g_dev_sbn1661_122x32.c

Das mit dem Takt-Eingang hab ich auch nicht verstanden. Bisherige Nutzer 
von U8glib und Displays mit diesem Controller berichteten jedenfalls 
nichts von so einem Eingang.

U8glib läuft gerade noch so auf einem ATTiny mit 8K ROM

Grüße,
Oliver

von M. M. (blackcow)


Lesenswert?

W.S. schrieb:
"Schon der allererste Gedanke könnte ja sein, daß man eine Idee
entwickelt, was zum Kuckuck man denn auf einem Display darstellen
möchte."

Ich will ja auch keine Zeichen oder i-welche Grafen malen, sondern 
einfach nur mal initialisieren und einen Pixel einschalten da wo ich 
will!


 W.S. schrieb:
"Sollen es andere Dinge sein (Linien, Punkte, Flächen usw) dann braucht
man dafür sowohl Werkzeuge (Zeichenroutinen) als auch etwas, worauf man
diese Werkzeuge zeichnen lassen kann, also etwas, das dem Blatt Papier
entspricht, im Klartext heißt das "RAM". Und dessen nötige Größe sollte
man aus den Dimensionen seines gekauften LCD's abschätzen können."

Es ist mir sehr wohl klar das in einen Attiny2313 keine 122x32 Pixel in 
den RAM passen. Aber erstens habe ich keinen anderen uC auf die schnelle 
zur Hand, zweitens kann man sich ja auch anders behelfen und drittens 
geht es mir nicht darum das komplette Display mit einem Bild 
auszufüllen.


 W.S. schrieb:
"Das alles kann man überdenken, bevor man sich an die Details der
physischen Schnittstelle macht. Diese richtig zu bedienen ist ein
Klacks"

scheinbar nicht.

von Peter D. (peda)


Lesenswert?

M. M. schrieb:
> Ich bin total am verzweifeln da das Datenblatt i-wie fürn popo ist!

Da gibt es einen Trick, man schaut sich das Datenblatt einfach zuerst 
an.
Und wenn man merkt, daß es fürn popo ist, dann kauft man es eben nicht. 
So würde es jeder vernünftige Mensch machen.

Da steht ja nichtmal drin, was es für ein Kontroller ist.


Peter

von sfgh45zh (Gast)


Lesenswert?

W.S. schrieb:
> Warum können und/oder wollen die Leute heutzutage nicht mehr im
>
> Geringsten darüber nachdenken, was sie denn eigentlich wollen und was
>
> man sinnvollerweise wohl dafür brauchen könnte?


Das liegt meiner Meinung nach an mehreren Faktoren,
die dann kombiniert zur von Dir beschriebenen Situation führen:

1) Die Hemmschwelle, einen Thread in diesem Forum zu starten, ist sehr 
klein. Es ist viel einfacher, schnell "in die Runde" zu fragen, als sich
selbst Gedanken machen zu müssen. Das sieht man dann auch daran, dass
hier übermäßig hochwertige/komplexe Antworten erwartet/notwendig sind,
die auf informationstechnisch schlappen Anfragen basieren sollen.

2) Das "Wie" wird meistens zu schnell behandelt, bevor das "Was" 
ausreichend geklärt wurde.

3) Es wird in den Schulen genau das Selber-Erarbeiten nicht gefordert.

4) Leute mit sehr wenig Vorkenntnissen wollen Aufgaben in einer 
bestimmten Zeit lösen, in das das einfach nicht funktioniert. Ob das 
jetzt Überschätzung von einem selber ist oder von dem Vorgesetzten 
(o.ä.)
ist egal.

5) Wir leben in einer Welt, in der die Leute bunten Krams auf dem iPhone 
klickern ("Apps") und dann meinen, alles wäre so einfach im Leben 
(bunten
schöne heile Welt). Das das aber bis dahin sehr viel Menpower gekostet 
hat,
sieht man ja so nicht direkt.

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.