Forum

Einloggen | Registrieren | RSS  

janix(R)

23.05.2011,
13:44
 

c8051f020 dezimal zu 7 segment 3 Anzeigen (Elektronik)

Hallo miteinander

Ich habe in C ein Programm geschrieben welches beim betätigen eines Tasters einen Zähler nach oben zählt.
Nun habe ich eine binäre Ausgabe an Leds, im Programm selber habe ich den Wert immer als Dezimal vorhanden. Nun müsste ich ein Codewandler mit einem Array haben wie ich den Dezimal Wert in einer, zehner und hunderter auf die drei 7 Segment Anzeigen ausgebe. Wie teile ich den Dezimal Wert in hunderter zehner und einer auf?
programmiere mit dem uVision keil 3.

Kann mir jemand helfen?

Gruss janix

hws(R)

E-Mail

59425 Unna,
23.05.2011,
15:03
(editiert von hws
am 23.05.2011 um 15:07)


@ janix

c8051f020 dezimal zu 7 segment 3 Anzeigen

» Nun habe ich eine binäre Ausgabe an Leds, im Programm selber habe ich den
» Wert immer als Dezimal vorhanden. Nun müsste ich ein Codewandler mit einem
» Array haben wie ich den Dezimal Wert in einer, zehner und hunderter auf die
» drei 7 Segment Anzeigen ausgebe. Wie teile ich den Dezimal Wert in
» hunderter zehner und einer auf?

Ich vermute, du hast einen binären wert intern? Nur dein µVision zeigt es dir dezimal an (wahlweise auch hex) Welchen Typ hast du für deine Variable definiert?

Wenn du auf Papier den Wert "dreihunderteinundzwanzig" hast, wie kriegst du den mit Bleistift und Überlegen und Kopfrechnen in die drei Ziffern aufgeteilt.
Fallen mit auf Anhieb mindestens 2 Methoden ein. Kennst du noch die Riesentrumms von mechanischen Rechenmaschinen, die auch dividieren konnten? Und dann die Walzen rotieren ließen und ne Stelle nach rechts verschoben.

Wie siehts mit nem Ansatz eines Flußdiagrammes aus?

Hast du schon mal die unter ...|C51k2|examples|...xxx.C Beispiele geladen und durchgesteppt?

Unter ...|examples|dhrytime.c wird z.B. der Timer Interrupt programmiert (wegen deiner vorigen Frage)

(edit: Mist, Backslash macht er nicht, hier durch "|" ersetzt)

» programmiere mit dem uVision keil 3.
Sorry, hab nur die uralte V 1.32 von vor < 1998 und lange nicht mehr gebraucht.

Das Programm / Problem ist auch nicht versionsabhängig. Ja nicht mal µC abhängig. Sieht bei allen C-Versionen (fast) gleich aus.

hws

hws(R)

E-Mail

59425 Unna,
23.05.2011,
15:14

@ janix

Zusatz:

» Nun müsste ich ein Codewandler mit einem
» Array haben wie ich den Dezimal Wert in einer, zehner und hunderter auf die
» drei 7 Segment Anzeigen ausgebe.

Wenn du deine Zahl in die einzelnen Stellen aufgedröselt hast, kommt es auf deine Hardware an, wie das Anzeigeprogramm aussieht. (Das Programm an sich wird wohl weitgehend gleich sein, es ändert sich der Inhalt des 7x10 Arrays - je nachdem an welchem Ausgangspinnchen welches Segment hängt)

Wenn du von jemand ein Beispielprogram erwartest, solltest du zumindest den Schaltplan reinstellen. Und ich wollte so tief eigentlich nicht einsteigen, dass ich dir das komplette Programm schreibe)

hws

janix(R)

23.05.2011,
21:21

@ hws

Zusatz:

» » Nun müsste ich ein Codewandler mit einem
» » Array haben wie ich den Dezimal Wert in einer, zehner und hunderter auf
» die
» » drei 7 Segment Anzeigen ausgebe.
»
» Wenn du deine Zahl in die einzelnen Stellen aufgedröselt hast, kommt es
» auf deine Hardware an, wie das Anzeigeprogramm aussieht. (Das Programm an
» sich wird wohl weitgehend gleich sein, es ändert sich der Inhalt des 7x10
» Arrays - je nachdem an welchem Ausgangspinnchen welches Segment hängt)
»
» Wenn du von jemand ein Beispielprogram erwartest, solltest du zumindest
» den Schaltplan reinstellen. Und ich wollte so tief eigentlich nicht
» einsteigen, dass ich dir das komplette Programm schreibe)
»
» hws


Hallo hws

Danke für deine Antwort. Inzwischen habe ich einen Weg gefunden. Ich stelle gerade meine Hardware fertig :D
Im Keil Simulator auf dem Pc funktioniert es schon mal.
Werde später eventuell noch ein Bild hochladen.

Gruss

hws(R)

E-Mail

59425 Unna,
23.05.2011,
21:51
(editiert von hws
am 23.05.2011 um 21:52)


@ janix

Zusatz:

» Danke für deine Antwort. Inzwischen habe ich einen Weg gefunden.

x1:=Int(x/100)
x:=x-100*x1
x2:=int(x/10)
x:=x-10*x2
X3:= x

Und das mit dem Interrupt?
geralds sucht gern allgemeine Links raus, wo man erstmal monatelang arbeiten muss, um was für das Detail passendes rauszufinden.

» Im Keil Simulator auf dem Pc funktioniert es schon mal.

Simulation der 7Segment Hardware?

hws

janix(R)

23.05.2011,
22:18

@ hws

Zusatz:

» » Danke für deine Antwort. Inzwischen habe ich einen Weg gefunden.
»
» x1:=Int(x/100)
» x:=x-100*x1
» x2:=int(x/10)
» x:=x-10*x2
» X3:= x
»
» Und das mit dem Interrupt?
» geralds sucht gern allgemeine Links raus, wo man erstmal monatelang
» arbeiten muss, um was für das Detail passendes rauszufinden.
»
» » Im Keil Simulator auf dem Pc funktioniert es schon mal.
»
» Simulation der 7Segment Hardware?
»
» hws

Genau so wie du es oben mit dem X beschrieben hast hab ich es programmiert. Gerne würde ich dir ein Video senden. willst du mir deine mail adresse geben. Hier kann man ja nur 150k raufladen.

geralds(R)

Homepage E-Mail

Wien, AT,
24.05.2011,
00:49

@ hws

Zusatz:

---
» Und das mit dem Interrupt?
» geralds sucht gern allgemeine Links raus, wo man erstmal monatelang
» arbeiten muss, um was für das Detail passendes rauszufinden.
»

DU REDEST SCHON WIEDER SCHEISSE !!!!

gerald

---

--
...und täglich grüßt der PC:
"Drück' ENTER! :wink: Feigling!"