- Απαιτούμενα υλικά:
- Τι είναι το RTC;
- Σύνδεση του DS3231 RTC με MSP430:
- Προγραμματισμός MSP430 για Ενότητα RTC:
Σε αυτό το σεμινάριο θα φτιάξουμε ένα Ψηφιακό Ρολόι διασυνδέοντας τη μονάδα RTC DS3231 με το MSP430 και θα εμφανίσουμε την ώρα και την ημερομηνία σε LCD 16x2. Το MSP-EXP430G2 είναι ένα Εργαλείο ανάπτυξης γνωστό ως LaunchPad που παρέχεται από το Texas Instruments για να μάθει και να εξασκηθεί στον τρόπο χρήσης των μικροελεγκτών τους. Αυτός ο πίνακας εμπίπτει στην κατηγορία Value Line MSP430, όπου μπορούμε να προγραμματίσουμε όλους τους μικροελεγκτές της σειράς MSP430. Εάν είστε νέοι στο MSP, ελέγξτε το ξεκίνημα με τον οδηγό MSP430.
Απαιτούμενα υλικά:
- MSP430
- Μονάδα DS3231 RTC
- POT -10k
- Ενότητα LCD 16 * 2
- Σύνδεση καλωδίων
- Ψωμί
Τι είναι το RTC;
Το DS3231 είναι μια ενότητα RTC (Ρολόι πραγματικού χρόνου). Χρησιμοποιείται για τη διατήρηση της ημερομηνίας και της ώρας για τα περισσότερα από τα έργα Ηλεκτρονικής. Αυτή η μονάδα διαθέτει τη δική της τροφοδοσία κυψέλης νομισμάτων χρησιμοποιώντας την οποία διατηρεί την ημερομηνία και την ώρα ακόμα και όταν η κύρια τροφοδοσία αφαιρεθεί ή το MCU έχει περάσει από σκληρή επαναφορά. Έτσι, μόλις ορίσουμε την ημερομηνία και την ώρα σε αυτήν την ενότητα, θα την παρακολουθεί πάντα. Υπάρχουν διάφοροι τύποι RTC ICs διαθέσιμοι όπως DS1307, DS3231 κ.λπ.
Έχουμε χρησιμοποιήσει προηγουμένως RTC με άλλους μικροελεγκτές στα παρακάτω έργα:
Σημείωση: Όταν χρησιμοποιείτε αυτήν την ενότητα για πρώτη φορά, πρέπει να ορίσετε την ημερομηνία και την ώρα. Μπορείτε επίσης να χρησιμοποιήσετε το RTC IC DS1307, έχουμε προηγουμένως χρησιμοποιήσει το DS1307 με το Arduino.
Σύνδεση του DS3231 RTC με MSP430:
Το διάγραμμα κυκλώματος για ψηφιακό ρολόι με βάση τον μικροελεγκτή MSP430 δίνεται παρακάτω. Όπως ειπώθηκε προηγουμένως, το DS3231 λειτουργεί με τη βοήθεια της επικοινωνίας I2C, οπότε θα έχει έναν ακροδέκτη Serial Clock (SCL) και έναν Serial Data (SDA) που πρέπει να συνδεθεί με τους ακροδέκτες I2C στο MSP430 μας που είναι ο πείρος 9 (PIN 2.1, SCL) και ακροδέκτης 10 (PIN 2.2, SDA).
Το MSP430 παρέχει 3.3V Vcc, αλλά χρειαζόμαστε 5V για να το συνδέσουμε με μονάδα LCD και RTC. Έτσι, θα χρησιμοποιήσουμε ένα hack, υπάρχει ένας βραχυκυκλωτήρας που ονομάζεται TP1 κοντά στην υποδοχή καλωδίου USB. Μπορείτε να πάρετε 5V από εκεί.
Διάγραμμα κυκλώματος:
Προγραμματισμός MSP430 για Ενότητα RTC:
Εδώ χρησιμοποιούμε το Energia IDE για προγραμματισμό. Είναι ίδιο με το Arduino IDE και εύκολο στη χρήση. Εάν είστε νέοι στο MSP και την ενέργεια, τότε ξεκινήστε με το MSP χρησιμοποιώντας το Energia IDE. Για διασύνδεση της μονάδας RTC χρειαζόμαστε βιβλιοθήκη για αυτόν τον πίνακα. Κατεβάστε τη βιβλιοθήκη RTC από αυτόν τον σύνδεσμο και εγκαταστήστε την.
Χρειαζόμαστε επίσης Wire (χρησιμοποιούνται για επικοινωνία I2C) και βιβλιοθήκες liquidcrystal που είναι προεγκατεστημένες στο Energia IDE.
Στο τέλος αυτού του άρθρου παρέχεται πλήρης κωδικός για αυτό το ψηφιακό ρολόι MSP430. Ο κωδικός είναι απλός και εύκολα κατανοητός. Εδώ εξηγούμε μερικά μέρη του.
Πρώτον, πρέπει να συμπεριλάβουμε τις απαραίτητες βιβλιοθήκες.
Η παρακάτω βιβλιοθήκη προορίζεται για επικοινωνία I2C μεταξύ της μονάδας RTC και του MSP430. Οι ακίδες SDA και SCK έχουν ήδη οριστεί σε αυτήν τη βιβλιοθήκη, επομένως δεν χρειάζεται να δηλώσουμε αυτές τις ακίδες ξεχωριστά.
#περιλαμβάνω
Στη συνέχεια, έχουμε συμπεριλάβει τη βιβλιοθήκη RTClib.h για ρολόι RTC και το LiquidCrystal.h για λειτουργίες LCD.
# συμπερίληψη "RTClib.h" #include
Μετά από αυτό, πρέπει να δημιουργήσουμε μια παρουσία για να προετοιμάσουμε την ενότητα RTC.
RTC_DS3231 rtc;
Στη συνέχεια, δημιουργήστε μια σειρά μεγέθους 7 και αποθηκεύστε και τις επτά ημέρες με το όνομα.
char daysOfTheWeek = {"Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"};
Εδώ είναι η δήλωση ακίδων του MSP430 για χρήση από την οθόνη LCD: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LiquidCrystal lcd (8, 6, 7,11,12,13);
Στην άκυρη ρύθμιση () , έχουμε αρχικοποιήσει τη διασύνδεση στην οθόνη LCD και το RTC και καθορίσαμε τις διαστάσεις (πλάτος και ύψος) της οθόνης, πρέπει να κληθεί η αρχή ()
πριν από οποιαδήποτε άλλη εντολή βιβλιοθήκης.
άκυρη ρύθμιση () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("Ρολόι RTC"); καθυστέρηση (3000) lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Τώρα, ο χρόνος που εμφανίζεται στην οθόνη είναι σωστός, αλλά υπάρχει ένα πρόβλημα, κάθε φορά που κάνετε επανεκκίνηση / επαναφορά του μικροελεγκτή σας, η οθόνη LCD θα εμφανίζει την ώρα κατά την οποία ανεβάσατε τον κωδικό. Αυτό συμβαίνει επειδή η λειτουργία rtc.adjust () έχει αποθηκεύσει την ώρα του υπολογιστή σας, οπότε όταν κάνετε επαναφορά, ξεκινά με αυτήν την ώρα.
Για να διορθώσετε αυτό το πρόβλημα, ανεβάστε πρώτα το πρόγραμμα με τη λειτουργία rtc.adjust () . Στη συνέχεια, σχολιάστε αμέσως την ίδια γραμμή και ανεβάστε ξανά το πρόγραμμα. Τώρα, η ημερομηνία και η ώρα σας έχουν οριστεί και δεν θα επηρεαστούν από την επαναφορά του μικροελεγκτή.
Στη λειτουργία βρόχου παίρνουμε ημερομηνία και ώρα από τη μονάδα RTC και αποθηκεύουμε στην προκαθορισμένη μεταβλητή που ονομάζεται τώρα και την εμφανίζουμε σε LCD χρησιμοποιώντας τη λειτουργία lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Ο πλήρης κωδικός και το βίντεο δίνονται παρακάτω.