Hallo, ich habe ein 4x7-Panel gebaut (gem. Anode, mit Vorwiderst. und Transistoren) um es an ein ATmega8 anzuschließen. Das Besondere: Die Segmentansteuerungen a-f und T,H,Z,E liegen so nebeneinander, dass sie direkt (kreuzungsfrei) an den ATmega8 über ein Steckboard ansteckbar sind. Damit sind die PINS 2-14 (ohne 7 und 8 (Vcc und GND)) auf der einen Seite des Mikrocontrollers belegt (geht in ein kleines Gehäuse und ist sehr übersichtlich). Jetzt mein Problem: Wie muss der C-Code aussehen, damit die Dezimalzahlen richtig angezeigt werden. Ich fand nur Darstellungen die sich auf einen Port beziehen. Ich teile aber die Segmente so auf: PD0 = a PD1 = b PD2 = c PD3 = d PD4 = e PB6 = f PB7 = g PD5 = T PD6 = H PD7 = Z PB0 = E
Du musst halt zwei Ports setzen anstatt nur einen. Oder was war die Frage?
Uwe Rößling schrieb: > Ich > teile aber die Segmente so auf: Ich teil(t)e sie noch anders auf und steuerte sie so an: http://www.hanneslux.de/avr/divers/pm24/vm24ko01.asm Allerdings nicht in C, ist mir zu kryptisch. Das Prinzip ist aber dasselbe. ...
Lookup-Tabelle, in der für jede Ziffer 0 bis 9 in 2 Bytes das Muster für die 2 Ports steht. Nicht vergessen: Portzustand einlesen => Pins maskieren => Muster setzen => Portzustand ausgeben. Einlesen auf PORTx, nicht PINx.
Vielleicht hilft Dir der Beitrag: Beitrag "Re: Compiler Optimization Level (-O1) ändert Ablauflogik?"
... danke erstmal. Es funktioniert noch nicht richtig. Muss da noch mehr in die Theorie einsteigen.
Uwe Rößling schrieb: > PD0 = a > PD1 = b > PD2 = c > PD3 = d > PD4 = e > PB6 = f > PB7 = g > PD5 = T > PD6 = H > PD7 = Z > PB0 = E Du hast einen Fehler hier in der Auflistung. Hast Du schon mal was von Hexadecimalzahlen gehört? Die gehen so: 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f! Werte wie T H Z und g kommen da garnicht vor und zw. Groß- und Minischreibung wird garnicht unterschieden (e/E). So müsste es richtig lauten: PD0 = 1 PD1 = 2 PD2 = 3 PD3 = 4 PD4 = 5 PB6 = 6 PB7 = 7 PD5 = 8 PD6 = 9 PD7 = a PB0 = b
Utzel schrieb: > So müsste es richtig lauten: Nein. a-g sind die 7 Segmente und THZE, Tausender, Hunderter..., sind die Anoden. mfg.
Uwe Rößling schrieb: > PD0 = a > PD1 = b > PD2 = c > PD3 = d > PD4 = e > PB6 = f > PB7 = g Das sind 7 Balken, die du so einschalten musst, dass du das als Zahl erkennst. Wo ist denn das Problem? Das ist ein bisschen Bitgefriemel. mfg.
Thomas Eckmann schrieb: > Utzel schrieb: >> So müsste es richtig lauten: > Nein. Darum hab ich ja extra im Konjunktiv geschrieben - "müsste" und nicht "muss".
Utzel schrieb: > Darum hab ich ja extra im Konjunktiv geschrieben - "müsste" und nicht > "muss". Was du geschrieben hast, ist totaler Stuss. Da ändert der Konjunktiv auch nichts dran. mfg.
Thomas Eckmann schrieb: > Utzel schrieb: >> Darum hab ich ja extra im Konjunktiv geschrieben - "müsste" und nicht >> "muss". > Was du geschrieben hast, ist totaler Stuss. Da ändert der Konjunktiv > auch nichts dran. Willst du mir etwa damit unterstellen, dass ich von Hexadecimalzahlen keine Ahnung habe? Schau doch mal bei Wikipedia nach und lese den Artikel zu Hexadecimalzahlen. Dort wirst Du erkennen, dass nur die Buchstaben von a bis f (für 10 bis 15) verwendet werden dürfen !!!
Utzel schrieb: > Willst du mir etwa damit unterstellen, dass ich von Hexadecimalzahlen > keine Ahnung habe? Du verstehst sicher ganz richtig was Hexadezimalzahlen sind. (Du solltest sie aber mit 'z' schreiben.) Es geht hier aber nicht um Hexadezimalzahlen, sondern um Segment und Spaltenbezeichnungen und im Zweifelsfall um #define Macros. Axel
Utzel schrieb: > Willst du mir etwa damit unterstellen, dass ich von Hexadecimalzahlen > keine Ahnung habe? Du solltest mal ein bisschen lesen und darüber nachdenken, anstatt dich hier so aufzuplustern. Ich habe dir doch ganz sachlich mitgeteilt, was du falsch verstanden hast: Thomas Eckmann schrieb: > a-g sind die 7 Segmente und THZE, Tausender, Hunderter..., sind die > Anoden. Dann kamst du mit deinem Konjunktiv. Das Ganze hat mit Hexadezimalzahlen überhaupt nichts zu tun. Und es geht nicht darum, ob du etwas von Hexadezimalzahlen verstehst oder nicht. mfg.
Thomas Eckmann schrieb: > Wo ist denn das Problem? Das ist ein bisschen Bitgefriemel. Muss doch nicht sein - man macht sich eine Tabelle 1 mit den Segmenten für die darzustellenden Zahlen, die hat halt einen etwas anderen Inhalt, wenn die Anschlüsse nicht a,b,c.. sind, aber ist genauso gross. Wenn 2 Prots betroffen sind, dann halt 2 Bytes pro Ziffer. In gleicher Weise macht man eine Tabelle 2, für die gleichen Ports, mit den Bitmustern für das Einschalten der Einer, Zehner usw., und zur Ausgabe verodert man die beiden Tabellen, um z.B. eine 5 an der Zehnerstelle auszugeben. Und bis dahin hat man noch nicht ein einziges Bit verschieben müssen. Und bitte verschont mich mit Hexadezimal-Quatsch, Siebensegment hat mit Hexadezimalzahlen nicht das geringste zu tun. Gruss Reinhard
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.