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.
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; |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.