Forum: Mikrocontroller und Digitale Elektronik Ansterung eines 7-Segment LCD-Displays


von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hallo Leute,

ich stehe gerade vor der Frage, wie ich ein solches LCD-Display hier am 
besten ansteuern kann:

http://www.reichelt.de/?ACTION=3;LA=4;GROUP=A5211;GROUPID=3005;ARTICLE=10182;START=0;SORT=preis;OFFSET=1000

Die Problematik ist, dass normales Multiplexing nicht funktioniert, da 
man bei diesem Display nicht einfach einzelne Ziffern abschalten kann, 
indem man ihnen die Versorgungsspannung kappt -- oder gibt es da doch 
irgendeine Moeglichkeit, die ich nicht sehe?

Ich koennte im Prinzip Treiberbausteine benutzen aber das finde ich ein 
bisschen verschwenderisch (die sind teuer), ausserdem hab ich nicht die 
mit der richtigen Logik da so dass ich alles nochmal invertieren 
muesste.

Habe mir auch ueberlegt, dass man ja die Segmente von einem Bus 
abgreifen koennte und nochmals jedes einzelne dann mit einem UND-Gatter 
und einer Selektionsleitung verbindet (hoffe ihr versteht, was ich 
meine). Da ich aber nur NORs habe wird auch das etwas aufwendig, da man 
dann doch ne Menge Gatter braucht. Funktionieren wuerde es aber schon.

Vielleicht hat ja von Euch einer ne bessere Idee?

Gruesse,
Michael

von Falk B. (falk)


Lesenswert?

@ Michael G. (linuxgeek)

>Die Problematik ist, dass normales Multiplexing nicht funktioniert, da
>man bei diesem Display nicht einfach einzelne Ziffern abschalten kann,
>indem man ihnen die Versorgungsspannung kappt -- oder gibt es da doch

Doch. Allerdings brauchen die Dinger eine reine Wechselspannung, damit 
sie nicht kaputt gehen. D.H. der Backplaneanschluss muss immer getoggelt 
werden, ebenso die Segmente. Ist aber kein Propblem, sind ne Handvoll 
Befehle.

>mit der richtigen Logik da so dass ich alles nochmal invertieren
>muesste.

Und? Du hast doch sowieso einen uC, oder?

>Habe mir auch ueberlegt, dass man ja die Segmente von einem Bus
>abgreifen koennte und nochmals jedes einzelne dann mit einem UND-Gatter
>und einer Selektionsleitung verbindet (hoffe ihr versteht, was ich
>meine). Da ich aber nur NORs habe wird auch das etwas aufwendig, da man
>dann doch ne Menge Gatter braucht. Funktionieren wuerde es aber schon.

Du willst eine Ansteuerung mit reinen NORs bauen? Na mal viel Spass . . 
.

>Vielleicht hat ja von Euch einer ne bessere Idee?

nimm einem kleinen uC, damit kannst du wenigstens zwei Stellen direkt 
ansteuern. Wenn es mehr sein sollen nimm Schieberegister.

AVR-Tutorial: Schieberegister

MfG
Falk

von crazy horse (Gast)


Lesenswert?

"diskret": CMOS 4054,4055,4056

von Benedikt K. (benedikt)


Lesenswert?

Falk Brunner wrote:

>>Die Problematik ist, dass normales Multiplexing nicht funktioniert, da
>>man bei diesem Display nicht einfach einzelne Ziffern abschalten kann,
>>indem man ihnen die Versorgungsspannung kappt -- oder gibt es da doch
>
> Doch. Allerdings brauchen die Dinger eine reine Wechselspannung, damit
> sie nicht kaputt gehen. D.H. der Backplaneanschluss muss immer getoggelt
> werden, ebenso die Segmente. Ist aber kein Propblem, sind ne Handvoll
> Befehle.

Da liegst du falsch, Miachael hat schon recht: Man benötigt mehr als 2 
Pegel um ein LCD zu multiplexen. Atmel hat dazu glaube ich auch eine 
Application Note, da wird das über Spannungsteiler und Tristate 
erreicht.
In diesem Fall ist es aber anderst: Das LCD wird statisch angesteuert, 
also nicht gemultiplexed. BP wird mit einer Rechteckspannung (einige 
100Hz bis wenige kHz) angesteuert. Dann gilt:
BP = Segment -> Segment aus
BP != Segment -> Segment an

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

> Doch. Allerdings brauchen die Dinger eine reine Wechselspannung, damit
> sie nicht kaputt gehen. D.H. der Backplaneanschluss muss immer getoggelt
> werden, ebenso die Segmente. Ist aber kein Propblem, sind ne Handvoll
> Befehle.

Verstehe ich jetzt nicht ganz...? Bloederweise gibt es zu den Teilen 
kein echtes Datenblatt (zumindest hat weder Reichelt noch C eines und 
sonst habe
ich auch keines gefunden) nur ein Bild mit der Pinbelegung.

D.h. jetzt man legt an die Anschluss fuer das back panel eine Frequenz 
an? Und an Col/COM kommt Masse?


> Du willst eine Ansteuerung mit reinen NORs bauen? Na mal viel Spass...

Nein natuerlich nicht. Du hast einen Bus und mit der Logik greifst Du 
halt Du die Leitungen halt so ab dass Du immer ein Segment auswaehlen 
kannst. Ein Eingang des Gatters geht dann quasi auf den Datenbus und ein 
zweites wird dann aktiviert (AND), wenn gerade Daten fuer genau dieses 
Segment anliegen. Verstehst Du?

Mit dem Gedanken Schieberegister habe ich auch schon gespielt... 
gefaellt mir aber spontan jetzt nicht so. Haette sogar welche da... will 
mir ja jetzt deswegen keine neuen Teile holen das is nur ein 
Spassprojektlein, soll eine Digitaluhr werden, so zum warm werden quasi 
;)

Ach ja in dem Zusammenhang: Isch will einen Impulsgeber zum Einstellen 
der Zeit einsetzen... hab damit auch noch nicht gearbeitet, daher komme 
ich wahrscheinlich damit auch nochmal an ;)

von Falk B. (falk)


Lesenswert?

@ Benedikt K. (benedikt)

>Da liegst du falsch, Miachael hat schon recht: Man benötigt mehr als 2
>Pegel um ein LCD zu multiplexen. Atmel hat dazu glaube ich auch eine

Stimmt, hast Recht, ich war gedanklich bei der normalen Ansteuerung.

MFG
Falk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael G. wrote:

> D.h. jetzt man legt an die Anschluss fuer das back panel eine Frequenz
> an? Und an Col/COM kommt Masse?

Guck dir mal die Datenblätter der LCD-AVRs an (das sind die 9er AVRs:
ATmega169, ATmega329/3290, ATmega649/6490).  Erstens könntest du
natürlich gleich einen solchen nehmen, zweitens ist dort auch ein
wenig beschrieben, wie die Ansteuerung funktioniert.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Ich seh schon, das wird schwieriger als urspruenglich vermutet. Gut dass 
ich nochmal nachgefragt habe. Danke fuer den Tip.

von maddin (Gast)


Lesenswert?

Hallo Michael,

schau dir mal das datenblatt zu dem "74HC 4543" an, den gibts auch be 
reichelt.

ich habe genau dieses display auch mit hilfe dieses bausteins 
angesteuert.
die lösung ist zwar recht aufwendig, aber wenn du spass am basteln hast, 
dann bist du damit genau richtig bedient.

dieser baustein verfügt schon über den "Ph" eingang, mit deren hilfe 
sich die ausgänge toggeln lassen. du musst dann nur noch dafür sorgen 
das du an der backplane des displays genau die gegenphase anlegst, das 
kannst du erreichen indem du das ph signal mit hilfe eines bc547 einfach 
invertierst, oder einen invertierten uc pin dafür abstellst.

um die daten verteilen zu können, werden alle datanpins parallel 
geschaltet. ABCD. mit den strobe leitungen kannst du die daten in das 
interne latch laden.

ich habe das mal vor jahren gemacht, diese methode ist recht aufwändig, 
da du für jedes segment einen treiber benötigst, das liegt daran das das 
display nur eine backplane besitzt, und ein multiplexing somit 
ausgeschlossen wird, ansonsten könntest du dir einiges sparen. auf dem 
ph pin kannst du mit einer frequenz von rund 50hz und einem 
tastverhältnis von 50% 50% ein gutes ergebnis erziehlen.

es gibt diese displays auch mit getrennter backplane.

gruß,
m.

von H. W. (digger72)


Angehängte Dateien:

Lesenswert?

Mit µC lassen sich auch LCDs mit mehreren Backplanes
ansteuern (siehe Anhang).
Für einfache Displays glaube ich einmal eine Schaltung mit 
CMOS-EXOR-Gattern (geschaltete Inverter) gesehen zu haben.
Einfach einen Takt von 30-200Hz an BP und jeweils den ersten 
Gattereingang.
Die zweiten Eingänge kommen vom µC.
Damit lassen sich auch andere Symbole als BCD erzeugen.

Gruss
Digger

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hi Maddin,

danke fuer Deinen Tip allerdings hatte ich gehofft ohne zusaetzliche 
Treiberbausteine auszukommen -- ausserdem nehm ich mir da ja schon fast 
wieder zuviel ich will ja lernen. Und mal generell zu wissen wie die 
Geschichte funktioniert sich sicherlich von Vorteil.

Digger72, danke! Das Dokument ist ja sehr vielversprechend, wird gleich 
mal ausgedruckt ;)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Was spricht denn gegen ATmega169 & Co?

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

> Was spricht denn gegen ATmega169 & Co?
Dass ich keinen davon gebunkert habe und ich heute nich schon wieder 2 
Stunden fuer das hohe C verplempern will? ;)

Also das mit dem Duplexing scheint ja nen bissel nen echtes Problem zu 
sein... "only (S/2)+2 MCU pins are required to drive", das sind dann 
28/2+2 = 16. Hmmm... die 16 koennte man aber doch so grade noch 
zusammenkratzen denke ich mal? Das Display scheint ja zwei 
COM-Anschluesse zu haben also isses wohl ein "duplexed LCD". Allerdings 
kann man sich nich sicher sein, das "Datenblatt" oder die 
Produktbezeichnung gibt darueber keinen Aufschluss :(

Mir is im Moment grad unklar warum man da nich multiplexen kann naja 
spaeter denk ich mal drueber nach wenn ich Zeit hab :/

Michael

von Benedikt K. (benedikt)


Lesenswert?

Michael G. wrote:

> Also das mit dem Duplexing scheint ja nen bissel nen echtes Problem zu
> sein... "only (S/2)+2 MCU pins are required to drive", das sind dann
> 28/2+2 = 16. Hmmm... die 16 koennte man aber doch so grade noch
> zusammenkratzen denke ich mal? Das Display scheint ja zwei
> COM-Anschluesse zu haben also isses wohl ein "duplexed LCD". Allerdings
> kann man sich nich sicher sein, das "Datenblatt" oder die
> Produktbezeichnung gibt darueber keinen Aufschluss :(

Das LCD hat 40 pins und 4 * 8 =32 Segmente. Also wird nichts 
gemultiplexed. beide BP Pins sind miteinander verbunden.

> Mir is im Moment grad unklar warum man da nich multiplexen kann naja
> spaeter denk ich mal drueber nach wenn ich Zeit hab :/

Die Theorie hinter einer gemultiplexten LCD Ansteuerung ist etwas 
komliziert (vor allem wenn man die Kurvenformen betrachtet). Das ganze 
zu erklären dauert etwas zulange, daher hier nurmal die wichtigsten 
Punke:
- Die Spannung zwischen den Zeilen/Spalten (also die die ein Segment 
letztendlich sieht) muss DC frei sein
- Ein Segment "leuchtet" sobald die Spannung einen bestimmten Wert 
überschreitet, egal ob positiv oder negativ. Wenn man sich jetzmal bei 
einer LED Multiplexanzeige die Spannung anschaut, sieht man, dass die 
ausgechalteten LEDs eine Spannung von -5V bekommen. Die LEDs sind aus, 
da sie nur auf eine richtig gepolte Spannung reagieren. Ein LCD leuchtet 
dann aber. Daher muss man mit ein paar Tricks arbeiten und die 
Spannungen so wählen, dass die Schwellspannung bei nicht aktiven Zeilen 
(=Backplanes) gerade so noch nicht erreicht ist, damit das Segment 
leuchtet. Daher ist der Kontrast immer etwas eingeschränkt, da die 
Schwellspannung nicht ein fester Punkt ist, sondern eine mehr oder 
weniger steile Kennlinie.

Schau dir mal das Datenblatt des PCF8577 an, da ist das ganze 
einigermaßen gut dargestellt, wie die Spannungen bei den 
unterschiedlichen Muxraten aussehen.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Joerg, wie war das doch gleich mit dem Atmega169? *g Hm ich seh grad 
dass ich dafuer leider keinen Programmer habe, zumindest noch nicht. 
Alles verflixt...

Theoretisch koennte ich ja auch nen 32er nehmen der haette genug 
Portpins dafuer ;) Also irgendeine pragmatische Loesung muss her... 
danke fuer die Hinweise, Benedikt, muss mir das mal durch den Kopf gehen 
lassen.

von Falk B. (falk)


Lesenswert?

@ Michael G. (linuxgeek)

>Theoretisch koennte ich ja auch nen 32er nehmen der haette genug
>Portpins dafuer ;) Also irgendeine pragmatische Loesung muss her...

Nimm Schiebegregister, 74HC595. Schnell, billig, braucht drei Pins.

MFG
Falk

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

OK ich glaube auch langsam dass es dann auf Schieberegister 
hinauslaeuft. Mal sehen wieviele ich davon dann brauche, habe welche aus 
der 40xx-Serie die sollten hoffentlich tun...

von Peter D. (peda)


Lesenswert?

Michael G. wrote:
> OK ich glaube auch langsam dass es dann auf Schieberegister
> hinauslaeuft. Mal sehen wieviele ich davon dann brauche, habe welche aus
> der 40xx-Serie die sollten hoffentlich tun...

Für 4 Digits brauchst Du 4 Stück 74HC595.


Peter

von Falk B. (falk)


Lesenswert?

Ja, tun sie.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Was für einen Programmer hast du denn, dass er den (eigentlich schon
sehr alten) ATmega169 nicht unterstützt?  Abgesehen vielleicht von
einem AVR910-artigen sollte es den Programmer doch sowieso kaum
interessieren, was genau für ein AVR da hinten dran hängt (und beim
AVR910 musst du halt mal einen Firmwareupgrade machen).

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Ich benutze den STK500, aber der ATmega 169 kommt im TQFP-64-Gehaeuse 
daher und dafuer hab ich immo kein Modul... kommt spaeter mal. Und da 
jetzt was zusammenzuimprovisieren is jetzt nich grad das wahre ;) Hab 
ohnehin erst kuerzlich wieder Unsummen in das Hobby investiert da darf 
ich garnich dran denken ;)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Achso... da gibt's aber auch Adapterplatinchen für den TQFP-Kram.
Was den STK502 so teuer macht, ist ja nur diese ZIF-Fassung.

Oder eben gleich eine Platine für ATmega169 + LCD entwerfen.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Yaps ich weiss da gibbet ein Aufsteckboard sogar eines wo schon ein LCD 
mit drauf ist (gibt es z.B. bei Segor). Aber wie gesagt: >100EUR nicht 
im Moment. Habe das aber schon im Auge, das noch aufzuruesten. Ich 
dachte faengste mal klein an...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nein, das Aufsteckboard ist der STK502 mit der teuren ZIF-Fassung.

Ich meinte so 'ne einfache Adapterplatine, auf die man einen TQFP
auflöten kann und die die Pins nach draußen auffächert.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Das waere natuerlich eine Moeglichkeit... aber dann is das IC halt auf 
der Platine... und loet das dann mal wieder aus. Is mir zuviel Gefrickel 
;) Ich werde es jetzt mit den Schieberegistern versuchen und wenn isch 
brauchbare Ergebnisse habe werde ich es Euch wissen lassen. Kann 
irgendwo auch nicht angehen dass man da schon zu solchen Geschuetzen 
greifen muss nur fuer so ein kleines LCD, da freu ich mich schon auf die 
vollgrafische OLED, die ich mir bestellt hab :D Na sups ich seh grad die 
haben's nich mehr im Programm und daher nicht geliefert :(

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael G. wrote:

> Das waere natuerlich eine Moeglichkeit... aber dann is das IC halt auf
> der Platine... und loet das dann mal wieder aus.

Einfacher als einlöten: mit der Heißluftpistole.

Ich würde aber vermutlich angesichts des geringen Preises das Teil
auf der Adapterplatine lassen (für künftige Experimente) und die
fertige Schaltung mit einem zweiten aufbauen.

von tastendrücker (Gast)


Lesenswert?

Also ich hab' immer das passende Ansteuer-IC dazu genommen (ICL 7106 CPL 
glaube ich). Lässt sich einfachst vom µC ansprechen.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Joerg: Hoert sich gut an ich werde sicher auch mal mit diesem Controller 
experimentieren, aber fuer den Moment und fuer diese einfache Anwendung 
muss es auch ein Atmega8 (max. 32 und nichtmal das wirklich) tun.

Ja ich koennt etz wieder zum hohen C fahren nur um dann zu merken dass 
er das, was ich brauche, mal wieder nicht auf Lager hat... oder es mit 
den Sachen machen, die ich habe, und nerven sparen ;) Wenn es denn 
wirklich ueberhaupt nich klappen will kann ich immer noch ueber 
ansteuerics nachdenken. Aber: solche ICs sind ueblicherweise recht teuer 
und wenn ich schon nen Mikrocontroller hab wozu das? Den code braucht 
man auch nur einmal schreiben und hat ihn dann...

von maddin (Gast)


Angehängte Dateien:

Lesenswert?

hier mal ein paar bilder der anwendung mit dem 74hc4543

gruß,
m.

von maddin (Gast)


Angehängte Dateien:

Lesenswert?

aufgebaute bg.

von maddin (Gast)


Angehängte Dateien:

Lesenswert?

im betrieb

von maddin (Gast)


Angehängte Dateien:

Lesenswert?

einzeln

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Schaut fast so aus als ob ich mir so Treiberbausteine holen werde... die 
Schieberegister die ich daheim habe passen irgendwie nich so recht 
(4006). Auf der besch... C-Homepage findet man mal wieder nichts jetzt 
kann ich nur hoffen dass die die Dinger auch haben :/ Thx for the tip. 
Beim Reichelt kost er 40ct dann kost er beim C wahrscheinlich >1EUR.

von maddin (Gast)


Lesenswert?

@Michael g,

>>danke fuer Deinen Tip allerdings hatte ich gehofft ohne zusaetzliche
Treiberbausteine auszukommen -- ausserdem nehm ich mir da ja schon fast
wieder zuviel ich will ja lernen. Und mal generell zu wissen wie die
Geschichte funktioniert sich sicherlich von Vorteil.<<


>>Habe mir auch ueberlegt, dass man ja die Segmente von einem Bus
abgreifen koennte und nochmals jedes einzelne dann mit einem UND-Gatter
und einer Selektionsleitung verbindet (hoffe ihr versteht, was ich
meine). Da ich aber nur NORs habe wird auch das etwas aufwendig, da man
dann doch ne Menge Gatter braucht. Funktionieren wuerde es aber schon.<<

...also:

treiberbausteine sind dir zu teuer, naja, 38cent reißen was weg.

nor und nand sind dir zu aufwendig, ein kleiner passender treiber nimmt 
dir evtl. zu viel am spaß, ganz ehrlich:

irgentwie widersprichst du dir selbst so stark, nun gut, ich habe mit 
diesen schaltungen wunderbar den einstieg in die lcd ansteuerung 
gefunden,
klar kannst du da auch schieberegister hin nageln, oder was weiß ich...

meinen segen hast du, viel erfolg.

gruß,
m.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es gibt CD4543 und 74HC4543. Für die Kommapunkte braucht man noch extra 
EXOR-Gatter, also 74HC86 oder CD4030. Mit zwei Gattern kann man noch den 
Wechselspannungsgenerator bauen, 32Hz wird gern benutzt, aber das ist 
unkritisch, sollte halt nicht flackern, aber nicht so schnell wechseln, 
sonst verschmiert die Anzeige durch ihre große Kapazität.

von maddin (Gast)


Lesenswert?

hi,

ich nutze einfach 5x 4543, mit dem letzten lässt sich bei richtiger 
verdrahtung jeder punkt einzeln ansprechen, wenn man die richtigen 
segmentleitungen verwendet...

gruß,
m.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Die Dezimalpunkte brauche ich nicht in diesem Fall daher werde ich es 
jetzt mal mit dem 74HC4543 wagen.

Maddin: Ich widerspreche mir nicht, sondern habe mich lediglich fuer 
einen der unterschiedlichen Ansaetze von Euch entschieden. Ferner habe 
ich leider nur begrenzt Zeit. Da ich diese LCD-Displays etwas 
unterschaetzt habe verwende ich jetzt eben die Treiberbausteine, denn 
das ist weniger umstaendlich als mit Schieberegistern und ein 
vergleichbarer Schaltaufwand. OK ein paar mehr Portpins braucht man, 
allerdings hat der Atmega8 hierfuer genug.

Danke fuer Eure Anregungen,

Michael

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

He da is mir gleich noch ne gute Idee gekommen im Zusammenhang mit 
dieser Uhr: Ich bau mir meine Geek-Version gleich mit :D Die kommt mit 
29 LEDs als Ausgabe klar (=

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.