Hallo. Ich habe mich auf ein LCD mit Symbolen und 7-14Segment-Ziffern eingelassen. Diese Segmente sind in einer Matrix untereinander verbunden und an 4Com- und 11Segment-pins anzusteuern (=44 Segmente), also 15 Pins am Display. Ich habe schon des öfteren mit Led-Matrixen getrixt was auch immer ohneProbleme funktioniert hat. Aber ein LCD ist kein Led-Matrix. Ich habe zwei Fotos vom LCD angehängt falls jemand das Orginal betrachten will, aber mein Problem lässt sich sehr einfach darstellen: 1 2 3 4 5 6 7 8 9 10 11 A + + + + + + + + + + + B + + + + + # + + + + + C + + + + + + + + + + + D + + + + + + + + + + + Bei LED wäre die Lösung B-/6+ mehr als einfach. Aber auf einem LCD fällt mir rein gar keine lösung ein. Mein einziger Erfolg ist es das ganze Display anzusteuern. Ganz primitiv in ASM programmiert zum testen: disp: A-D: Port tief 1-11: Port hoch delay A-D: Port hoch 1-11: Port tief delay rjmp disp Da es definitiv kein Datenblatt gibt habe ich irgendeine Frequenz angenommen die funktionierte. In meiner Verzweiflung habe ich auch schon einige Experimente mit Gleichstrom gemacht, auch ohne Erfolg.
JA, das wäre mir auch am liebsten! Einfach ein anderes! Hatte vor kurzem das DOGM18x64 ( http://www.lcd-module.de/pdf/grafik/dogm128.pdf ) in ASM schon sehr gut unter kontrolle. Wollte gleich das verwendet aber jetzt musses genau das aus meinem vorherigen Beitrag sein. Mittlerweile frage ich mich ob das überhaupt auf diese weise anspielbar ist?!?
friedrich werdnik schrieb: > Mittlerweile frage ich mich ob das überhaupt auf diese weise anspielbar > ist Nein, schau dir die Spannungspegel des PCF8566 an, der produziert nicht nur + und -, sondern 3 oder 4 Stufen. Das kann man natürlich auch mit einem uC machen, in dem je 2 Ausgänge die Spannung der jeweiligen Backplane per Spannungsteiler bestimmen, braucht aber auf Grund der Querströme in den Spannungsteilern etwas mehr Strom als der PCF8566. Atmel zeigt in seinem Datenblatt noch eine Version mit nur 1 Pin pro COM die SEHR VIEL Strom benötigt. Aber Achtung: Für korrekte Kontrasteinstellung kann es notwendig sein, die Betriebsspannung des uC zu verändern, z.B. von 3V bis 6V.
Ein gemultiplextes LCD braucht mehrere Spannungspegel. Da die Segmente eine Mindestspannung zum Einschalten haben, werden diese Pegel so gewählt, dass nicht benötigte Segmente zu wenig Spannung erhalten. Der AtMega 169 hat als einziger AVR so eine Mux-Möglichkeit eingebaut. http://www.atmel.com/devices/atmega169.aspx "not recommended for new designs" "4 x 25 Segment LCD Driver" den gibts auch mit Platine als "AVR Butterfly"
4 Stunden lesen und Testen später hab ich es nun geschafft einzelne Segmente anzeigenzulassen. Messungen mit dem Oszi haben gezeigt das bei 5 Volt Prozessorspannung zwischen Com und Segment eine Rechteckspannung von 10V entstehen. Ich brauche aber nur 3,5V-AC oder mehr um die Segmente anzeigen zu lassen. Prozessorspannung auf 1,8V und passenden Condensator am Prozessor und schon werden nur die gewünschten Segmente angezeigt. :-) Jetz hänge ich noch beim Multiplexen (Geisterleuchten), aber ich glaube das wird die vorrübergehende Lösung fürs erste sein. Vielen Dank fürs erste für die Hilfe. War sehr wichtig: google schrieb: > direct drive of LCD: http://www.atmel.com/images/doc8103.pdf Habe ich alleine nicht gefunden. Christoph Kessler (db1uq) schrieb: > Ein gemultiplextes LCD braucht mehrere Spannungspegel. Da die Segmente > eine Mindestspannung zum Einschalten haben, werden diese Pegel so > gewählt, dass nicht benötigte Segmente zu wenig Spannung erhalten. Versteh ich noch nicht, aber warhscheinlich liegt genau da noch mein Problem.
:
Bearbeitet durch User
friedrich werdnik schrieb: > 4 Stunden lesen und Testen später hab ich es nun geschafft einzelne > Segmente anzeigenzulassen. > > Messungen mit dem Oszi haben gezeigt das bei 5 Volt Prozessorspannung > zwischen Com und Segment eine Rechteckspannung von 10V entstehen. Wow. Das mußtest du messen? Du konntest nicht 5V und 5V addieren? > Christoph Kessler (db1uq) schrieb: >> Ein gemultiplextes LCD braucht mehrere Spannungspegel. Da die Segmente >> eine Mindestspannung zum Einschalten haben, werden diese Pegel so >> gewählt, dass nicht benötigte Segmente zu wenig Spannung erhalten. > Versteh ich noch nicht, aber warhscheinlich liegt genau da noch mein > Problem. Du bist beim Verständnis jetzt bei LCD mit einer einzelnen Backplane und sogenanntem static driving. Wo du hin willst, ist aber noch einiges komplizierter. Multiplex-Ansteuerung mit 4 Backplanes. Dafür brauchst du einen Treiber der mindestens 4 Pegel erzeugen kann, typischerweise in Abstufungen 0V, 1/3 Vdd, 2/3 Vdd, Vdd. Wegen der Drittelstufen wird das "1/3 Bias" genannt. Und weil du 4 Backplanes hast, brauchst du "1/4 Multiplex". Soviel an Stichworten zum Googlen. Hier: http://awawa.hariko.com/avr_lcd_drive_en.html wird gezeigt, wie man eine 1/3 Bias Ansteuerung mit GPIOs bauen kann. Und es werden die Kurvenformen für 1/3 Multiplex gezeigt. Für 1/4 Multiplex wird es nochmal komplizierter. Man kann auch das mit GPIOs machen, einfacher wird es aber mit einem dezidierten LCD Controller/Treiber. In dessen Datenblatt findest du auch die notwendigen Kurvenformen. Beispiel: PCF85162
Die richtigen Suchbegriffe kennst Du jetzt: lcd direct drive multiplex Der PIC1947 könnte ebenfalls behilflich sein. Gab es noch vor kurzem bei Reichelt für wenig Geld.
Und noch der Herstellerlink zum PCF8566: http://www.nxp.com/products/interface_and_connectivity/lcd_drivers/lcd_segment_drivers/series/PCF8566.html zum Beispiel bei Mouser erhältlich, 2,34€: http://www.mouser.de/Search/Refine.aspx?Keyword=PCF8566 der hat auch den PCF85162 1,42€
:
Bearbeitet durch User
AVR-APP-Note: http://www.atmel.com/images/doc8103.pdf awawas lab: http://awawa.hariko.com/avr_lcd_drive_en.html Ich habe nach den Links oben mit 2k2 Spannungsteilern an den 4COM-Anschlüssen das Display mit 1/2Bias halbwegs zum laufen bekommen. Ich weiss nicht in wie weit es egal ist ob ich ein LCD im 1/2- oder 1/3-Bias betreibe. Hoffentlich geht nix kaputt auf die dauer. Der Hardwareaufwand ist bei 1/2 weit geringer und ich glaube auch der programmieraufwand. Die Betriebsspannung musste ich auf 2,5V heruntersetzen. Ansonsten ist alles klar zu erkennen keine Geisterlichter. Einzig der Kontrast lässt etwas zu wünschen übrig. Sind LCD´s immer so abhängig von der Betriebsspannung? Brauchbar isses nur zwischen 2,2V und 2,7V. Spannungsregler nachrüsten und fertig Arbeit. Jetzt noch USART-Eingabe auswerten und ausgeben. Vorerst DANKE nochmal an ALLE!
:
Bearbeitet durch User
friedrich werdnik schrieb: > Ich weiss nicht in wie weit es egal ist ob ich ein LCD im 1/2- oder > 1/3-Bias betreibe Es hängt von der threshold-Spannung deines LCD ab und deiner Versorgungsspannung des uC. Wenn deine Versorgung bei deinem LCD bei 1/2 einen schlechten Kontrast ergibt, kann 1/3 die Lösung sein. Hat sie jedoch bei 1/3 schlechten Kontrast, kann 1/2 sinnvoll sein. Oder eben man hat vorgegebene 1/2 doer 1/3 und passt die Versorgungsspannung an bis der Kontrast stimmt. Besonders blöd wird es, wenn man die Schaltung mit Batterien versorgt, was bei LCD ja nicht unüblich ist. Da muss man guten Kontrast im ganzen Spannungsbereich haben. Die Atmel-Lösung mit 2k2 braucht viel Strom. Besser ist es: COM 1 2 3 4 | | | | Pin1 --+--(--(--(--47k--+ | | | | Pin2 -----+--(--(--47k--+ | | | Pin3 --------+--(--47k--+ | | Pin4 -----------+--47k--+ | 100nF | GND Die 47k zu 2.5V ergeben niedrigere Ströme, und trotzdem ist die Spannung exakter bei VCC/2, das LCD also Gleichspannungsfrei.
Da geht nichts kaputt. Wichtig ist bei LCDs nur, daß sie auf Dauer gleichspannungsfrei angesteuert werden, also die beiden Phasen des Wechselspannungssignals gleich lang sind (max. 1% Unterschied, IIRC), aber das ist ja nicht schwer. Der Unterschied zwischen 1/2- und 1/3-Bias liegt nur im Verhältnis der Spannungen, die ein LCD-Segment abbekommt. Ein ausgeschaltetes Segment sieht ja beim Multiplexen immernoch eine Wechselspannung, nur ist die eben geringer als beim eingeschalteten Segment. Das Verhältnis beträgt bei der einfachen Schaltung 1:2, und bei 1/3-Bias eben 1:3. Die Abhängigkeit von der Betriebsspannung ist leicht erklärt: der Kontrast eines aktiven Segments zum Hintergrund hängt von der Spannung ab, mit der es angesteuert wird. Logisch: bei 0V sieht man gar nichts, und bei irgendeiner Spannung ist es richtig schwarz. In einem Datenblatt zum Display (also nur das Glas mit der Chemie drin, ohne Elektronik dran) steht dann auch eine untere und eine obere Spannungsschwelle: unterhalb der unteren sieht man noch nichts, und alles über der oberen Schwelle gibts schwarz. Beim Multiplexen muß man also mit der niedrigeren Spannung (für ausgeschaltete Segmente) unterhalb der unteren Schwelle bleiben, und mit der Spannung für eingeschaltete Segmente die obere Schwelle übertreffen, um den bestmöglichen Kontrast zu erreichen. Es ist klar, daß das mit 1/3-Bias leichter fällt (bei manchen Displays liegen die beiden Schwellen so weit auseinander, daß es mit 1/2-Bias nicht geht). Außerdem hängen die Spannungsschwellen von der Temperatur ab. Deshalb haben LCD-Controllerchips einen Eingang, mit dem man die Display-Betriebsspannung ("Kontrastspannung") steuern kann; normalerweise gehört da ein passend dimensionierter Spannungsteiler mit Thermistor ran. Aber wenn der Entwickler das Datenblatt zum Glas nicht hat und daher die richtige Betriebsspannung und ihre Temperaturabhängigkeit nicht kennt, tut's auch 'n Poti; der Benutzer wird schon so lange drehen, bis er was sieht.
Es ist vollbracht! 120 Stunden später ist es endlich vollbracht. Das Display zeigt alles klar an was über USART empfangen wird und sendet auch brav seine Bytes nach Tasten-druck und Tasten-loslassen. Durch einen 2,5V Spannungsregler ist der Kontrast auch sehr gut. Danke an alle. Ohne eure Hilfe hätte ich warscheinlich aufgegeben. Im Anhang Teile meines Codes falls es jemanden interessiert wie ich das gelöst habe in ASM. Ich habe alles in den Interrupt-Routinen gelöst. Mein Kollega (C-Programmierer) meint das man das nicht machen sollte. Ich glaube das diese eine Schleife überbewertet wird. Naja, ich habs halt nicht in einer Schule gelernt sonder zu einem guten Teil hier. Danke nochmal an alle. Ohne eure Hilfe hätte ich warscheinlich aufgegeben.
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.