mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BCD Anzeige in Mikrocontroller bauen


Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich brauche das erste einem um die Logik zu verstehen.

Autor: JensM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joachim R. (bastelbaer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.