Wyświetlacz, którego użyliśmy to 0,28″ SR440281N RED ze wspólną katodą, ale możesz użyć również innych wyświetlaczy, takich jak 0,56″ Kingbright CC56-21SRWA. Ten projekt jest mocno inspirowany przez "Simple Digital Clock with PIC16F628A and DS1307" w przypadku schematu i użyliśmy również tego samego .hex co "Christo".
Schemat
Schemat jest prosty. Sercem jest mikrokontroler PIC16F628A pracujący na wewnętrznym oscylatorze 4MHz, więc nie jest potrzebny zewnętrzny kwarc. Oszczędza to nam 2 dodatkowe IO. Pin RESET (MCLR) jest również używany jako wejście dla jednego z przycisków. Wszystkie segmenty wyświetlacza są podłączone do PORTB, a COMy są podłączone do PORTA. Układ RTC jest również podłączony do PORTA za pomocą magistrali I2C.
Częstotliwość odświeżania cyfr wynosi około 53 Hz i nie ma widocznego migotania. Segmenty wyświetlacza są multipleksowane czasowo, co powoduje, że wydają się one ciemniejsze niż w specyfikacji. Aby to skompensować zamierzamy użyć kilku rezystorów na anodach. "Christo" testował go z różnymi wartościami rezystorów ograniczających prąd R1-R7 i poniżej 220 Ω mikrokontroler zaczyna się źle zachowywać (niektóre cyfry zaczynają migotać), powyżej 220 Ω wszystko wydaje się być w porządku. Na zastosowanym przez nas wyświetlaczu dwie środkowe kropki nie są podłączone do żadnego pinu na pakiecie, więc do wskaźników sekundowych użyliśmy kropek "przecinków". Te piny są podłączone do pinu SQW układu DS1307, który dostarcza na wyjście przebieg prostokątny o okresie 1 sekundy. Pin SQW jest otwarty, więc musimy dodać rezystor podciągający. Wartość tego rezystora została wybrana na 470 Ω, po kilku próbach i błędach. Po stronie wejściowej MCU znajdują się dwa przyciski do ustawiania MINUT i GODZIN zegara, jak pokazano na schemacie. Na płytce znajduje się również złącze do programowania ICSP, aby pomóc we wgrywaniu firmware. Na koniec pozostał jeden niewykorzystany pin (RB7), który można wykorzystać do dodatkowych funkcji, takich jak dodanie brzęczyka lub dodatkowej diody LED.
RTC DS1307 potrzebuje zewnętrznego kwarcu do podtrzymania wewnętrznego zegara oraz zapasowej baterii do podtrzymania pracy, gdy główne zasilanie jest wyłączone. Dzięki temu, przy następnym włączeniu zasilania zegar będzie wskazywał aktualny czas. Aby zachować małe wymiary płytki zastosowaliśmy uchwyt na baterię CR1220 z odpowiednią baterią 3 V. Pobór prądu wynosi około 35-40 mA przy napięciu wejściowym 5 V.
Kod
Jak podaje autor, kod został napisany i skompilowany za pomocą MikroC Pro i wykorzystuje wbudowaną programową bibliotekę I2C do komunikacji z układem RTC. Jeśli chcesz użyć MPLAB IDE do kompilacji kodu powinieneś napisać własną bibliotekę I2C od podstaw. Do programowania płytki użyliśmy programatora i oprogramowania PICkit 3. W tym przypadku w menu "Tools" należy zaznaczyć opcję "Use VPP First Program Entry".
Kod dla tego projektu jest podany poniżej. Dodatkowo potrzebny będzie plik "Digital Clock (PIC16F628A, DS1307, v2).h", który znajduje się w pliku .zip w plikach do pobrania poniżej. Skompilowany plik .hex jest również dostarczony w tym samym pliku .zip.
PCB
Płytka PCB została zaprojektowana w programie Autodesk EAGLE, a pliki projektowe są dostępne w plikach do pobrania poniżej. Całkowite wymiary płytki to 35,56 × 36,61 mm i użyliśmy prawie wszystkich elementów SMD.
Nasze PCB są dostępne do wysyłki na całym świecie. Jeśli chciałbyś otrzymać kilka sztuk, napisz do nas.