PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TASCHENRECHNER MIT BASCOM



megatroniker
06.09.2006, 11:40
Hallo Forum ...

Also ich habe folgendes Problem und würde mich freuen wenn mir jemand ein paar Tipps geben könnte.

Aufgabe: bauen eines Taschenrechners und programmieren mit Bascom

Ich habe eine Steuerung gebaut
- 4x 7-Segment-Anzeigen (angesteuert durch D345)
- Tastenfeld mit 1-9 und Plus/ Minus/ Gleich Tasten
- alles mit Mega8535

Platine funktioniert auch einwandfrei.

Es sollen die Ziffern 1 - 9 addiert und subtrahiert werden und dann ausgegeben werden.

Kann mir vielleicht jemand sagen wie ich einfache Rechenbefehle eingebe und verarbeite.

Das Problem ist meiner Meinung nach, das nicht jede 7-Segment-Anzeige einen PORT hat. (2 7-Segment-Anzeigen für einen PORT)


DANKE IM VORRAUS ... WÄRE SUPER WENN MIR JEMAND HELFEN KÖNNTE.

Falls ich zu undeutlich geschrieben habe oder ihr mehr Infos braucht um zu verstehen was ich vorhabe, postet es ruhig...

GRUß N ALLE

hackspider
06.09.2006, 12:28
Hi
Also so schwer kann das ja nicht sein. Zwar würde ich persöhnlich ein lcd display also 1x8 oder 1x16 doer 2x16 LCD nehmen is bequemer zum ansteruern. Aber nun zu deinem Problem an einem Port hängen 2 7seg treiber(ich geh mal an das es ein bin2dez treiber ist) also hängt an den bits 0-3 ein treiber und an den bits 4-7 der 2te 7seg treiber.

So um jetzt zum beispiel die 2te 7seg anzeige zu ändern ließt du die erste 4 bits des portes ein (0-3 die die halt unverändert bleiben sollen) zu denen addierst du dann den wert mit einer maske den du auf deiner 2te 7segment anzeigen willst.

Bsp:
am port logt grad:
0111 1001 (7 an der ersten und 9 an der 2ten)
um jetzt die 9 in eine 5 zu verandeln ließt du die ersten 4 bits ein damit die 7 stehn bleibt
0111 0000 dazu addierst du jetzt die 5 also &b01110000+&b101=&d112+&d5=&b01110101=&d117
So dann kannst du den wert 117 an den port ausgeben und schon ist auf den 7 seg anzeigen 7 und 5 zu sehen.

andersrum geht das genau so

Diese bit schieberei wäre mit einem Lcd nicht notwendig.

mfg hackspider

EDIT:
So und nun zu den rechen befehlen:
Du ließt ja über die matrix-Tastatur die zahlen 1-9 ein. Also die willst ja immer 2 Zahlen addieren oder subtrahieren also brauchst du 2 TempStrings wenn der Taschenrechner eingeschaltet wird werden beide mit dem wert 0 geladen. Wenn jetzt eine taste gedrückt wird dann der 0 eine 9 angehängt (nicht addiert) d.h. aus der "0" wird dann "09" wenn dann + oder - gedrückt wird dann wird jede gedrückte taste an den 2ten TempString angehängt. Wenn dann "=" gedrückt wird werden die beiden TempStrings mit (val oder int) wieder in zahlen um gewandelt und addiert.

So dürfte man das ganze ohne großen aufwand programmieren können

mfg hackspider

megatroniker
06.09.2006, 14:44
Erstmal vielen Dank für die schnelle Antwort ...

Ich geb dir mal unsere PORT-/ PIN Belegung.
Wenn du Lust hast kannst du mir ja mal ein kleines testprogramm schreiben bitte ...

Dann versteh ich das bestimmt.

9 + 9 = 18



BCD 1 (1. Ziffer) BCD 2 (2. Ziffer)

A = PC 4 A = PC 0
B = PC 7 B = PC 3
C = PC 6 C = PC 2
D = PC 5 D = PC 1


BCD 3 (1.Ziffer Ergebniss) BCD 3 (2.Ziffer Ergebniss)

A = PA 3 A = PA 7
B = PA 0 B = PA 4
C = PA 1 C = PA 5
D = PA 2 D = PA 6

INPUTS (Tasterfeld)

1 - PB 5
2 - PB 4
3 - PB 3
4 - PB 2
5 - PB 5 und PB 4
6 - PB 5 und PB 3
7 - PB 5 und PB 2
8 - PB 4 und PB 3
9 - PB 4 und PB 2

+ - PB 3 und PB 2
- - PB 1
= - PB 0

DANKE ... Gruß