- Απαιτούμενα στοιχεία
- Οθόνη 4-ψηφίων 7 τμημάτων
- 74HC595 Shift Register IC
- Ενότητα DS3231 RTC
- Διάγραμμα κυκλώματος
- Προγραμματισμός του Arduino UNO για Πολλαπλή εμφάνιση επτά τμημάτων
Τα ψηφιακά ρολόγια τοίχου γίνονται πιο δημοφιλή σήμερα και είναι καλύτερα από το αναλογικό ρολόι, καθώς παρέχει ακριβή χρόνο σε ώρες, λεπτά και δευτερόλεπτα και είναι εύκολο να διαβάσετε τις τιμές. Ορισμένα ψηφιακά ρολόγια έχουν επίσης πολλές εγκαταστάσεις όπως εμφάνιση θερμοκρασίας, υγρασίας, ρύθμιση πολλαπλών συναγερμών κ.λπ. Τα περισσότερα ψηφιακά ρολόγια χρησιμοποιούν οθόνη επτά τμημάτων.
Προηγουμένως κατασκευάσαμε πολλά κυκλώματα ψηφιακών ρολογιών είτε χρησιμοποιώντας οθόνες 7 τμημάτων είτε χρησιμοποιώντας LCD 16x2. Εδώ μπορείτε να έχετε τα πλήρη σχέδια PCB του ψηφιακού ρολογιού με βάση το AVR Αυτό το σεμινάριο αφορά την παραγωγή ενός ψηφιακού ρολογιού με την πολυπλεξία τεσσάρων 7 οθονών με χρήση του Arduino UNO και την εμφάνιση του χρόνου σε μορφή HH: MM.
Απαιτούμενα στοιχεία
- Οθόνη 4-ψηφίων 7 τμημάτων
- 74HC595 IC
- Ενότητα DS3231 RTC
- Arduino UNO
- Ψωμί
- Σύνδεση καλωδίων
Οθόνη 4-ψηφίων 7 τμημάτων
Η τετραψήφια οθόνη 7 τμημάτων έχει τέσσερα επτά τμήματα που ενώνονται μεταξύ τους ή μπορούμε να πούμε ότι είναι πολυπλεξία μαζί. Χρησιμοποιούνται για την εμφάνιση αριθμητικών τιμών και επίσης ορισμένων αλφαβήτων με δεκαδικά και άνω και κάτω τελεία. Η οθόνη μπορεί να χρησιμοποιηθεί και προς τις δύο κατευθύνσεις. Τέσσερα ψηφία είναι χρήσιμα για τη δημιουργία ψηφιακών ρολογιών ή για την καταμέτρηση αριθμών από 0 έως 9999. Ακολουθεί το εσωτερικό διάγραμμα για την οθόνη 4-Digit 7 Segment.
Κάθε τμήμα διαθέτει ένα LED με ατομικό έλεγχο LED. Υπάρχουν δύο τύποι επτά οθονών όπως Common Anode και Common Cathode. Η παραπάνω εικόνα εμφανίζει την κοινή προβολή τμήματος ανόδου τύπου 7.
Κοινή άνοδος
Στο Common Anode, όλα τα θετικά τερματικά (Anodes) και των 8 LED συνδέονται μεταξύ τους, που ονομάζονται COM. Και όλα τα αρνητικά τερματικά μένουν μόνα τους ή συνδέονται στις ακίδες μικροελεγκτή. Χρησιμοποιώντας μικροελεγκτή, εάν η λογική LOW έχει ρυθμιστεί για να φωτίζει το συγκεκριμένο τμήμα LED και ρυθμίζει τη λογική Υψηλή για να σβήσει το LED.
Κοινή κάθοδος
Στην Κοινή Κάθοδο, όλα τα Αρνητικά τερματικά (κάθοδος) και των 8 LED συνδέονται μεταξύ τους, που ονομάζονται COM. Και όλα τα θετικά τερματικά μένουν μόνα τους ή συνδέονται στις ακίδες μικροελεγκτή. Χρησιμοποιώντας μικροελεγκτή, εάν ορίσετε λογική HIGH για να φωτίσετε το LED και ρυθμίστε το LOW να απενεργοποιήσετε το LED
Μάθετε περισσότερα σχετικά με τις οθόνες 7 τμημάτων εδώ και ελέγξτε πώς μπορεί να διασυνδεθεί με άλλους μικροελεγκτές:
- 7 Τμήμα Διασύνδεση με Arduino
- 7 Τμήμα Διασύνδεση με Raspberry Pi
- Διασύνδεση επτά τμημάτων με ARM7-LPC2148
- 7 Διασύνδεση οθόνης τμήματος με μικροελεγκτή PIC
- 7 Τμήμα Διασύνδεση με 8051 Μικροελεγκτή
74HC595 Shift Register IC
Το IC 74HC595 είναι επίσης γνωστό ως 8-Bit Serial IN - Parallel OUT Shift Register. Αυτό το IC μπορεί να λάβει είσοδο δεδομένων σε σειριακή σειρά και μπορεί να ελέγχει παράλληλα 8 ακίδες εξόδου. Αυτό είναι χρήσιμο στη μείωση των ακίδων που χρησιμοποιούνται από τον μικροελεγκτή. Μπορείτε να βρείτε όλα τα σχετικά προγράμματα 74HC595 shift register εδώ.
Εργασία 74HC595 IC:
Αυτό το IC χρησιμοποιεί τρεις ακίδες όπως Ρολόι, Δεδομένα & Κλείδωμα με τον μικροελεγκτή για τον έλεγχο των 8 ακίδων εξόδου του IC. Το ρολόι χρησιμοποιείται για την παροχή συνεχών παλμών από τον μικροελεγκτή και ο πείρος δεδομένων χρησιμοποιείται για την αποστολή των δεδομένων όπως η έξοδος που πρέπει να ενεργοποιηθεί ή να απενεργοποιηθεί στον αντίστοιχο χρόνο ρολογιού.
Pinout:
Αριθμός Pin |
Όνομα καρφιτσώματος |
Περιγραφή |
1,2,3,4,5,6,7 |
Καρφίτσες εξόδου (Q1 έως Q7) |
Το 74HC595 έχει 8 καρφίτσες εξόδου από τις οποίες 7 είναι αυτές. Μπορούν να ελεγχθούν σειριακά |
8 |
Εδαφος |
Συνδέθηκε στο έδαφος του μικροελεγκτή |
9 |
(Q7) Σειριακή έξοδος |
Αυτός ο πείρος χρησιμοποιείται για τη σύνδεση περισσότερων από ενός 74HC595 ως κλιμακωτής |
10 |
(MR) Κύρια επαναφορά |
Επαναφέρει όλες τις εξόδους ως χαμηλές. Πρέπει να κρατάτε ψηλά για κανονική λειτουργία |
11 |
(SH_CP) Ρολόι |
Αυτός είναι ο ακροδέκτης ρολογιού στον οποίο πρέπει να παρέχεται το σήμα ρολογιού από MCU / MPU |
12 |
(ST_CP) Μάνδαλο |
Ο πείρος Latch χρησιμοποιείται για την ενημέρωση των δεδομένων στις ακίδες εξόδου. Είναι ενεργό υψηλό |
13 |
(OE) Ενεργοποίηση εξόδου |
Το Output Enable χρησιμοποιείται για την απενεργοποίηση των εξόδων. Πρέπει να διατηρείται χαμηλή για κανονική λειτουργία |
14 |
(DS) Σειριακά δεδομένα |
Αυτή είναι η καρφίτσα στην οποία αποστέλλονται τα δεδομένα, με βάση την οποία ελέγχονται οι 8 έξοδοι |
15 |
(Q0) Έξοδος |
Ο πρώτος πείρος εξόδου. |
16 |
Vcc |
Αυτός ο ακροδέκτης τροφοδοτεί το IC, συνήθως χρησιμοποιείται + 5V. |
Ενότητα DS3231 RTC
Το DS3231 είναι μια μονάδα RTC. Το RTC σημαίνει Ρολόι σε πραγματικό χρόνο. Αυτή η μονάδα χρησιμοποιείται για να θυμάται την ώρα και την ημερομηνία ακόμη και όταν το κύκλωμα δεν τροφοδοτείται. Διαθέτει αντίγραφο ασφαλείας μπαταρίας CR2032 για την εκτέλεση της μονάδας σε περίπτωση απουσίας εξωτερικής ισχύος. Αυτή η μονάδα περιλαμβάνει επίσης έναν αισθητήρα θερμοκρασίας. Η ενότητα μπορεί να χρησιμοποιηθεί σε ενσωματωμένα έργα, όπως η κατασκευή ψηφιακού ρολογιού με ένδειξη θερμοκρασίας κ.λπ.
- Αυτόματος τροφοδότης κατοικίδιων ζώων χρησιμοποιώντας το Arduino
- Μονάδα διασύνδεσης RTC (DS3231) με μικροελεγκτή PIC: Ψηφιακό ρολόι
- Μονάδα διασύνδεσης RTC (DS3231) με MSP430: Ψηφιακό ρολόι
- Ρολόι σε πραγματικό χρόνο ESP32 χρησιμοποιώντας την ενότητα DS3231
- Ψηφιακό ρολόι τοίχου σε PCB χρησιμοποιώντας AVR Microcontroller Atmega16 και DS3231 RTC
Pinout του DS3231:
Όνομα καρφιτσώματος |
Χρήση |
VCC |
Συνδέθηκε στο θετικό της πηγής ισχύος |
GND |
Συνδέθηκε στο έδαφος |
SDA |
Σειριακός πείρος δεδομένων (I2C) |
SCL |
Σειριακός πείρος ρολογιού (I2C) |
SQW |
Καρφίτσα εξόδου τετραγωνικού κύματος |
32Κ |
Έξοδος ταλαντωτή 32K |
Χαρακτηριστικά και προδιαγραφές:
- Το RTC μετρά δευτερόλεπτα, λεπτά, ώρες και έτος
- Ψηφιακός αισθητήρας θερμοκρασίας με ακρίβεια ± 3ºC
- Εγγραφείτε για γήρανση
- 400Khz I2C διεπαφή
- Χαμηλή κατανάλωση ενέργειας
- Αντίγραφο ασφαλείας μπαταρίας CR2032 με διάρκεια ζωής δύο έως τριών ετών
- Τάση λειτουργίας: 2.3 έως 5.5V
Διάγραμμα κυκλώματος
Σύνδεση κυκλώματος μεταξύ DS3231 RTC & Arduino UNO:
DS3231 |
Arduino UNO |
VCC |
5V |
GND |
GND |
SDA |
Α4 |
SCL |
Α4 |
Συνδέσεις κυκλώματος μεταξύ 74HC595 IC & Arduino Uno:
74HC595 IC |
Arduino UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (δεδομένα) |
4 |
13-ΟΕ (Μάνδαλο) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5V |
16-VCC |
+ 5V |
Συνδέσεις κυκλώματος μεταξύ IC 74HC595 & 4-Digit Seven Segment & Arduino UNO:
4-DigitSevenSegment |
IC 74HC595 |
Arduino UNO |
ΕΝΑ |
Ε0 |
- |
σι |
Ε1 |
- |
ντο |
Ε2 |
- |
ρε |
Ε3 |
- |
μι |
Ε4 |
- |
φά |
Ε5 |
- |
σολ |
Ε6 |
- |
Δ1 |
- |
10 |
Δ2 |
- |
11 |
Δ3 |
- |
12 |
Δ4 |
- |
9 |
Προγραμματισμός του Arduino UNO για Πολλαπλή εμφάνιση επτά τμημάτων
Ο πλήρης κώδικας και το βίντεο εργασίας επισυνάπτονται στο τέλος αυτού του σεμιναρίου. Στην ενότητα προγραμματισμού, πώς λαμβάνεται ο χρόνος (ώρα και λεπτό) από τη μονάδα RTC σε μορφή 24 ωρών και στη συνέχεια μετατρέπεται σε αντίστοιχη μορφή για την εμφάνισή τους στην τετραψήφια οθόνη 7 Τμημάτων.
Για τη διασύνδεση της μονάδας DS3231 RTC με το Arduino UNO χρησιμοποιείται ο δίαυλος I2C του Arduino UNO. Μια βιβλιοθήκη που ονομάζεται
Σε αυτήν την ιδέα, η ώρα και το λεπτό λαμβάνονται πρώτα από το RTC και συνδυάζονται μαζί όπως 0930 (09:30 μ.μ.) και στη συνέχεια τα μεμονωμένα ψηφία διαχωρίζονται όπως χιλιάδες, εκατόν, δεκάδες, μονάδα και τα μεμονωμένα ψηφία μετατρέπονται σε δυαδική μορφή όπως 0 σε 63 (0111111). Αυτός ο δυαδικός κώδικας αποστέλλεται σε έναν καταχωρητή βάρδιας και μετά από τον καταχωρητή βάρδιας στο επτά τμήμα, εμφανίζοντας με επιτυχία το ψηφίο 0 σε επτά τμήματα. Με αυτόν τον τρόπο, τα τέσσερα ψηφία πολυπλέκονται και εμφανίζεται ώρα και λεπτό.
Αρχικά, περιλαμβάνεται η απαραίτητη βιβλιοθήκη όπως η βιβλιοθήκη DS3231 και η βιβλιοθήκη Wire (βιβλιοθήκη I2C).
#περιλαμβάνω
Οι ακίδες ορίζονται για τον έλεγχο επτά τμημάτων. Αυτά τα χειριστήρια θα διαδραματίσουν σημαντικό ρόλο στην πολυπλεξία της οθόνης.
#define latchPin 5 #define clockPin 6 #define data Pin 4 #define dot 2
Οι μεταβλητές δηλώνονται ότι αποθηκεύουν το μετατρεπόμενο ή ακατέργαστο αποτέλεσμα που λαμβάνεται από το RTC.
int h; // Η μεταβλητή δηλώθηκε για ώρα int m; // Η μεταβλητή δηλώθηκε για χιλιάδες λεπτά . int εκατοντάδες? int δεκάδες? int μονάδα; bool h24; bool PM;
Στη συνέχεια, το αντικείμενο για την κλάση DS3231 δηλώνεται ως RTC για απλοποίηση της χρήσης σε περαιτέρω γραμμές.
DS3231 RTC;
Καθώς η μονάδα RTC διασυνδέεται με το Arduino χρησιμοποιώντας την επικοινωνία I2C. Έτσι, το wire.begin () χρησιμοποιείται για την έναρξη της επικοινωνίας I2C στην προεπιλεγμένη διεύθυνση του RTC, καθώς δεν υπάρχουν άλλες μονάδες I2C.
Wire.begin ();
Ο τρόπος λειτουργίας pin ορίζεται, εάν το GPIO θα συμπεριφέρεται ως έξοδος ή είσοδος.
pinMode (9, ΕΞΟΔΟΣ); pinMode (10, ΕΞΟΔΟΣ); pinMode (11, ΕΞΟΔΟΣ); pinMode (12, ΕΞΟΔΟΣ); pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (τελεία, ΕΞΟΔΟΣ);
Ο βρόχος τρέχει απεριόριστα και διαρκεί ο χρόνος σε ώρα και λεπτό από τη μονάδα RTC DS3231. Το «h24» υποδεικνύει τη μεταβλητή μορφής 24 ωρών.
int h = RTC.getHour (h24, ΜΜ); int m = RTC.getMinute ();
Στη συνέχεια, η ώρα και το λεπτό συνδυάζονται ως ένας αριθμός (παράδειγμα αν η ώρα είναι 10 και το λεπτό είναι 60 τότε ο αριθμός είναι 10 * 100 = 1000 + 60 = 1060).
αριθμός int = h * 100 + m;
Οι μεμονωμένες ψηφία από τον αριθμό που ελήφθη (παράδειγμα 1060- 1 είναι χιλιάδες, 0 είναι hundered, 1 είναι δέκατο και 0 είναι τελευταίο ψηφίο). Για να διαχωρίσετε τα ψηφία, χρησιμοποιείται ο τελεστής συντελεστή. Για παράδειγμα, στο 1060 για να πάρετε 1 τότε 1060/1000 = 1,06% 10 = 1). Έτσι, χωριστά ψηφία αποθηκεύονται σε ξεχωριστές μεταβλητές.
χιλιάδες int = αριθμός / 1000% 10; εκατοντάδες int = αριθμός / 100% 10; int tens = αριθμός / 10% 10; int μονάδα = αριθμός% 10;
Μετά από αυτό ορίζεται μια δήλωση περίπτωσης για κάθε μεμονωμένο ψηφίο για τη μετατροπή τους σε αντίστοιχη μορφή (δυαδική μορφή) και την αποστολή μέσω shift register για εμφάνιση σε 7 τμήματα. Για παράδειγμα (για 1 ψηφίο αλλάζει σε 06 (0000 0110)). Έτσι ώστε να αποστέλλεται μέσω shift και 1 ψηφίο εμφανίζεται σε 7 τμήματα (0 για LOW, 1 για HIGH)
διακόπτης (t) { περίπτωση 0: μονάδα = 63; Διακοπή; περίπτωση 1: μονάδα = 06; Διακοπή; περίπτωση 2: μονάδα = 91; Διακοπή; περίπτωση 3: μονάδα = 79; Διακοπή; περίπτωση 4: μονάδα = 102; Διακοπή; περίπτωση 5: μονάδα = 109; Διακοπή; περίπτωση 6: μονάδα = 125; περίπτωση 7: μονάδα = 07; Διακοπή; περίπτωση 8: μονάδα = 127; Διακοπή; περίπτωση 9: μονάδα = 103; Διακοπή; }
Στη συνέχεια, το μεμονωμένο ψηφίο σε δυαδική μορφή αποστέλλεται μέσω της λειτουργίας «μετατόπισης» με το MSB πρώτα και ο αντίστοιχος ακροδέκτης ψηφίων γίνεται ΥΨΗΛΟΣ και ο πείρος μανδάλωσης γίνεται ΥΨΟΣ.
digitalWrite (9, LOW); digitalWrite (latchPin, LOW); shiftOut (dataPin, clockPin, MSBFIRST, χιλιάδες); digitalWrite (latchPin, HIGH); digitalWrite (9, ΥΨΗΛΟΣ); καθυστέρηση (5)
Αυτό ολοκληρώνει τον πλήρη κώδικα. Οι περισσότερες από τις εξηγήσεις της λειτουργίας δίνονται στην ενότητα σχολίων κώδικα ακριβώς δίπλα στη γραμμή κώδικα. Η συχνότητα του ρολογιού θα αποφασίσει την προβολή του Χρόνου και της ποιότητας της πολυπλεξίας Δηλαδή εάν χρησιμοποιείται χαμηλό ρολόι, τότε το τρεμόπαιγμα μπορεί να φανεί όπου σαν η ταχύτητα του ρολογιού να είναι υψηλή τότε δεν θα υπάρχει τέτοιο τρεμόπαιγμα και μπορεί να φανεί σταθερός χρόνος.
Σημειώστε ότι για να αποκτήσετε πρόσβαση στη μονάδα RTC, πρέπει να διατηρηθεί η τάση διαύλου I2C. Για να δώσετε οποιαδήποτε πρόταση ή εάν έχετε οποιαδήποτε αμφιβολία, παρακαλώ σχολιάστε παρακάτω.