Forum: Mikrocontroller und Digitale Elektronik Beste Sprache für dieses Projekt?


von S. H. (fat32)


Lesenswert?

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?

von Kai S. (Firma: ZeuSWarE GmbH) (zeusosc)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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=

...

von Bernd T. (bastelmensch)


Lesenswert?

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...

von Peter D. (peda)


Lesenswert?

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

von antworter (Gast)


Lesenswert?

vielleicht plant er ja eine Anti-ROHS-Installation ;-)

von S. H. (fat32)


Lesenswert?

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

von Meckerbock (Gast)


Lesenswert?

>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.

von Michael U. (Gast)


Lesenswert?

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

von Elektro G. (e_g)


Lesenswert?

Du weißt schon das es sowas schon fertig für ein paar Euros unter dem 
Namen TASCHENRECHNER gibt? ;-)

von Karl H. (kbuchegg)


Lesenswert?

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.


von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.)

von S. H. (fat32)


Lesenswert?

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?

von Robin T. (Gast)


Lesenswert?


von Power (Gast)


Lesenswert?

@ 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

von Schrumpfschlauch (Gast)


Lesenswert?

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.

von Robin T.. (Gast)


Lesenswert?

Ich bin an den Source-Code interessiert

von S. H. (fat32)


Lesenswert?

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)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Power wrote:

> Ich fahr' jetzt zu meiner Freundin, mach das was dann kommt mal in
> Software! :DD
1
for (;;) sleep();

von Robin T.. (Gast)


Lesenswert?

Hier mal ein Beispiel falls du doch mal mit der Matrixtasatur arbeiten 
willst. http://www.sprut.de/electronic/pic/programm/tastatur.htm

von Robin T.. (Gast)


Lesenswert?

Oh natürlich ist ja für PICs aber egal bietet bestimmt Anhaltspunkte.

von Obelix (Gast)


Lesenswert?

Geiler Taschenrechner mit 3 Stellen.

von S. H. (fat32)


Lesenswert?

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.

von Robin T.. (Gast)


Lesenswert?

Ich würds vieleicht doch lieber mit dem Display machen. Da haste viel 
mehr Stellen und hier gibts auch ein AVR Tutorial zum Ansteuern.

von S. H. (fat32)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von S. H. (fat32)


Lesenswert?

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....

von Power (Gast)


Lesenswert?

>for (;;) sleep();

OK, es geht also doch! :)

von Joachim (Gast)


Lesenswert?

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? ;-)





von ich (Gast)


Lesenswert?

@Joachim falz du es noch nicht wusstest  ,die meisten basic compiler 
sind
modifizierte c-compiler.ich konnte das erst auch nicht glauben.

von Scarface (Gast)


Lesenswert?

10

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.