Forum: Mikrocontroller und Digitale Elektronik BCD Anzeige in Mikrocontroller bauen


von Michi (Gast)


Lesenswert?

Hallo ich suche die richtigen logischen ausdrücke für eine BCD Anzeige, 
in meinem Programm bekomme ich das einfach nicht zum laufen.

Für Anzeigenfeld a = B # !C und !B # C und A # D
u.s.w also für b,c,d,e,f,g

von Karl H. (kbuchegg)


Lesenswert?

Versuchs nochmal mit einem Posting.
Aber diesmal: Gib alle Informationen an.
Stell dir einfach vor, du musst jemanden den du vorher noch nie gesehen 
hast, um Hilfe fragen. Wenn er das obige liest, was könnte er dich 
fragen, bzw. was wird er von dir auf jeden Fall mal wissen wollen.

von Peter D. (peda)


Lesenswert?

Du meinst vermutlich eine 7-Segment LED-Anzeige.
Sowas macht man einfach mit ner Tabelle:

Beitrag "ADC mit Multiplexanzeige"


Ein MC ist nicht so der Logik-Knilch, d.h. damit würde man nur unnötig 
viel Code erzeugen.
Dagegen kann er super fix eine Memoryadresse (Tabellenzugriff) auslesen.


Peter

von Michi (Gast)


Lesenswert?

@ Karl heinz Buchegger
Danke für den Tipp ich bin noch nicht so lange in Forum.
Ja ich möchte eine 7 Segment Anzeige bauen, kann man die Logik Ausdrücke 
micht meit einem KV Diagramm erstellen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Ja ich möchte eine 7 Segment Anzeige bauen, kann man die Logik Ausdrücke
> micht meit einem KV Diagramm erstellen?

Schon, aber was hat das mit einem Microcontroller zu tun?

von Michi (Gast)


Lesenswert?

Ich brauche das erste einem um die Logik zu verstehen.

von JensM (Gast)


Lesenswert?

Die 7-Segment Anzeige steuert man mit einen Mikrokontroler normalerweise 
nicht mit logischen Funktionen an. Da müsste für jedes Segement eine 
entsprechende Auswertung gemacht werden (ist möglich aber ein zu grosser 
Aufwand).

Dies löst man einfacher mit einer Liste. Jedes Element der Liste enthält 
einen Wert (ein Byte) für alle Segmente. Zum anzeigen einer Ziffer muss 
dann nur das entsprechende Element aus der Liste gelesen werden und 
dieses auf den Port ausgegeben werden.

Gruss JensM

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wo ist da das Problem?

   --a--
  |     |
  f     b
  |     |
   --g--
  |     |
  e     c
  |     |
   --d--

Nimm Dir einen Zettel, male eine Tabelle mit 7 Spalten und zehn Zeilen 
drauf.

Und male Dir in jede Zeile die gewünschten Muster der Segmente, mit 
einer 1 für ein leuchtendes und einer 0 für ein nicht leuchtendes 
Segment.

Bei der 0 beispielsweise leuchten die sechs Segmente a-f, g leuchtet 
nicht.

Das machst Du für alle (benutzten) Kombinationen der vier 
Eingangssignale, und schon kannst Du Dir Gleichungen für jedes einzelne 
Segment herausziehen.

Segment a beispielsweise leuchtet bei den Ziffern 0 2 3 5 6 7 8 und 9, 
also nur bei 1 und 4 nicht.

Wenn Du so ein 7-Segment-Display mit einem µC ansteuerst, dann wird das 
ganze natürlich viel einfacher, da benötigst Du keinerlei 
Logikgleichungen, sondern nur eine Tabelle mit 10 bzw. 16 Einträgen. 
Jeder Eintrag ist 7 Bits (oder 8, incl. Dezimalpunkt) groß und enthält 
das zum Tabellenindex passende Bitmuster.

Angenommen, Segment a entpricht Bit 0, dann ist die 0 (bei der die 
Segmente a-f leuchten) also mit dem Wert 0x3F ausgedrückt.

Die 1 (bei der die Segmente b und c leuchten) ist damit mit dem Wert 
0x06 ausgedrückt.

Und so weiter.

von Karl H. (kbuchegg)


Lesenswert?

Kann natürlicha auch sein, dass das einfach nur eine Hausaufgabe ist.

Also Michi.
Was hast du bisher getan, um dein Problem in den Griff zu kriegen?
(Ich frag nach, damit weitere Antworten auf deinen Wissenstand 
zugeschnitten werden können. Ist auch so ein Punkt, den man sich bei 
einer Fragestellung an Unbekannte überlegen sollte: Was muss ich ihm 
sagen, damit er erkennen kann, wo meine Probleme anfangen bzw. was ich 
schon selbst rausgefunden hab)

Was ich tun würde:
Ich würd mir mal eine Tabelle machen, in der die möglichen 
Eingangssignale an den 4 Eingangsleitungen in der einen Achse und die 7 
Ausgangssignale in der anderen Achse gegenüber stehen und so eine Matrix 
bilden. Und dann füll ich einfach mal die Matrix aus, welches 
Ausgangssegment auf 1 sein muss und welches auf 0, wenn eine bestimmte 
Eingansgkombination vorliegt.

Sowas in der Art

     0  1  2  3  4  5

 D   0  0  0  0  0  0
 C   0  0  0  0  1  1
 B   0  0  1  1  0  0
 A   0  1  0  1  0  1
---+-------------------------------------------
  a| 1  0  1  ....
  b| 1  1  1  ...
  c| 1  1  0
  d| 1  0  1
  e| 1  0  1
  f| 1  0  0
  g| 0  0  1

Und dann heist es in dieser Tabelle mal zu stöbern und nachzusehen, 
welche Bedingungen erfüllt sein müssen, damit zb. Ausgangsleitung a 
gleich 1 sein kann.

Hast du sowas schon gemacht?

(PS: Und natürlich ist eine Tabelle sehr viel einfacher, als da jetzt 
grossartig nach Logikzusammenhängen zu suchen.
Ich geb den Denkanstoss auch hauptsächlich deswegen, damit du siehst 
dass es immer unklug ist, sich ohne Vorbereitung an ein Programm zu 
setzen. Programmlogik entsteht nicht während man im Editor sein Programm 
schreibt. Programmlogik entsteht im Vorfeld, wenn man das Problem 
untersucht und analysiert und sich überlegt, wie man das Problem lösen 
könnte).
Und ja: Papier und Bleistift sind ausgezeichnete Werkzeuge um eine 
Problemanalyse zu machen.


(PS: In obige Tabelle hab ich zufällige 0 und 1 eingesetzt. Es geht ums 
Prinzip. Die Arbeit musst du machen)

von Peter D. (peda)


Lesenswert?

Michi wrote:
> Ich brauche das erste einem um die Logik zu verstehen.

Z.B. einfach aus der Innenschaltung des 7447 abmalen:

http://www.ece.uncc.edu/ecelab/data-sheets/DM74LS47bcd27.pdf


Aber für die Realisierung mit nem MC ist das völlig ungeeignet.


Peter

von Joachim R. (bastelbaer)


Lesenswert?

Hi, falls Interesse besteht, ich hab mir vor kurzem für meine SPS eine 
4-Sieben-Segmentanzeige mit 16 Eingängen und ein paar Tastern gebastelt. 
Dabei kannst du die Anzeige auf Hex, Bcd und Binär umstellen, ok binär 
sieht nicht ganz so gut aus, aber mir reichts. Ich könnte dir sowohl den 
Schaltplan als auch mein Basicprogramm posten. Das ganze hab ich mit 
einem Mega 16 und einer gemultiplexten Anzeige gemacht.
Das Prinzip ist das gleiche wie Jens schrieb, mit den Listen, ausser die 
Binäranzeige, die wird bitcodiert.

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.