Forum: Mikrocontroller und Digitale Elektronik Binäruhr Programmierung


von Severin Senn (Gast)


Lesenswert?

Ich habe ein kleines Projekt am laufen in welchem ich eine Binär-uhr 
programmieren möchte.

Die anzeige ist so aufgebaut

  h10   h1   min10  min1  sec10 sec1
   x    x      x      x     x     x
   x    x      x      x     x     x
        x      x      x     x     x
        x             x           x

x ist eine Lampe.

jeweils eine Zeile stellt auf dem Mikrocontroller ein Ausgang dar.
die sechs Anzeigen sind über Transistoren getrennt. alle 2.5 ms wechseln 
die Transistoren. nun habe ich das Programm mit Switch-Case geschrieben 
und jeder einzelne Wert einzeln eingegeben.
z.B:
switch (sec1)
{
...
case 12:
RA0 = 0;
RA1 = 1;
RA2 = 0;
RA3 = 0;
...
}

ich würde darum gerne fragen wie ich diese "Wahrheitstabelle" berechnen 
kann, dass das Programm nicht so lang und unübersichtlich ist.

von Peter D. (peda)


Lesenswert?

Du weißt aber schon, daß ein MC intern binär rechnet.
Also einfach die entsprechenden Bits direkt auf die Ausgangspins legen.
Und vorher noch die Einer/Zehner separieren:
1
  sec1 = sec % 10;
2
  sec10 = sec / 10;

von Axel S. (a-za-z0-9)


Lesenswert?

Severin Senn schrieb:
> Ich habe ein kleines Projekt am laufen in welchem ich eine Binär-uhr
> programmieren möchte.
>
> Die anzeige ist so aufgebaut
>
>   h10   h1   min10  min1  sec10 sec1
>    x    x      x      x     x     x
>    x    x      x      x     x     x
>         x      x      x     x     x
>         x             x           x

Wenn du Zehner und Einer durch getrennte LED-Gruppen darstellst, dann 
ist das streng genommen keine Binäruhr, sondern eine BCD-Uhr.

> ich würde darum gerne fragen wie ich diese "Wahrheitstabelle" berechnen
> kann, dass das Programm nicht so lang und unübersichtlich ist.

Wenn du jede Zahl wie von Peter gezeigt in Zehner und Einer zerlegst, 
dann sind das jeweils maximal 4 Bit. Und die Bits geben direkt an, 
welche LED für die jeweilige Stelle eingeschaltet werden müssen.

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.