Hallo Community, ich arbeite gerade an einem Projekt, das später ein "Taschenrechner" werden soll. Ich habe dazu 3x Binärzähler, 3x BCD-Dekoder, 3x 7-Segment-Anzeige, 1x ATMega32 und 16 Taster. (Zahleneingabe, Rechenarten auswählen) Das Ganze soll so ablaufen: Man gibt eine Zahl ein. Diese wird life angezeigt. Dann wählt man eine Rechenart aus und gibt die 2. Zahl ein. Dabei erlischt die 1. Zahl und man sieht die 2. auch wieder life. Danach drückt man auf die Ergebnistaste und der Mega32 fängt schön zu rechnen an. Er gibt den Binärzählern dann jeweils so viele Impulse, wie sie brauchen, um die errechnete Zahl dazustellen. Welche Sprache würdet ihr hierfür verwenden?
also Fp operationen sozusagen im
in asm zu machen ist aufwändig und fehlerbehaftet,.. also wenn du es schnell und kompfortabel haben willst machs in C/c++ bzw. basic,.. grüße
Simon Hat einen nick wrote: > Hallo Community, > > ich arbeite gerade an einem Projekt, das später ein "Taschenrechner" > werden soll. Ich habe dazu 3x Binärzähler, 3x BCD-Dekoder, 3x > 7-Segment-Anzeige, 1x ATMega32 und 16 Taster. (Zahleneingabe, > Rechenarten auswählen) > > Das Ganze soll so ablaufen: > > Man gibt eine Zahl ein. Diese wird life angezeigt. Dann wählt man eine > Rechenart aus und gibt die 2. Zahl ein. Dabei erlischt die 1. Zahl und > man sieht die 2. auch wieder life. > > Danach drückt man auf die Ergebnistaste und der Mega32 fängt schön zu > rechnen an. > > Er gibt den Binärzählern dann jeweils so viele Impulse, wie sie > brauchen, um die errechnete Zahl dazustellen. > > Welche Sprache würdet ihr hierfür verwenden? Polnisch rückwärts... ;-) http://www.google.de/search?hl=de&ie=ISO-8859-1&q=taschenrechner+polnische+notation&meta= ...
Am besten eignet sich die Sprache die man schon kann. Oder falls es keine gibt (sonst stellt man sich die Frage wohl nicht) dann die in der man Unterstützung in seinem Umfeld hat oder die Verfügbar ist. Es gibt sicherlich Sprachen in denen man manche Probleme wesentlich besser lösen kann als in anderen. Aber wer so eine Insel? Der Heimanwender wohl kaum. Beim AVR bleiben Dir ja eigentlich nur dieverse Basic Dialekte, C und Assembler...
Welchen Sinn sollen denn die 3x Binärzähler, 3x BCD-Dekoder haben ? Die ganzen Sache so kompliziert wie nur irgend möglich zu machen ? Papp die LEDs (über Vorwiderstände) einfach direkt an den Mega32 und gut is. Als Sprache ist C gut geeignet (WINAVR). Peter
Peter Dannegger wrote: > Welchen Sinn sollen denn die 3x Binärzähler, 3x BCD-Dekoder haben ? > > Die ganzen Sache so kompliziert wie nur irgend möglich zu machen ? > > Papp die LEDs (über Vorwiderstände) einfach direkt an den Mega32 und gut > is. > > > Als Sprache ist C gut geeignet (WINAVR). > > > Peter dann hab ich viel zu wenige Pins. egal, ich machs in BASIC, da kenn ich mich n bisschen aus
>dann hab ich viel zu wenige Pins.
Dann bestell dir am besten auch gleich den 400kW-Anschluß bei deinem
Stromversorger.
Anzeigen werden seit ewigen Zeiten gemultiplext. Als Erweiterung gibt es
inzwische auch noch das Charlieplexing. Beide Systeme brauchen
wesentlich weniger Pins als das, was du da bastelbn willst.
Hallo, wenn schon solch eine Art der Ausgabe, dann aber richtig. Die Geschwindigkeit der Impulsfolge mitRampen am Anfang und am Ende. Macht es dann wenigstens spannend, wenn er auf das Ergebnis "zurollt" und man nicht genau weiß: ist 3296765354 nun schon das Ende oder geht es doch noch etwas höher... SCNR Multiplexe die Anzeige, hänge meinetwegen 2 BCD-Decoder an einen Port, dann hast Du mit 8 Leitungen 10 Stellen zum Anzeigen. Gruß aus Berlin Michael
Du weißt schon das es sowas schon fertig für ein paar Euros unter dem Namen TASCHENRECHNER gibt? ;-)
Simon Hat einen nick wrote: > > dann hab ich viel zu wenige Pins. Wie das? Ein Mega32 hat 4 vollwertige Ports (A,B,C,D) also 32 Pins. Selbst wenn du alle 16 Tasten einzeln anhängst und keine 4*4 Matrix aufbaust, schaut doch die Rechnung so aus: 16 Tasten 8 für die 7-Segmentanzeigen (+ Dezimalpunkt) 2 für die Anwahl der aktiven 7-Segment Anzeige --- 26 26 < 32 Machst du eine Tastenmatrix, dann verringert sich die Zahl nochmal um 8 und du bist bei 18 Pins. Wenn also sonst nichts an den Mega32 angeschlossen wird, hast du massenhaft Pins übrig. Und selbst wenn: Anstatt der Zähler und BCD-Dekoder wäre es wesentlich sinnvoller, die 7-Segment Anzeigen über eine Schieberegisterkette anzusteuern. Davon hast du als Bastelprojekt mehr, da so eine Schieberegisterkette als Porterweiterung sowas wie einen Standardbaustein darstellt, was man von deiner Zählerlösung nicht gerade behaupten kann.
Aber bei der Zählerlösung kann man die Zahlen kurz vor Erreichen des Zielwertes so schön ,,ausrollen'' lassen. :-) (Ich weiß, ich weiß. Es gibt nichts, was man nicht auch in Software machen könnte.)
Michael U. wrote: > Hallo, > > wenn schon solch eine Art der Ausgabe, dann aber richtig. > Die Geschwindigkeit der Impulsfolge mitRampen am Anfang und am Ende. > Macht es dann wenigstens spannend, wenn er auf das Ergebnis "zurollt" > und man nicht genau weiß: ist 3296765354 nun schon das Ende oder geht es > doch noch etwas höher... > > SCNR > also irgendwie werde ich daraus nicht schlau. > Multiplexe die Anzeige, hänge meinetwegen 2 BCD-Decoder an einen Port, > dann hast Du mit 8 Leitungen 10 Stellen zum Anzeigen. das macht nicht so viel spass ;-) ich wollte möglichst viel auf einmal lernen, darum die BCD dekoder und zähler... >Aber bei der Zählerlösung kann man die Zahlen kurz vor Erreichen >des Zielwertes so schön ,,ausrollen'' lassen. :-) siehst du, netter nebeneffekt >Du weißt schon das es sowas schon fertig für ein paar Euros unter dem >Namen TASCHENRECHNER gibt? ;-) du weißt schon, dass es Computer schon fertig gibt? Aber man kann die auch selber bauen >Machst du eine Tastenmatrix, dann verringert sich die Zahl >nochmal um 8 und du bist bei 18 Pins. hört sich interessant an! wie geht das genau?
@ Jörg Wunsch:
>Es gibt nichts, was man nicht auch in Software machen könnte
Ich fahr' jetzt zu meiner Freundin, mach das was dann kommt mal in
Software! :DD
Ich habe mal einen wissenschaftlichen Taschenrechner mit Stoppuhr und voller BCD-Arithmetik in C programmiert. Allerdings für einen PIC16F877. Falls du am Sourcecode interessiert bist, dann sag was! Der Taschenrechner war übrigens in UPN, ich habe aber auch Pläne, wie das ganze als "normaler" Taschenrechner mit Operatorprioritäten und Korrekturfunktion aussehen kann. Habe ich allerdings nicht gebaut, weil ich dann doch auf den Geschmack von UPN gekommen bin.
ich hätte auch interesse am code. kannst ihn ja hier uploaden ;-) zu der tastenmatrix: also da bin ich glaub ich einfacher bedient, wenn ich das jetzt erstmal so löse, dass ich jeder Taste einen eigenen Pin verpasse. (auch von der software her ist das einfacher für mich als anfägner)
Power wrote: > Ich fahr' jetzt zu meiner Freundin, mach das was dann kommt mal in > Software! :DD
1 | for (;;) sleep(); |
Hier mal ein Beispiel falls du doch mal mit der Matrixtasatur arbeiten willst. http://www.sprut.de/electronic/pic/programm/tastatur.htm
Obelix wrote: > Geiler Taschenrechner mit 3 Stellen. jeder fängt mal klein an Robin T.. wrote: > Oh natürlich ist ja für PICs aber egal bietet bestimmt Anhaltspunkte. Ja, trotzdem danke.
Ich würds vieleicht doch lieber mit dem Display machen. Da haste viel mehr Stellen und hier gibts auch ein AVR Tutorial zum Ansteuern.
Ja, das mach ich dann später mal. Jetzt will ichs erstmal mit LED Anzeigen ausprobieren... Die Ausgabe der Zahlen funktioniert schonmal, jetzt fehlt nur noch die Zahleneingabe über die 4x4 Matrix. Ich muss mal meinen Ferund Google fragen. MfG
Simon Hat einen nick wrote: >> Multiplexe die Anzeige, hänge meinetwegen 2 BCD-Decoder an einen Port, >> dann hast Du mit 8 Leitungen 10 Stellen zum Anzeigen. > > das macht nicht so viel spass ;-) ich wollte möglichst viel auf einmal > lernen, darum die BCD dekoder und zähler... Deine Methode entspricht etwa, ein Fahrrad zu schieben. Man lernt dabei nichts und Spaß macht es auch keinen. LEDs zu Multiplexen oder per Schieberegister auszugeben ist aber wie aufs Fahrrad zu steigen und zu fahren. Es macht Spaß und man lernt es dabei. Außerdem kostet das Zählen nur unnötig Rechenzeit. Peter
ja gut... wenn ich das vorher gewusst hätte. es ist jetzt soweit alles fertig, bis auf die Schalter. Und deswegen baue ich das sicher nicht alles nochmal um....
Schrumpfschlauch wrote: > Ich habe mal einen wissenschaftlichen Taschenrechner mit Stoppuhr und > voller BCD-Arithmetik in C programmiert ... Der Taschenrechner war übrigens > in UPN.. Ahäm - Das grenzt ja schon an ein Sakrileg, eine UPN in C zu programmieren :-) Ist so ähnlich, wie einen C-Compiler in Basic zu programmieren. Für UPN gab's übrigens mal extra ne Programmiersprache: Forth Sieht dann in etwa so aus: 1 2 3 + SWAP - DUP + 2 OVER + SWAP DROP Na, wer weiss die Lösung? ;-)
@Joachim falz du es noch nicht wusstest ,die meisten basic compiler sind modifizierte c-compiler.ich konnte das erst auch nicht glauben.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.