PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD bzw 7-Segmentanzeige ansteuern mit 7448



MapedMaster
30.08.05, 21:52
Nabend, in der Schule machen wir eine Anzeige, die die Temperatur ausgibt. Vorne sind 8 Bit, die dann an 2 7448 Bausteine ankommen. Mein Problem besteht bei zweistelligen Zahlen. Weil z.b. mit den Zahlen 0-9 ist es kein Problem, aber wenn man eine zweistellige Zahl nimmt, z.b. die 44, weil dann würde es in der ersten stelle ein in hex-->b ausgeben und an der zweiten Stelle eine 2. Wie wird es angeschlossen? Wie könnte man es realisieren? Gibt es auch so einen Baustein, der mit 8 Bit und nicht nur mit 4?


p.s. mit welchen programm kann ich solche zeichnungen anfertigen?
http://www.linuxforen.de/forums/attachment.php?attachmentid=13619

r00t043
30.08.05, 22:10
-Die Zahl vorher in 2 BCD Ziffern wandeln.
-Ich denke schon das es so ein IC gibt, kenne aber keinen.
-Der Schaltplan wurde mit gschem erstellt.

MapedMaster
31.08.05, 08:59
wie soll ich die zahl in 2 BCD ziffern wandeln? das ist ja mein problem. unser lehrer meinte, das wir keine ic´s verwenden dürfen.

r00t043
31.08.05, 10:32
In C habe ich mal sowas gebaut:

uint8_t bitval[8][3] = {
{ 0, 0, 1 },
{ 0, 0, 2 },
{ 0, 0, 4 },
{ 0, 0, 8 },
{ 0, 1, 6 },
{ 0, 3, 2 },
{ 0, 6, 4 },
{ 1, 2, 8 }
};
Fuer jedes gesetzte Bit, muss dann zu denn BCD-Ziffern ( die am Anfang auf 0 gesetzt wurden ) der entsprechende Wert addiert werden. Falls eine >=10 wird, der naechst hoeherwertigen Ziffer ein 1 zuaddieren und der anderen 10 subtrahieren.
Wobei ich immer noch eine effizientere Variante suche...

derguteweka
31.08.05, 10:39
Moin,


wie soll ich die zahl in 2 BCD ziffern wandeln? das ist ja mein problem. unser lehrer meinte, das wir keine ic´s verwenden dürfen.
Wie waers'n z.b. in C mit sowas:

bcd = hex/10 << 4; /* upper nibble */
bcd |= hex%10 /* lower nibble */

Gruss
WK

MapedMaster
31.08.05, 11:46
wir sollen da auch nichts programmieren. das machen wir erst ein als nächstes thema. wir sollen die zwei bausteine so schalten, das sie die zahlen 0-99 darstellen können.

derguteweka
31.08.05, 12:21
Moin,


wir sollen da auch nichts programmieren. das machen wir erst ein als nächstes thema. wir sollen die zwei bausteine so schalten, das sie die zahlen 0-99 darstellen können.
:confused: Aeeehm - also irgendwie check' ich das Problem nicht richtig: Ich fass' zusammen: Es soll ohne Software und ohne Hardware(ICs) gehen? Dann bleiben doch praktisch nur noch Strippen uebrig - naja, und dann kannst du halt die 4 Bit Eingang des einen Decoders mit 4 Bit von deinen "8 Bit Vorne" verbinden, und die 4 Bit Eingang des anderen Decoders mit den restlichen 4 Bit. Die Zahl muss dann in BCD vorliegen und nicht binaer; d.h. wenn du 45 anzeigen willst, dann steht in den 8 bit 0x45, also dezimal: 69 oder binaer: 01000101. Und was ist jetzt das Problem? :confused:

Gruss
WK

Lokutus2
31.08.05, 12:36
Hi, kann es sein , dass an den 8 Leitungen (Bit) schon ein BCD Code ansteht?

Weil um 99 Anzuzeigen brauch ich nur 7 Leitungen (Bit) mit einem Binär Decoder und nicht mit den 7448 (BCD Decoder).

Warheitstabelle bis 99 schenk ich mir jetzt mal.

Gruß lokutus2

Lokutus2
31.08.05, 12:40
Wir doch noch die Warheitstabelle :ugly:

MapedMaster
31.08.05, 18:49
vielleicht habe ich mich auch falsch ausgedrückt, sorry. von A-H kommt binär eine zahl und ich möchte damit sie richtig dargestellt wird. also wenn die zahl 20 kommt, werden ihm ersten segment die buchstaben a, b, g, e ,d gesteurt und im zweiten segment die a, b, c, d, e, f. aber da für die 20 im binär (100100) nur F und C mit einer log."1" angesteurt werden kommt hinten am display eine 2 und eine 4 raus, also eine 24 raus. mit den ic habe ich vllt auch falsch verstanden. gibts da nicht was von der TTL-Technik? wir machen es so, das wir nichts programmieren. wenn unklarheiten herschen sagt mir behscheid^^

@Lokutus2: das binär system verstehe ich schon ;)

derguteweka
31.08.05, 19:26
Moin,


vielleicht habe ich mich auch falsch ausgedrückt, sorry. von A-H kommt binär eine zahl und ich möchte damit sie richtig dargestellt wird. also wenn die zahl 20 kommt, werden ihm ersten segment die buchstaben a, b, g, e ,d gesteurt und im zweiten segment die a, b, c, d, e, f.

OK, also das geht natuerlich prinzipiell - aber du musst irgendwie - egal ob per SW oder HW - die Zahl 20 von binaer nach BCD umwandeln. Sonst checken die 7448 das nicht, denn die koennen eben nur BCD nach 7-Segment und nichts binaeres darstellen. Die Umwandlung von binaer nach BCD ueber HW ist aber schon eine etwas unangenehme Sache, d.h. du brauchst diverse Gatter, Addierer oder ein ROM oder sowas.


aber da für die 20 im binär (100100) nur F und C mit einer log."1" angesteurt werden kommt hinten am display eine 2 und eine 4 raus, also eine 24 raus. mit den ic habe ich vllt auch falsch verstanden. wir machen es so, das wir nichts programmieren. wenn unklarheiten herschen sagt mir behscheid^^
OK, die 20 binaer ist aber nur 10100, da hast du einen Nuller zuviel reingemauschelt. Damit wuerde dann dein Display 14 anzeigen - und oh' Wunder 0x14 (also hexadezimal) ist justament 20 dezimal. Wenn du allerdings binaer z.b. mal 11001110 ausgeben wuerdest, dann wird wahrscheinlich ziemlich wirres Zeugs aufm Display stehen, denn sowohl 1100 als auch 1110 sind binaer ja groesser als 9 und deshalb kann der Decoder nichts vernuenftiges damit anfangen (Es gibt Decoderchips, die dann auch die Buchstaben A-F aufm 7-Segment ausgeben koennen, afaik koennen die 744x das aber nicht).

Also nochmal: Das ganze geht imho nur entweder mit einer SW, die die Binaerzahl nach BCD umwandelt (und irgendwas cleveres macht, wenn binaer >99 ist) oder mit einer anderen HW, statt oder zusaetzlich zu den 7448ern. Da wirds wohl am einfachsten sein, ein/zwei (mindestens) 256 Byte grosse()s (EP)ROM(s) zu nehmen, 8 Adresseingaenge als Eingang und die 8 Datenausgaenge als Ausgang zu den 7 Segmentanzeigen oder den Decodern - jenachdem...

Gruss
WK

MapedMaster
31.08.05, 20:59
wie heißen die decoder chips, die sowas machen könnten?

E S
31.08.05, 22:29
Hi,

Chips der 74xx Serie gibt es in unzähligen Varianten. Mit und ohne HEX ausgabe.

Man kann sich auch die Verdrahterei und Widerstände zwischen Decoder und Anzeige sparen. Es gibt viele Anzeigen mit eingebautem Decoder. Im Moment fällt mir nur der hier ein:
http://www.ee.vt.edu/cel/datasheets/til311.pdf
Es gibt aber auch welche mit normalen Strichen statt Punkten.

Aber um eine dezimale Anzeige zu erhalten, verwendet man besser den weit verbreieten ICL7106 oder ICL7107. Der bekomm eine analoge SPannung vom Temperatursensor und wandelt die direkt in eine dezimale Anzeige um. Diese Chips sind übrigens in einfachen Multimetern verbaut.
Datenblätter:
http://www.intersil.com/data/fn/fn3082.pdf

Gruß
Elmar

MapedMaster
01.09.05, 20:50
ich weiß jetzt wie ich das machen würde (mit ganz vielen UND und NICHT bausteinen), aber unser lehrer meinte das wäre zu umständlich. E S ich nehme deinen Baustein, den ICL7106 oder ICL7107. unser lehrer hatte auch diesen stein vorgeschlagen. ich danke allen für eure hilfe. wenn was kommt, suche ich erneut um rat.:)