Eine kleine Binäruhr
Einmal was anderes für einen Bastelnachmittag. Ich wollte versuchen eine kleine digitale binäre Uhr zu bauen, welche die Uhrzeit in binärer weise anzeigt, so wie intern die Computer arbeiten. Jede Zeile der Uhr ist in 2er-Potenz eingeteilt und die Summe der jeweilen Zeile ergibt die Dezimalzahl. Die Wertigkeit ist von links nach rechts zu lesen, die größte Zahl entsteht hierbei bei den Sekunden, diese gehen von 0 bis 59, die Stunden und Minuten sind jeweils in zwei Reihen unterteilt, die einer und die zehner Stelle, somit gelten die Zahlen 0 bis 2 für Stunden zehner, 0 bis 9 für Stunden einer, 0 bis 5 für Minuten zehner und 0 bis 9 für Minuten einer. Das Ablesen der Wertigkeit ist für alle Zeilen gleich. Am Beispiel der Sekunden gibt es also die Leuchtdioden von links nach rechts: 2^0 = 1, 2^1 = 2, 2^2 = 4, 2^3 = 8, 2^4=16, 2^5=32.
Wenn also keine Leuchtdiode leuchtet ist das der Wert 0, leuchtet NUR die erste ist das der Wert 1, leuchtet nur die zweite dann ist das der Wert 2, leuchtet NUR die dritte ist das der Wert 4 usw. Um nun den Wert einer Zeile zu ermitteln schaut man sich die Stelligkeit an und addiert alle Werte der leuchtenden Dioden, z.B. leuchtet die 1. und 3. LED dann sond das die Einzelwerte 1 und 4 und ergeben zusammen den Wert 5.
Weitere Informationen: Die Binäruhr ist mit einem Atmega88 und externem 14,745600 MHz Quarz bestückt. Man muss entsprechend die Fusebits setzen!
Der Quellcode ist mit BASCOM-AVR geschrieben (Demoversion im Internet verfügbar). In den Atmega habe ich den Bascom-Bootloader geflasht um somit die Firmware per serielle Schnittstelle jederzeit erneuern zu können. Im Quellcode ist eine automatische Aktivierung des Bootloaders integriert, so das aus Bascom heraus bei bestehender serieller Verbindung die Firmware ohne weiteres zutun geflasht werden kann.
Einstellungen der seriellen Verbindung: Baudrate 19200 Bits 8 Stopbits 1 Parität None
Ich habe auf der Platine einen Steckplatz vorgesehen an dem +3.3V, Masse und RX/TX zur verfügung stehen. Wichtig!! Um die Verbindung mit einem PC herstellen zu können benötigt man unbedingt einen Pegelwandler, z.B. MAX232 um auf den TTL-Pegel zu kommen! Ich selber verwende keine Kabelverbindung sondern ein Bluetooth-Modul BTM-222 welches ich einfach an die Uhr anstecke, daher auch die Herausführung der Betriebsspanng.
Die Uhrzeit muss natürlich irgendwie eingestellt werden können, um die Platine möglichst klein zu halten habe ich auf Taster verzichten und die Uhrzeit wird ebenfalls per serieller Datenverbindung vom PC aus eingestellt. Hierzu die betriebsbereite Uhr mit dem PC verbinden und ein Terminalprogramm (z.b. Hyperterminal) mit den obigen Einstellungen starten. Im Terminalprogramm kann dann die Uhrzeit gesetzt werden. Nach jedem Befehl muss man <Enter> drücken (nn steht dabei für eine Zahl):
Hnn : setzen der Stunden zehner hnn : setzen der Stunden einer Mnn : setzen der Minuten zehner mnn : setzen der Minuten einer snn : setzen der Sekunden
Beispiel: setzen der Uhrzeit 14:52:09 (das "<Enter>" nicht tippen sondern die Taste "Enter" betätigen!): H1<Enter> h4<Enter> M5<Enter> m2<Enter> s9<Enter>
Noch eine Anmerkung: ursprünglich war die angedacht die Schaltung mit einer 3,6V Knofzelle zu betreiben, leider hat die Uhr damit nicht mal 24 Stunden durchgehalten, der Stromverbrauch ist leider viel zu hoch! Wer die Uhr also nachbauen möchte sollte hierfür einen Standplatz mit Netzteil vorsehen.
Nun viel Spass damit.
|