Eine digitale Uhr mit PIC und 7-Segment-Anzeige selber bauen ist ein ideales Elektronikprojekt, weil es gleich mehrere Grundlagen praxisnah verbindet: GPIO-Ansteuerung, Timing mit Timern und Interrupts, Multiplexing, Strombegrenzung über Vorwiderstände, optional eine Echtzeituhr (RTC) per I2C sowie saubere Entprellung von Tasten. Gleichzeitig ist das Ergebnis ein „echtes“ Gerät, das dauerhaft im Alltag laufen kann. In diesem Guide geht es nicht um eine fertige Einkaufsliste mit exakt einem PIC-Typ, sondern um einen robusten Bauplan, den Sie je nach Teilekiste anpassen können: vom klassischen 8-Bit-PIC (z. B. PIC16F-Serie) bis hin zu PIC18 oder PIC24, solange genügend I/O-Pins und ein Timer verfügbar sind. Sie lernen, wie Sie eine 4-stellige oder 6-stellige 7-Segment-Anzeige per Multiplexing betreiben, wie Sie die Helligkeit stabil halten, warum eine externe RTC für Genauigkeit sinnvoll ist und wie Sie Ihre Firmware so strukturieren, dass sie übersichtlich bleibt. Als Bonus werden typische Stolperfallen (falscher Anzeigetyp, Vertauschung von Common Anode/Kathode, zu hohe Segmentströme, Flackern durch falsches Timing) so erklärt, dass Sie sie schnell erkennen und beheben können.
Projektüberblick: Was die Uhr können soll
Bevor Sie löten, lohnt es sich, die Anforderungen festzulegen. Für eine DIY-Uhr mit 7-Segment-Anzeige sind diese Funktionen typisch:
- Anzeige von Stunden und Minuten (optional Sekunden), meist als 4-stellig (HH:MM) oder 6-stellig (HH:MM:SS).
- Multiplex-Ansteuerung der Ziffern, um I/O-Pins zu sparen und die Hardware simpel zu halten.
- Helligkeitsregelung per PWM oder über Multiplex-Tastverhältnis.
- Uhrzeit einstellen über zwei bis drei Tasten (Set/Plus/Minus) oder über einen Encoder.
- Optionale hohe Genauigkeit mittels RTC-Modul (z. B. DS3231) statt reinem PIC-Timer.
Für Einsteiger ist ein 4-stelliges Display plus RTC und zwei Tasten der beste Einstieg: überschaubar, zuverlässig und gut erweiterbar.
Bauteileliste: Was Sie für eine robuste Lösung benötigen
Die folgende Auswahl ist bewusst flexibel. Entscheidend ist, dass die Komponenten elektrisch zusammenpassen (Spannung, Strom, Logiklevel).
- PIC-Mikrocontroller mit genügend GPIOs und mindestens einem Timer (z. B. PIC16F oder PIC18). Für PIC16/PIC18 ist der MPLAB X IDE-Workflow Standard.
- 7-Segment-Anzeige (4-stellig oder 6-stellig), entweder Common Anode (CA) oder Common Cathode (CC).
- Vorwiderstände für Segmente (typisch 8 Stück bei 1 Ziffer, bei Multiplex oft 8 Stück gesamt: a–g plus DP).
- Transistoren für Ziffern-/Digit-Treiber (bei Multiplex), z. B. NPN/PNP oder N-MOSFET/P-MOSFET je nach CA/CC.
- RTC-Modul (optional, empfohlen) z. B. DS3231 (I2C), inkl. Knopfzelle.
- Tasten (2–3 Stück) plus Pull-up/Pull-down (oder interne Pull-ups nutzen).
- Stromversorgung 5 V oder 3,3 V (je nach Display und PIC), mit Spannungsregler, Entkopplungskondensatoren.
- Entkopplung: 100 nF nahe am PIC, plus 10–47 µF am Versorgungseingang.
Für die RTC-Integration ist I2C-Grundwissen hilfreich; einen technischen Einstieg bietet die I2C-Übersicht I²C (Bus-Protokoll). Für saubere Mikrocontroller-Entwicklung sind Datenblätter und Family-References ohnehin Pflicht; Microchip stellt Dokumentation zentral bereit (Microchip 8-Bit-MCUs).
Schaltungsprinzip: Multiplexing bei 7-Segment-Anzeigen
Bei einer 4-stelligen Anzeige teilen sich alle Ziffern die Segmentleitungen (a, b, c, d, e, f, g und ggf. dp). Zusätzlich gibt es pro Ziffer eine gemeinsame Leitung (Digit 1–4). Beim Multiplexing schalten Sie immer nur eine Ziffer aktiv und legen gleichzeitig die Segmentmuster an. Das passiert so schnell hintereinander, dass das Auge ein dauerhaftes Bild sieht.
- Segmentleitungen: bestimmen, welche Segmente leuchten sollen (z. B. „3“ = a,b,c,d,g).
- Digit-Leitungen: wählen, welche Ziffer gerade aktiv ist.
- Multiplex-Frequenz: typischerweise 200–1000 Hz (pro Ziffer), damit nichts flackert.
Wichtig: Common Anode und Common Cathode unterscheiden sich in der Logik. Bei CC fließt Strom vom PIC (oder Treiber) durch das Segment nach GND. Bei CA ist es umgekehrt: Segmente werden gegen GND geschaltet, während die gemeinsame Anode auf VCC liegt. Prüfen Sie den Anzeigetyp unbedingt im Datenblatt oder per Multimeter/LED-Test, bevor Sie die Logik fest verdrahten.
Vorwiderstände berechnen: Segmentstrom sicher begrenzen
Für langlebige Anzeigen ist die Strombegrenzung entscheidend. Der Widerstand hängt von Versorgungsspannung, LED-Flussspannung und gewünschtem Segmentstrom ab. Eine einfache Näherung:
Beispiel: 5 V Versorgung, rote LED mit ca. 2,0 V Flussspannung, Zielstrom 8 mA pro Segment:
In der Praxis wählen Sie den nächsten Normwert, z. B. 390 Ω. Bei Multiplexing leuchtet jede Ziffer nur einen Anteil der Zeit. Viele erhöhen den Segmentstrom etwas, um Helligkeit zu kompensieren – das sollte aber innerhalb der Grenzwerte bleiben (Datenblatt!). Nutzen Sie lieber Transistor-Treiber und eine saubere Multiplexfrequenz, statt den Strom zu aggressiv zu erhöhen.
Digit-Treiber: Warum Transistoren fast immer sinnvoll sind
Viele PIC-Pins können nicht beliebig viel Strom treiben, und die Summe aller Segmentströme kann schnell kritisch werden. Bei einer Ziffer können theoretisch bis zu 7 Segmente gleichzeitig leuchten. Selbst bei moderaten 8 mA pro Segment wären das 56 mA – zu viel für einen einzelnen GPIO oder für die Port-Summe.
Darum nutzt man Treiber:
- Für Common Cathode (CC): oft NPN-Transistor oder N-MOSFET pro Digit-Leitung (schaltet nach GND).
- Für Common Anode (CA): oft PNP-Transistor oder P-MOSFET pro Digit-Leitung (schaltet nach VCC).
- Segmentleitungen: können direkt vom PIC kommen, sofern Strom pro Pin und pro Port im Rahmen bleibt; sonst ebenfalls Treiber/Arrays.
Eine sehr elegante Alternative sind Treiber-ICs wie MAX7219 (SPI) oder TM1637 (2-Wire), die Multiplexing intern erledigen. Für ein „PIC-Lernprojekt“ ist es jedoch didaktisch wertvoll, Multiplexing selbst umzusetzen – und Sie behalten volle Kontrolle über Timing und Helligkeit.
Optional: RTC für genaue Zeit (DS3231 statt Timerdrift)
Wenn die Uhr länger als ein paar Stunden „gut genug“ gehen soll, ist eine RTC empfehlenswert. PIC-Timer hängen an Quarz/Resonator oder internen Oszillatoren, die temperatur- und toleranzbedingt driften. Ein DS3231 ist temperaturkompensiert und im Alltag deutlich präziser. Technische Details und Registerzugriff finden Sie im Herstellerdatenblatt; als Einstieg hilft die DS3231-Übersicht DS3231 (RTC).
- I2C-Leitungen: SDA und SCL mit Pull-ups (typisch 4,7 kΩ bei 3,3–5 V).
- Backup-Batterie: RTC läuft bei Stromausfall weiter.
- Einfaches Zeitformat: DS3231 nutzt BCD, was beim Parsen beachtet werden muss.
Firmware-Architektur: So bleibt der Code verständlich
Eine Uhr wirkt simpel, aber ohne Struktur wird der Code schnell unübersichtlich. Bewährt hat sich diese Aufteilung:
- Display-Modul: Segmenttabellen (0–9), Multiplex-ISR, Helligkeitssteuerung.
- Zeit-Modul: Zeitvariablen (HH/MM/SS), Tick-Verarbeitung, RTC-Lese-/Schreibfunktionen.
- Input-Modul: Tasten-Scan, Entprellung, Long-Press/Repeat-Logik.
- App-Logik: Zustände (Normalbetrieb, Einstellmodus), Anzeigeformat (Blinken beim Setzen).
Der Multiplex-Teil sollte idealerweise in einem Timer-Interrupt laufen, z. B. alle 1 ms. Die Zeitbasis für Sekunden kann aus einem separaten Timer oder aus einem Softwarezähler entstehen (z. B. 1000 Ticks à 1 ms). Wenn eine RTC genutzt wird, lesen Sie die Zeit zyklisch (z. B. jede Sekunde) oder synchronisieren beim Start und danach seltener.
Multiplex-Timing: Flimmerfrei und gleichmäßig hell
Eine praxisnahe Zielgröße ist: Jede Ziffer wird etwa 200–500-mal pro Sekunde aktualisiert. Bei 4 Ziffern bedeutet das einen Multiplex-Interrupt im Bereich 800–2000 Hz. Ein häufig genutztes Setup ist 1 kHz Gesamt-Multiplex (jede Ziffer 250 Hz), was flimmerfrei ist und genügend Zeit für den Code lässt.
Wenn Sie die Multiplexfrequenz berechnen möchten, gilt:
Dabei ist
Tasten sauber entprellen: So vermeiden Sie „Doppelklicks“
Mechanische Taster prellen, also sie erzeugen beim Drücken mehrere schnelle Pegelwechsel. Ohne Entprellung springt Ihre Uhrzeit beim Einstellen unkontrolliert. Eine robuste Entprellung basiert auf einem periodischen Scan (z. B. alle 10 ms) und einem Zähler/Filter pro Taste.
- Polling-Intervall: 5–10 ms ist praxisnah.
- Stabilitätsfenster: z. B. 30–50 ms, bevor ein Tastendruck als gültig gilt.
- Auto-Repeat: optional: nach 500 ms Halten beginnt Wiederholung (alle 100 ms).
Für Einsteiger lohnt sich der Start ohne Auto-Repeat: Erst stabiles Drücken erkennen, dann später Komfortfunktionen ergänzen.
Uhrzeit einstellen: Bedienlogik, die jeder versteht
Bewährt ist ein zweistufiger Einstellmodus:
- SET drücken: Wechsel in Einstellmodus, Stunden blinken.
- PLUS/MINUS: Stunde erhöhen/verringern.
- SET erneut: Minuten blinken.
- SET erneut: Speichern, zurück in Normalmodus.
Wenn Sie nur zwei Tasten haben, können Sie SET für „weiter“ und PLUS für „hoch“ nutzen; MINUS entsteht dann durch Long-Press oder durch „Hoch zählt zyklisch“. Achten Sie darauf, Uhrzeitgrenzen korrekt zu behandeln (23→0, 59→0) und bei RTC die Werte zurückzuschreiben.
Praktische Verdrahtung: Typische Pinbelegung und Tipps
Eine typische 4-Digit-Anzeige braucht:
- 8 Segmentleitungen: a, b, c, d, e, f, g, dp
- 4 Digitleitungen: D1–D4
- 2–3 Tasten: SET, PLUS, MINUS
- I2C (optional): SDA, SCL zur RTC
Wenn Pins knapp sind, gibt es sinnvolle Alternativen:
- Schieberegister (74HC595): reduziert Segmentpins, Ansteuerung über SPI-ähnliche Leitungen.
- Port-Expander (MCP23017): I2C-Expander für viele I/Os.
- Treiber-ICs: MAX7219/TM1637 für drastisch weniger Verdrahtungsaufwand.
Stromversorgung und EMV: Damit die Uhr stabil läuft
Eine Uhr soll dauerhaft laufen, ohne sporadische Resets oder „Geistersegmente“. Dafür sind grundlegende Layout- und Verdrahtungsregeln wichtig:
- Entkopplung nahe am PIC: 100 nF direkt an VDD/VSS, Leitungen kurz halten.
- Saubere Masseführung: Segmentströme nicht durch empfindliche Massebereiche führen.
- Reset-Pin absichern: je nach PIC mit Pull-up und ggf. RC-Filter (Datenblatt beachten).
- Stabile Versorgung: bei USB/Steckernetzteil auf Ripple achten, ggf. zusätzlicher Elko.
Wenn die Anzeige beim Umschalten flackert oder der PIC sporadisch neu startet, ist das oft ein Hinweis auf zu hohe Stromspitzen oder mangelhafte Entkopplung.
Fehlersuche: Die häufigsten Probleme und schnelle Checks
- Nur eine Ziffer leuchtet: Multiplex-ISR läuft nicht oder Digit-Treiber sind falsch verdrahtet.
- Segmente sind „invertiert“: Common Anode vs. Common Cathode verwechselt; Logik umdrehen.
- Mehrere Ziffern gleichzeitig: Digit-Leitungen nicht sauber getrennt, Transistoren falsch gepolt oder Ghosting durch fehlende Abschaltzeit.
- Anzeige zu dunkel: Multiplexfrequenz zu niedrig oder Segmentstrom zu gering; Treiber prüfen.
- Uhr geht ungenau: interner Oszillator driftet; RTC verwenden oder Quarzqualität prüfen.
- Tasten springen: Entprellung fehlt oder Pull-ups/Pull-downs sind falsch dimensioniert.
Erweiterungen: Vom Einsteigerprojekt zum „Profi“-Feature
Wenn die Basis funktioniert, bieten sich Erweiterungen an, die das Projekt deutlich aufwerten:
- Helligkeitssensor (LDR): automatische Dimmung nachts, ADC-Auswertung.
- Weckerfunktion: Buzzer-Ausgang, Snooze-Logik, Alarm-Symbol per DP.
- Temperaturanzeige: DS3231 liefert bereits einen Temperatursensorwert, alternativ externer Sensor.
- 12/24-Stunden-Modus: umschaltbar per Long-Press.
- EEPROM-Speicherung: letzte Einstellungen behalten (bei PIC-EEPROM oder externem EEPROM).
Weiterführende Informationsquellen
- MPLAB X IDE: Entwicklungsumgebung für PIC
- Microchip 8-Bit-MCUs: Übersicht und Dokumentation
- 7-Segment-Anzeige: Funktionsprinzip und Varianten
- I²C: Grundlagen für RTC-Module
- DS3231: RTC mit hoher Genauigkeit
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

