Forum: Mikrocontroller und Digitale Elektronik Uhr Schaltung at89c51ed


von at89 beginner (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich wollte meine erste Schaltung mal real aufbauen.
Ich habe den Schaltplan mal angehangen.

Backgroundinformationen:

Es soll eine Binäruhr werden, wobei Stunden und Minuten, sowie eventuell 
noch angezeigt wird ob es am oder pm ist. Die Leds werden Lowaktiv 
angesteuert.
Außerdem soll über einen Taster die Uhr gestellt werden können, wenn der 
Port 0.0 auf 0 gezogen wird(P0 hat ja interne Pullups).
Außerdem habe ich eine Uhrenquarz genommen, der soll ja am weigsten 
Strom verbrauchen, daher 22pF Kondis genutzt(Quarz CL=12.5 pF). 
Spannungsversorgung realisiere ich über 2* 3V Batterien(Jene, welche ich 
nutze liefern mir grad laut Multimeter sogar genau 2*~2,53V) in Reihe.

Ich habe das ganze jetz mal so aufgebaut und es funktioniert nicht 
wirklich, es kommen nur ca 2,7V an, wenn ich zwischen VDD & GND messe. 
Habe auch mal gelesen einige Kondensatoren zwischen VDD & GND zu 
schalten. Hat aber auch keine wirkliche Verbesserung gebracht.

Seht ihr denn irgendwelche Fehler? Wird die Spannugsversorgung irgendwie 
besonders realisiert?

PS: Am Code dürfte es nicht liegen, hab das ganze schon an nem eval 
board mal getestet.

Vielen Dank schonmal!

von at89 beginner (Gast)


Lesenswert?

PS: nutze einen at89c51ed2, nicht wie in der Schaltung bezeichnet Pin 
Belegung ist aber die gleiche.

von Stephan (Gast)


Lesenswert?

sieht auf den 1. Blick brauchbar aus. Was sind das für Batterien ?
Halten die den Strom aus ? Wie hoch ist die ges. Stromaufnahme ?

von Karl H. (kbuchegg)


Lesenswert?

Du willst wirklich deinen µC mit 32kHz takten?

Mit Verlaub, aber das ist Blödsinn!

von Karl H. (kbuchegg)


Lesenswert?

> Ich habe das ganze jetz mal so aufgebaut und es funktioniert nicht
wirklich, es kommen nur ca 2,7V an

Da werden dann halt deine Batterien nicht mehr die frischesten sein.
Wieviele LED waren denn an, als du gemessen hast?

> realisiere ich über 2* 3V Batterien(Jene, welche ich
> nutze liefern mir grad laut Multimeter sogar genau 2*~2,53V

Eine 3V Batterie, die nur noch 2.5V liefert, würde ich mal aus dem Bauch 
heraus als 'leer' bezeichnen.

von Andreas D. (rackandboneman)


Lesenswert?

Es gibt 8051er ADUC die mit 32.768KHz getaktet werden, intern eine PLL 
für den Prozessor haben und gleich eine Echtzeituhr mitbringen.

Andererseits sollte ein vollstatischer 8051 auch mit 32KHz klarkommen, 
und evtl reichen die bei einem 12Clock verbleibenden zweieinhalb KIPS 
sogar für die Uhr (ohne jetzt nachzusehen ob besagter 8051 vollstatisch 
und 12clock ist).

von Karl H. (kbuchegg)


Lesenswert?

Andy D. schrieb:

> Andererseits sollte ein vollstatischer 8051 auch mit 32KHz klarkommen,

Sieh einen anderen Thread von gestern, in dem sich ein 
Nachwuchsprogrammierer mit genau derselben Methode (32kHz) ratz/fatz aus 
seinem µC ausgesperrt hat, weil sein Brenner die ISP Frequenz nicht mehr 
weit genug runterbekommt.

Ich verstehe ja, dass er Strom sparen will. Aber braucht ein normaler 
Quarz wirklich soviel mehr Strom als ein 32kHz?

von at89 beginner (Gast)


Lesenswert?

Ok, da werde eure Ideen mal nachher in die Tat umsetzen, hab noch andere 
Batterien und einen 12Mhz Quarz, da werde ich den nachher mal umlöten.

Danke

von Matthias K. (matthiask)


Lesenswert?

at89 beginner schrieb:
> nutze einen at89c51ed2

Der uc hat einen seriellen Bootloader und kann mit FLIP programmiert 
werden. Mit den 32768 Hz Quarz dürfte das jedoch nicht gehen.

Laufen würde der uc prinzipiell auch mit dieser Taktfrequenz. Ein 
Taktzyklus würde ca. 360us dauern. Da ist in einer Sekunde nicht viel zu 
schaffen, für eine einfache Uhr sollte es aber reichen. Der uc hat noch 
den X2 Mode, wo alles doppelt so schnell abgearbeitet wird.

Ich würde aber auch einen höheren Quarz nehmen, einen womit FLIP noch 
ordentlich zurecht kommt.

von Ralf (Gast)


Lesenswert?

> P0 hat ja interne Pullups
Datenblatt komplett lesen: Gilt nur bei Verwendung von 
MOVX/MOVC-Befehlen, die auf den externen Daten-/Programmspeicher 
zugreifen.
Bei Verwendung als normaler Port ist da nüscht mit internen Pull-Ups, 
braucht's externe.

Ralf

von R. W. (quakeman)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Ich verstehe ja, dass er Strom sparen will. Aber braucht ein normaler
> Quarz wirklich soviel mehr Strom als ein 32kHz?

Nicht der Quarz verbraucht mehr Strom, sondern der Controller. Die 
Stromaufnahme des Controllers steigt proportional zur Taktfrequenz mit 
an. Und das macht zwischen 32768Hz und ein paar MHz schon einen 
deutlichen Unterschied.

Aber ich halte es trotzdem nicht für Sinnvoll, den Controller so niedrig 
zu takten. Ich würde da eher einen 1MHz Quarz nehmen. Dann könnte man 
den Controller zeitweise schlafen legen und durch einen Timer aufwachen 
lassen. Da hat man immer noch genug Rechenleistung um in kurzer Zeit die 
Uhr zu aktualisieren und anschließend wieder in den Suspend Modus zu 
gehen. Das macht mehr Sinn als den Controller nur mit 32768Hz zu takten.

Ciao,
     Rainer

von Stephan (Gast)


Lesenswert?

Fox Mulder schrieb:
> Aber ich halte es trotzdem nicht für Sinnvoll, den Controller so niedrig
> zu takten. Ich würde da eher einen 1MHz Quarz nehmen. Dann könnte man
> den Controller zeitweise schlafen legen und durch einen Timer aufwachen
> lassen. Da hat man immer noch genug Rechenleistung um in kurzer Zeit die
> Uhr zu aktualisieren und anschließend wieder in den Suspend Modus zu
> gehen. Das macht mehr Sinn als den Controller nur mit 32768Hz zu takten.

100% ACK
Wobei der 89c51ED2 nicht die beste Wahl ist wenns um Batteriebetrieb 
geht.

von Peter D. (peda)


Lesenswert?

Stephan schrieb:
> Wobei der 89c51ED2 nicht die beste Wahl ist wenns um Batteriebetrieb
> geht.

Bei LEDs an 100 Ohm dürfte der Stromverbrauch des MC egal sein.


Peter

von Karl H. (kbuchegg)


Lesenswert?

Peter Dannegger schrieb:
> Stephan schrieb:
>> Wobei der 89c51ED2 nicht die beste Wahl ist wenns um Batteriebetrieb
>> geht.
>
> Bei LEDs an 100 Ohm dürfte der Stromverbrauch des MC egal sein.

:-)
Ich geh ja doch davon aus, dass er einen der Taster als 'Ich will sehen' 
Taster benutzt.

Was natürlich den ersten paar Batterie-Sätze nichts hilft, denn wenn was 
neu ist, muss man alle 10 Sekunden drauflinsen :-)

von Stephan (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Stephan schrieb:
>> Wobei der 89c51ED2 nicht die beste Wahl ist wenns um Batteriebetrieb
>> geht.
>
> Bei LEDs an 100 Ohm dürfte der Stromverbrauch des MC egal sein.
>
>
> Peter

Das ist wohl wahr. Das ganze Konzept ist etwas unstimmig.
LED und Batterie passen nicht so richtig zusammen.
Deswegen ja die Frage nach dem Strom. Auch hätte ich einen 2051 
genommen. Nicht solch einen Boliden.
Trotzdem gibts für Batteriebetrieb deutlich bessere Sachen als AT89Cxxx

von Pieter (Gast)


Lesenswert?

at89 beginner (Gast),
kannst Du überhapt was mit hexadezimalen Zahlen anfangen und die ohne 
Tabelle umrechnen?

von Stephan H. (stephan-)


Lesenswert?

Pieter schrieb:
> at89 beginner (Gast),
> kannst Du überhapt was mit hexadezimalen Zahlen anfangen und die ohne
> Tabelle umrechnen?

Peter,

was soll er umrechnen, er git binär aus. Nur fehlen dafür noch 2 LED(s) 
sehe ich gerade. Habe jetzt erst mal nachgezählt. Das wird eng mit 11 
Bit.

von skua (Gast)


Lesenswert?

Stephan Henning schrieb:
> Habe jetzt erst mal nachgezählt. Das wird eng mit 11
> Bit.

Wieso? Wenn das eine richtige Binäruhr ist dann reichen
5 Bit für die Stunden und 6 Bit für die Minuten.

von Stephan H. (stephan-)


Lesenswert?

skua schrieb:
> Stephan Henning schrieb:
>> Habe jetzt erst mal nachgezählt. Das wird eng mit 11
>> Bit.
>
> Wieso? Wenn das eine richtige Binäruhr ist dann reichen
> 5 Bit für die Stunden und 6 Bit für die Minuten.


   00 0000 000 0000
    1 1001 000 0000  19:00 Uhr
   10 0000 000 0000  20:00 Uhr
   10 0011 101 1001  23:59 Uhr

sind bei mir 13 Bit.

von at89 beginner (Gast)


Lesenswert?

Hallo, danke für rege Beteiligung!

Also die Spannungsversorgung klappt, warern die Batterien.Hab jetz 
einfach erstmal ein Netzteil drangehangen!

Zu euren Einwänden: Ja ist schon korrekt, das LED+Vorwiderstand auch 
viel Strom brauchen, es sollte ja nur ein erstes Projekt werden um sich 
reinzufinden, wollte mir das nicht um den Arm binden^^ Aber trotzdem gut 
zu wissen!

Und den 32KHz Quarz wegzulassen verstehe ich auch, ist wahrscheinlich 
sinniger diese zu nutzen, wenn man eine rtc benutzt.

Die LEDs müssten doch reichen, habe nur in der Beschriftung im 
Schaltplan hour & min vertauscht(Asche auf mein Haupt^^).
Will ja kein BCD Code.


-----------------------------------------------------------------------

So also ich habe jetzt einen 12Mhz Quarz (CL=32pF) an der Schaltung. 
Wenn ich jetz allerdings ein einfaches Programm auf den µC lade

#include "AT89C51xd2.h"

void main(void)
{
  P1=0x00;
  P2=0x00;
  P3=0x00;
  while(1);
}

...funktioniert das nicht, Pins alle auf high.

Könnte das jetz daran liegen, dass ich die CL´s bei 22pF gelassen hab 
oder hab ich einfach irgendwas falsch verdrahtet?

LG

von skua (Gast)


Lesenswert?

Stephan Henning schrieb:
> 00 0000 000 0000
>     1 1001 000 0000  19:00 Uhr
>    10 0000 000 0000  20:00 Uhr
>    10 0011 101 1001  23:59 Uhr

Schon klar aber das ist die einzelziffern Variante für die breite Masse.

skua schrieb:
> richtige Binäruhr

So bei der 11 Bit Variante.

    10111 111011 23:59

MfG

von Stephan H. (stephan-)


Lesenswert?

bin mal gespannt was Danni dazu sagt...

von at89 beginner (Gast)


Lesenswert?

Ein Beispiel dafür das es sowas wirklich gibt:

www.zeichenderzeit.de/uhrenbilder/k/KT102B1.jpg


LG

von Peter D. (peda)


Lesenswert?

at89 beginner schrieb:
> ...funktioniert das nicht, Pins alle auf high.

Vermutlich noch im Programmiermodus.
Entweder "Start Application" oder BLJB Häkchen weg.


Peter

von at89 beginner (Gast)


Lesenswert?

Also: ich Programmiere das ganze über den Flip, wenn der µC im Eval 
Board steckt, dort gehen die Ports auch auf 0.
Dann nehme ich ihn raus und setze ihn in die Schaltung. Deshalb müsste 
die Application ja schon gestartet sein.


Was ist BLJB?

von Stephan H. (stephan-)


Lesenswert?

skua schrieb:
> Stephan Henning schrieb:
>> 00 0000 000 0000
>>     1 1001 000 0000  19:00 Uhr
>>    10 0000 000 0000  20:00 Uhr
>>    10 0011 101 1001  23:59 Uhr
>
> Schon klar aber das ist die einzelziffern Variante für die breite Masse.
>
> skua schrieb:
>> richtige Binäruhr
>
> So bei der 11 Bit Variante.
>
>     10111 111011 23:59
>
> MfG

o.k. Auch ich lerne dazu. Alles eine Frage der Darstellung.
Ich bin nicht drauf gekommen. Erst das Bild der Uhr hat es mir 
offenbart.
Ich stamme eben von den 8 Bit Microcontrollern ab.
Die betrachten alles Byte oder Wortweise. Ich auch.

Eine gute Knobelaufgabe für eingerostete Gehirnzellen ab 40+.   :-)))

Danke.

von Stephan H. (stephan-)


Lesenswert?

at89 beginner schrieb:
> Also: ich Programmiere das ganze über den Flip, wenn der µC im Eval
> Board steckt, dort gehen die Ports auch auf 0.
> Dann nehme ich ihn raus und setze ihn in die Schaltung. Deshalb müsste
> die Application ja schon gestartet sein.
>
>
> Was ist BLJB?

Teste nicht auf Null oder High.
Nimm irgendeine Bitkombination. die ist nach vollziehbar.
zB. 01010101 oder 11110000 etc.pp

Dann weist Du ob der Controller arbeitet.

von at89 beginner (Gast)


Lesenswert?

Das Problem war übrigens nur ein Taster für den Reset, der um 90° falsch 
eingebaut war, so dass der µc immer im Reset war.

dämlichdämlich...^^

von at89beginner (Gast)


Lesenswert?

Nochmal eine Frage:
weiter oben schrieb Karl Heinz Buchegger von einem Ich will sehen 
Schalter.
Wie nennt man denn diese Art der Nutzung für den Schalter?
Da ich das nicht weiß, konnte ich auch bei der Suche im Forum nix zur 
Realisierung finden.
Also wenn der Taster gedrückt wird sollzen die jeweiligen Leds so 5 
sekunden lang leuchten.

Kann mir da jmd. weiterhelfen?

Danke

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.