- Komponente potrebne
- 4-znamenkasti 7-segmentni zaslon
- 74HC595 IC registar mjenjača
- DS3231 RTC modul
- Kružni dijagram
- Programiranje Arduino UNO za multipleksiranje sedmosegmentnog prikaza
Digitalni zidni satovi postaju danas sve popularniji i bolji su od analognih, jer pružaju točno vrijeme u satima, minutama i sekundama te ih je lako očitati. Neki digitalni satovi također imaju mnoštvo uređaja kao što su prikaz temperature, vlage, podešavanje više alarma itd. Većina digitalnih satova koristi sedmosegmentni zaslon.
Prethodno smo izgradili mnoge krugove digitalnih satova bilo pomoću 7-segmentnih zaslona ili pomoću LCD-a 16x2. Ovdje možete pronaći cjelovite dizajne PCB-a digitalnog sata temeljenog na AVR-u. Ovaj se vodič bavi izradom digitalnog sata multipleksiranjem četvero-segmentarnih zaslona pomoću Arduino UNO-a i prikazivanjem vremena u HH: MM formatu.
Komponente potrebne
- 4-znamenkasti 7-segmentni zaslon
- 74HC595 IK
- DS3231 RTC modul
- Arduino UNO
- Breadboard
- Spajanje žica
4-znamenkasti 7-segmentni zaslon

Četveroznamenkasti 7-segmentni zaslon ima četiri sedmosegmentna zaslona koja su spojena ili možemo reći da su multipleksirani. Koriste se za prikaz numeričkih vrijednosti, a također i nekih abeceda s decimalama i dvotačkom. Zaslon se može koristiti u oba smjera. Četiri znamenke korisne su za izradu digitalnih satova ili poput brojanja brojeva od 0 do 9999. Ispod je interni dijagram za 4-znamenkasti prikaz 7 segmenata.

Svaki segment ima po jednu LED diodu s individualnom LED kontrolom. Postoje dvije vrste prikaza od sedam segmenata kao što su Common Anode i Common Cathode. Gornja slika prikazuje uobičajeni prikaz segmenta anode tipa 7.
Zajednička anoda
U Common Anode, svi pozitivni terminali (Anode) svih 8 LED dioda spojeni su zajedno, nazvani COM. A svi negativni priključci ostaju sami ili su spojeni na igle mikrokontrolera. Korištenjem mikrokontrolera, ako je logika LOW postavljena za osvjetljavanje određenog LED segmenta i postavljena logika High za isključivanje LED diode.

Zajednička katoda
U Common Cathode, svi negativni terminali (katoda) svih 8 LED dioda spojeni su zajedno, nazvani COM. A svi pozitivni terminali ostaju sami ili su spojeni na igle mikrokontrolera. Korištenjem mikrokontrolera, ako je postavljena logika HIGH za osvjetljavanje LED diode i postavite LOW za isključivanje LED diode.

Ovdje saznajte više o 7-segmentnim zaslonima i provjerite kako se mogu povezati s drugim mikrokontrolerima:
- 7-segmentno povezivanje zaslona s Arduinom
- 7-segmentno povezivanje zaslona s Raspberry Pi
- Povezivanje sedmosegmentnog zaslona s ARM7-LPC2148
- 7-segmentno povezivanje zaslona s PIC mikrokontrolerom
- 7-segmentno povezivanje zaslona s mikrokontrolerom 8051
74HC595 IC registar mjenjača

IC 74HC595 također poznat kao 8-bitni serijski, - Paralelno OUT Shift Registracija. Ovaj IC može primati unos podataka serijski i može paralelno kontrolirati 8 izlaznih pinova. Ovo je korisno za smanjenje pinova korištenih od mikrokontrolera. Sve projekte povezane sa registrom smjene 74HC595 možete pronaći ovdje.
Radi na 74HC595 IC:
Ovaj IC koristi tri pinova kao što su Clock, Data & Latch s mikrokontrolerom za upravljanje 8 izlaznih pinova IC. Sat se koristi za kontinuirano davanje impulsa iz mikrokontrolera, a podatkovni pin služi za slanje podataka poput toga koji izlaz treba uključiti ili isključiti u određeno vrijeme sata.
Prikaz izvoda:
|
Pin broj |
Naziv pribadače |
Opis |
|
1,2,3,4,5,6,7 |
Izlazne iglice (Q1 do Q7) |
74HC595 ima 8 izlaznih pinova od kojih je 7 ovih pinova. Njima se može serijski upravljati |
|
8 |
Prizemlje |
Spojen na masu mikrokontrolera |
|
9 |
(Q7) Serijski izlaz |
Ovaj pin služi za spajanje više od jednog 74HC595 kao kaskadni |
|
10 |
(MR) Glavni reset |
Vraća sve izlaze na nisko. Mora se držati visoko za normalan rad |
|
11 |
(SH_CP) Sat |
Ovo je klin sata na koji se mora davati signal sata iz MCU / MPU |
|
12 |
(ST_CP) Zasun |
Kvačica zasuna koristi se za ažuriranje podataka na izlazne igle. Aktivno je visoko |
|
13 |
(OE) Omogućen izlaz |
Omogućivanje izlaza koristi se za isključivanje izlaza. Mora se držati nisko za normalan rad |
|
14 |
(DS) serijski podaci |
Ovo je pin na koji se šalju podaci na temelju kojeg se kontrolira 8 izlaza |
|
15 |
(Q0) Izlaz |
Prvi izlazni klin. |
|
16 |
Vcc |
Ovaj pin napaja IC, obično se koristi + 5V. |
DS3231 RTC modul

DS3231 je RTC modul. RTC je skraćenica od Sat u stvarnom vremenu. Ovaj se modul koristi za pamćenje vremena i datuma čak i kad se krug ne napaja. Ima pričuvnu bateriju CR2032 za pokretanje modula u nedostatku vanjskog napajanja. Ovaj modul također uključuje senzor temperature. Modul se može koristiti u ugrađenim projektima, poput izrade digitalnog sata s indikatorom temperature itd. Evo nekoliko korisnih projekata koji ga koriste:
- Automatska hranilica za kućne ljubimce pomoću Arduina
- Povezivanje RTC modula (DS3231) s PIC mikrokontrolerom: digitalni sat
- Povezivanje RTC modula (DS3231) s MSP430: Digitalni sat
- ESP32 sat u stvarnom vremenu pomoću modula DS3231
- Digitalni zidni sat na PCB-u pomoću AVR mikrokontrolera Atmega16 i DS3231 RTC
Pinout DS3231:
|
Naziv pribadače |
Koristiti |
|
VCC |
Spojen na pozitiv izvora napajanja |
|
GND |
Spojen na zemlju |
|
SDA |
Pribadača serijskog podatka (I2C) |
|
SCL |
Pribadača serijskog sata (I2C) |
|
SQW |
Izlazni zatik kvadratnog vala |
|
32.000 |
Izlaz oscilatora 32K |
Značajke i specifikacije:
- RTC broji sekunde, minute, sate i godinu
- Digitalni temperaturni senzor s točnošću ± 3ºC
- Registrirajte se za starenje
- I2C sučelje od 400 Khz
- Niska potrošnja energije
- Rezervna baterija CR2032 s dvogodišnjim ili trogodišnjim vijekom trajanja
- Radni napon: 2,3 do 5,5 V
Kružni dijagram

Kružna veza između DS3231 RTC i Arduino UNO:
|
DS3231 |
Arduino UNO |
|
VCC |
5V |
|
GND |
GND |
|
SDA |
A4 |
|
SCL |
A4 |
Kružne veze između 74HC595 IC i Arduino Uno:
|
74HC595 IK |
Arduino UNO |
|
11-SH_CP (SRCLK) |
6 |
|
12-ST_CP (RCLK) |
5 |
|
14-DS (podaci) |
4 |
|
13-OE (zasun) |
GND |
|
8-GND |
GND |
|
10-MR (SRCLR) |
+ 5V |
|
16-VCC |
+ 5V |
Kružne veze između IC 74HC595 i četveroznamenkastog sedmog segmenta i Arduino UNO:
|
4-znamenkastiSevenSegment |
IC 74HC595 |
Arduino UNO |
|
A |
Q0 |
- |
|
B |
Q1 |
- |
|
C |
Q2 |
- |
|
D |
Q3 |
- |
|
E |
Q4 |
- |
|
F |
P5 |
- |
|
G |
P6 |
- |
|
D1 |
- |
10 |
|
D2 |
- |
11 |
|
D3 |
- |
12 |
|
D4 |
- |
9 |

Programiranje Arduino UNO za multipleksiranje sedmosegmentnog prikaza
Kompletni kod i radni video priloženi su na kraju ovog vodiča. U odjeljku za programiranje objasnit će se kako se vrijeme (sat i minuta) uzima iz RTC modula u 24-satnom formatu, a zatim pretvara u odgovarajući format za njihovo prikazivanje na četveroznamenkastom 7-segmentnom prikazu.
Za povezivanje DS3231 RTC modula s Arduino UNO koristi se I2C sabirnica Arduino UNO. Knjižnica zvana
U ovom konceptu, sat i minuta uzimaju se prvo iz RTC-a i kombiniraju se zajedno poput 0930 (21:30), a zatim se pojedinačne znamenke odvajaju kao tisuće, stotine, desetice, jedinica i pojedinačne znamenke pretvorene u binarni format poput 0 u 63 (0111111). Ovaj se binarni kod šalje u registar pomaka, a zatim iz registra pomaka u sedmerosegment, uspješno prikazujući znamenku 0 u sedmosegmentnom prikazu. Na taj se način četiri znamenke multipleksiraju i prikazuju se sat i minuta.
U početku su uključene potrebne knjižnice kao što su DS3231 i Wire knjižnica (I2C knjižnica).
#include
Igle su definirane za kontrolu od sedam segmenata. Te će kontrole igrati važnu ulogu u multipleksiranju zaslona.
#define latchPin 5 #define clockPin 6 #define dataPin 4 #define dot 2
Varijable su deklarirane za pohranu pretvorenog ili sirovog rezultata preuzetog iz RTC-a.
int h; // Varijabla deklarirana za sat int m; // Varijabla deklarirana za minute int tisuće; int stotine; int desetke; int jedinica; bool h24; bool PM;
Dalje se objekt za klasu DS3231 deklarira kao RTC radi pojednostavljenja upotrebe u daljnjim redovima.
DS3231 RTC;
Kako je RTC modul povezan s Arduinom pomoću I2C komunikacije. Dakle, wire.begin () koristi se za pokretanje I2C komunikacije u zadanoj adresi RTC-a jer ne postoje drugi I2C moduli.
Wire.begin ();
Definirani su način pin-a hoće li se GPIO ponašati kao izlaz ili ulaz.
pinMode (9, IZLAZ); pinMode (10, IZLAZ); pinMode (11, IZLAZ); pinMode (12, IZLAZ); pinMode (zasunPin, IZLAZ); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (točka, IZLAZ);
Petlja radi beskonačno i potrebno je vrijeme u satima i minutama od RTC DS3231 modula. 'h24' označava varijablu formata od 24 sata.
int h = RTC.getHour (h24, PM); int m = RTC.getMinute ();
Tada se sat i minuta kombiniraju kao jedan broj (primjer ako je sat 10, a min 60 onda je broj 10 * 100 = 1000 + 60 = 1060).
int broj = h * 100 + m;
Na pojedine znamenke iz broja dobivaju (primjer 1060- 1 je tisuću, 0 je hundered, jedan je deseti i 0 je zadnja znamenka). Za odvajanje znamenki koristi se operator modula. Na primjer, 1060. godine dobiti 1 onda 1060/1000 = 1,06% 10 = 1). Dakle, zasebne znamenke pohranjene su u zasebne varijable.
int tisuće = broj / 1000% 10; int stotine = broj / 100% 10; int desetice = broj / 10% 10; int jedinica = broj% 10;
Nakon toga definira se izjava slučaja prekidača za svaku pojedinu znamenku za njihovo pretvaranje u odgovarajući format (binarni format) i slanje putem registra smjene za prikaz u 7-segmentu. Na primjer (za 1 znamenku mijenja se u 06 (0000 0110)). Tako da se šalje putem smjene i 1 znamenka se prikazuje u 7-segmentu (0 za NISKO, 1 za VISOKO).
prekidač (t) { slučaj 0: jedinica = 63; pauza; slučaj 1: jedinica = 06; pauza; slučaj 2: jedinica = 91; pauza; slučaj 3: jedinica = 79; pauza; slučaj 4: jedinica = 102; pauza; slučaj 5: jedinica = 109; pauza; slučaj 6: jedinica = 125; slučaj 7: jedinica = 07; pauza; slučaj 8: jedinica = 127; pauza; slučaj 9: jedinica = 103; pauza; }
Zatim se pojedinačna znamenka u binarnom formatu šalje putem funkcije 'shiftout' s prvo MSB-om, a odgovarajući pin pin postaje VISOK, a zasun HIGH.
digitalWrite (9, LOW); digitalWrite (latchPin, LOW); shiftOut (dataPin, clockPin, MSBFIRST, tisuće); digitalWrite (latchPin, HIGH); digitalWrite (9, VISOKO); kašnjenje (5);

Time je završen kompletan kod. Većina objašnjenja funkcije dana je u odjeljku za komentare koda, odmah pored retka koda. Frekvencija sata odredit će pogled na vrijeme i kvalitetu multipleksiranja, tj. Ako se koristi nizak sat, tada se može vidjeti treperenje gdje kao da je brzina takta tada neće biti takvog treperenja i može se vidjeti stabilno vrijeme.
Imajte na umu da se za pristup RTC modulu mora održavati napon sabirnice I2C. Da biste dali bilo kakav prijedlog ili ako sumnjate, molimo vas da komentirate u nastavku.
