7-Segmentanzeige mit versch. Ports des ATmega8 ansteuern

OP #3045619
Lesenswert?
• ▲
▼
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
Gast #3045648
Lesenswert?
• ▲
▼
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.
Gast #3046992
Lesenswert?
• ▲
▼
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
Gast #3047173
Lesenswert?
• ▲
▼
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 !!!
#3047206
Lesenswert?
• ▲
▼
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.
Gast #3047218
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.