PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anteuerung einer 7-Segment LED (PIC16F876)



tOSCh
02.09.2005, 19:23
Hallo, Leute

mein erstes Projekt ist die Ansteuerung einer 7-Segment LED Anzeige mit gemeinsamer Anode.

Ich habe einen PIC16F876 mit 28Pins. Pin 8 und 19 habe ich mit Masse verbunden. Pin 20 mit VCC also +Pol. Ausserdem habe ich den kompletten PortB also RB0-RB7 / Pin 21-28 mit der Anzeige verbunden. Davor hab ich 8 x 1k Widerstände geschaltet.
Die Schaltung funktioniert ohne PIC tadellos (dh alle LEDs leuchten :))

Nun zur Hardware:

Ich habe gelesen, dass JEDER PIC einen Quarz/Keramikschwinger benötigt. Ich habe einen geeigneten da, nur weiss ich nicht genau, wo und warum ich diesen anschliessen muss. Es hat wohl was mit dem Takt zu tun. Aber was ist, wenn ich den weglasse?

Ausserdem weiss ich nicht, ob ich noch etwas vergessen habe. Oder kann ich schon jetzt ein Programm schreiben um Zahlen auf meiner Anzeige darzustellen???

Zur Software komme ich später, da ich mich mit Assembler noch nich beschäftigt habe, dies aber in kürze tue.

Soviel zuerst einmal. Danke für die Antworten die ihr mir hoffentlich geben werdet ;)

Cyah, tOSCh

Mobius
02.09.2005, 19:47
also, ich empfehle dir für die Grundlagen sprut.de (www.sprut.de). Da wird auch erklärt, wieso du ein Quarz, bzw. einen Taktgenerator, sei es ein Oscillator (relativ teuer, leich anzuschließen) oder ein R/C-Glied (billig, Frequenzstabilität ist ein Fremdwort bei dem).

Naja, rein theoretisch braucht NICHT jeder PIC einen externen Takt. Z.B. der PIC16F63x hat einen internen 4 MHz Oscillator. Bei dem kannst du dann die Pins OSC1/OSC2 als normale I/O-Pin verwenden. Dies ist aber bei deinem PIC nicht gegeben und so, ja, du brauchst einen extrenen Takt, ansonsten läuft dein Programm einfach nicht (da ein Befehl bei jedem 4. Zyklus des Taktes ausgeführt wird).

ansonsten findest du hier (http://pdf.alldatasheet.com/datasheet-pdf/view/75012/MICROCHIP/PIC16F876.html) auf Seite 122 alles was du über den PIC-Clock findest. Natürlich in Englisch, doch solltest du dich daran gewöhnen (bzw. kein Problem darsellen). Den ohne den dazugehörigen Datasheet wirst du komplexere Aufgaben (A/D-Wandlung, etc.) kaum bewerkstelligen können...

MfG
Mobius

tOSCh
02.09.2005, 23:13
OH OH, ich hab mir grad ne Demon auf meinen PIC gemacht. Hab alles schön angeschlossen den Pic in die Schaltung 5V angelegt und da hat auch was geleuchtet. Aber!!!!!

Der Pic wurde extrem heiss, hab sofort abgesteckt. Was hab ich jetz falsch gemacht?

Goblin
03.09.2005, 19:11
falschrum gepolt

tOSCh
06.09.2005, 10:21
hmm kann es sein, dass er da sofort kaputt geht, denn irgendwie geht er jetz nich mehr richtig. Cyah

TomHumpen
06.09.2005, 11:51
Wahrscheinlich ist er kaputt.
Zu deinem Problem.Könnte es sein das du zuviel Strom aus dem Pic gesogen hast. Pro Pin sind ja nur 25mA erlaubt glaube ich und gesamt 200mA veranschlagt. Vielleicht sind deine Vorwiederstände zu klein gewesen das du bei deiner 7 Segment über die 200mA gekommen bist!

So long..

tOSCh
12.09.2005, 23:38
so nun ein erneutes MERKWÜRDIGES Verhalten meiner Schaltung.
Ich habe alles schön Sauber verlötet. Wenn ich nun ohne PIC rumprobiere mit überbrücken der Kontakte im Sockel, dann kann ich alle LEDs zum leuchten bringen. Sobald ich aber den PIC mit nem LAUFLICHTPROGRAMM reinstecke leuchtet nix, obwohl was blinken müsste.

NUN zum Merkwürdigen Teil. Und zwar leuchtet eben nichts! ABER wenn ich den PIC von oben ANFASSE, dann lecuhten ein paar LEDs auf. Es sind immer dieselben LEDs die leuchten. Ich hab auch mal versehentlich die Unterseite der Platine berührt, da lief mein Lauflicht für 2 Sekunden.

Hat jemand irgendwelche Erklärungen??? Bin für jeden Tip dankbar.

Das Programm läuft auf meinem Experimentierboard einwandfrei!

Cyah

13.09.2005, 07:42
Die PIC sind heikel, daß die Reset Leitung auch schön auf Plus hängt (10k Pullup) Bei LVP muß auch der Prog-Pin versorgt sein
mfg robert

tOSCh
13.09.2005, 09:02
aha, danke ... ich muss den PIN4 MLCR mit nem 10K Vorwiderstand und dem PlusPol verbinden, hab ich das richtig verstanden?

cyah, tOSCh

Skilltronic
13.09.2005, 10:38
Hallo

Ja, das hast du richtig verstanden. Der MCLR ist der Master Clear- oder Reseteingang. Der Querstrich darüber bedeutet invertiert, also "umgekehrt". Bei einer logischen 1 (also +5V) läuft das Programm, bei 0 wird der Reset ausgelöst. Die 1k-Vorwiderstände für die sieben Segmente (also je 5mA) sind eigentlich gross genug bemessen. Also theoretisch solltest du loslegen können, wenn du den PIC nicht schon gegrillt hast.

Es gibt übrigens auch fertige BCD (binär codierte Dezimalzahlen) zu 7-Segment-Decoder. Die haben vier Eingänge, auf die du einen Binärwert von 0-9 (0000-1001) geben kannst und an den 7 Ausgängen wird das entsprechende 7-Segmentmuster erzeugt. Damit kannst du die Segmente heller leuchten lassen, sparst Ausgänge am PIC und musst später im Programm keine entsprechende Tabelle anlegen. Wie wäre es denn übrigens für erste Experimente mit einem billigeren PIC-Modell? Ich experimentiere z.B. gerade mit dem 12F675. Hat zwar nur 8Pins, kostet aber nur gut ein viertel von deinem und hat eigentlich alles, was das Herz begehrt, inclusive eines internen 4MHz-Taktgebers.

Gruss
Skilltronic