PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Testcode für 7 Segmentanzeige



Björn
08.08.2005, 16:22
Moin, moin!

Hätte jemand einen kleine Code parat, mit dem ich meine 3stellige 7 Segmentanzeige testen könnte? Es geht erstmal darum ob alles richtig verlötet ist.

Gruß, Björn

SprinterSB
08.08.2005, 17:13
Der Code hängt doch von deiner Verschaltung ab.
Testen kannst du so:
An deinen Kathoden-Ports legtst du 0 wenn ein Einzelsegment leuchtet soll und 1, wenn es dunkel bleiben soll.
An einen Anoden-Port legst du 0 um ein Segment zu wählen.
Alle anderen Anoden-Ports musst du auf 1 legen, damit die anderen Segmente aus bleiben.
Das ich wichtig! Wenn du mehr als 1 Anodenport auf 0 legst, wird sonst über jeden Kathoden-Port, der 0 ist, ein zu großer Strom fliessen. Damit hast du ruck-zuck deine Ausgangstreiber frittiert.

Bevor du also deine Schaltung mit 'irgendeinem' Code grillst...

Björn
08.08.2005, 17:16
Also ich habe ja 3 Anode, der Rest Kathoden. Dann Schreibe ich PortC.3 = 0 und die ganzen anderen Anoden Pins = 1. Und bei den ganzen Kathoden - welche lege ich da auf 0? Ist doch eigentlich egal... da wähl ich doch quasi nur das Segment - oder?

Björn

SprinterSB
08.08.2005, 17:26
Egal ist es nicht. Wenn du zB im ersten Display eine "1" anzeigen willst, sagt dir das Datenblatt, daß dann die Segmente 'b' und 'c' bestromt sein müssen.
Du legst:
Die c-Kathoden (Pin 12 der Displays) auf 0
Die d-Kathoden (Pin 10 der Displays) auf 0
Alle anderen Kathoden auf 1.

Die Basis des pnp-Trinsis zum Display legst du auf 0 (via Vorwiderstand).
Alle anderen Basen auf 1

Björn
08.08.2005, 18:25
$regfile = "m8def.dat"
$crystal = 8000000

Config PortD = Output 'PortD ist mit den Kathoden belegt
Config PortB = Output 'PortB sind die Transistoren

PortD.4 = 0 'D.4 ist an Pin 10
PortD.5 = 0 'D.5 ist an Pin 12
PortD.6 = 1
PortD.7 = 1
PortD.0 = 1
PortD.1 = 1
PortD.2 = 1
PortD.3 = 1

PortB.5 = 0 'B.5 ist an der Basis des Transistors der ersten Displaystelle
PortB.3 = 1 'B.3 ist an der Basis des Transistors der zweiten Stelle
PortB.1 = 1 'B.1 ist an der Basis des Transistors der dritten Stelle

Do

Loop



So oder wie? Oder muss der Kram in die Hauptschleife?

Gruß, Björn

izaseba
08.08.2005, 19:17
Hallo Björn,

Ich habe Dir doch schon ein vorschlag gemacht, Du sollst Dir eine Tabelle erstellen, mit den Ganzen Werten, die für die Zifern zuständig sind, je nachdem , wo Dein a,b,c,d,e,f,g vov Display dran hängt, und dann mit einem zeiger (geht das in Bascom überhaupt?) immer schön drauf zeigen.

Björn
08.08.2005, 19:19
Soweit ich weiß kennt Bascom keine Zeiger. Es geht mir aber erstmal um einen Grundsatztest - der Summer reagiert nähmlich nicht... :(

Gruß, Björn

izaseba
08.08.2005, 19:43
Soweit ich weiß kennt Bascom keine Zeiger

Aber Arrays?

dann würde ich ein array erstellen, mit den wertigkeiten von 0-9 bzw 9-0 .
Ich hoffe, Du verstehst was ich meine ...

Summer, ist deas ein piezo ? wenn ja hast Du ihm einfach an Spannung gelegt, oder ein Signal mit 1-4 kHz aufgelegt ?

Gruß Sebastian

Björn
08.08.2005, 20:26
Ich habe den einen Pin an +3.6V, den anderen an einen µC-Pin gelegt.
Dann den Bascom Befehl:

Sound PortC.2 , 400, 400

Gruß, Björn

Björn
08.08.2005, 20:27
Ich habe den einen Pin an +3.6V, den anderen an einen µC-Pin gelegt.
Dann den Bascom Befehl:

Sound PortC.2 , 400, 400

Gruß, Björn

SprinterSB
08.08.2005, 22:10
Falls es ein nicht selbstschwingender Piezo ist:
Dann brauchst du 2 Ports, die du in der Frequenz des Tones wechseln lässt:

PortX:0101010101...
PortY:1010101010...

Miss das Ding mal durch, ist bestimmt sehr hochohmig. Dann kannst ihn direkt zwischen die Ports hängen.

Wenn du ne Spannung drauf gibt hörst du ihn clicken -- aber nur das erste Mal. Um ihn nochmal clicken zu lassen, musst du umpolen.

Durch das schnelle Umpolen mitm µC hört man nen Ton.

izaseba
08.08.2005, 22:16
@Sprinter,
das muß nicht unbedingt stimmen, ich habe hier Piezos, die einfach zwichen VCC und einem Port liegen, auf den Port 4 kHz, und dann gehen Meine Ohren fliegen, also ohne umzupolen,
Es kann aber Piezoabhängig sein.

Gruß Sebastian

Björn
08.08.2005, 22:16
Sonst ging der gleiche Piezo auch immer so.
Naja egal, das Display möchte ich zuerst prüfen.
Geht der Code oben?

Gruß, Björn

izaseba
08.08.2005, 22:18
Geht der Code oben?

Das mußt Du wohl besser wissen, oder ?

SprinterSB
08.08.2005, 22:29
Zum Leuchten lassen geht er. In die Hauptschleife muss er nicht rein.

Was mir nicht dran gefällt: Nach dem Config stehel alle Ports auf 0.
Das ist hier nur sehr kurz -- etwa 2µs bis du alle Ports fertig hast -- aber *etwas* unschön. Genau sowas kann dir ner zickige Schaltung ins Nirvana senden.
Setze erst alle Port-Register auf 1 (Pullup aktiv), dann pack die DDRs an und mach die Ports zu Ausgängen, und dann setzt du die Pins auf 0, die du haben willst.

Björn
09.08.2005, 09:38
Geht der Code oben?

Das musst Du wohl besser wissen, oder ?

Damit meinte ich sinngemäß "kann ich den Code testen ohne meine Schaltung zu zerschrotten".



$regfile = "m8def.dat"
$crystal = 8000000

PortD.0 = 1
PortD.1 = 1
PortD.2 = 1
PortD.3 = 1
PortD.4 = 1
PortD.5 = 1
PortD.6 = 1
PortD.7 = 1

PortB.5 = 1
PortB.3 = 1
PortB.1 = 1

Config PortD = Output 'PortD ist mit den Kathoden belegt
Config PortB = Output 'PortB sind die Transistoren

PortD.4 = 0 'D.4 ist an Pin 10
PortD.5 = 0 'D.5 ist an Pin 12

PortB.5 = 0 'B.5 ist an der Basis des Transistors der ersten Displaystelle

Do

Loop


Gruß, Björn

P.S.: Was sind DDRs?