Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Testcode für 7 Segmentanzeige
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...
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
$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
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.
Soweit ich weiß kennt Bascom keine Zeiger. Es geht mir aber erstmal um einen Grundsatztest - der Summer reagiert nähmlich nicht... :(
Gruß, Björn
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
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
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.
@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
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
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.
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?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.