- Materiale necesare:
- Ce este RTC ??
- Conectarea DS3231 RTC cu MSP430:
- Programarea MSP430 pentru modulul RTC:
În acest tutorial vom crea un ceas digital prin interfața modulului RTC DS3231 cu MSP430 și vom afișa ora și data pe ecranul LCD 16x2. MSP-EXP430G2 este un instrument de dezvoltare cunoscut și sub denumirea de LaunchPad furnizat de Texas Instruments pentru a învăța și a practica modul de utilizare a microcontrolerelor lor. Această placă se încadrează în categoria MSP430 Value Line, unde putem programa toate microcontrolerele din seria MSP430. Dacă nu sunteți nou în MSP, verificați tutorialul nostru de început cu MSP430.
Materiale necesare:
- MSP430
- Modulul DS3231 RTC
- POT -10k
- Modul LCD 16 * 2
- Conectarea firelor
- Breadboard
Ce este RTC ??
DS3231 este un modul RTC (Real Time Clock). Este folosit pentru a menține data și ora pentru majoritatea proiectelor electronice. Acest modul are propria sa sursă de alimentare cu celulă monedă folosind care menține data și ora chiar și atunci când alimentarea principală este scoasă sau MCU a trecut printr-o resetare hard. Deci, odată ce am setat data și ora în acest modul, acesta îl va urmări întotdeauna. Există mai multe tipuri de IC-uri RTC disponibile, cum ar fi DS1307, DS3231 etc.
Am folosit anterior RTC cu alte microcontrolere în proiectele de mai jos:
Notă: Când utilizați acest modul pentru prima dată, trebuie să setați data și ora. Puteți utiliza și RTC IC DS1307, am folosit anterior DS1307 cu Arduino.
Conectarea DS3231 RTC cu MSP430:
Diagrama circuitului pentru ceasul digital bazat pe microcontroler MSP430 este prezentată mai jos. După cum am spus mai devreme, DS3231 funcționează cu ajutorul comunicării I2C, astfel încât va avea un Serial Clock (SCL) și un pin Serial Data (SDA) care trebuie conectat la pinii I2C de pe MSP430, care este pinul 9 (PIN 2.1), SCL) și pinul 10 (PIN 2.2, SDA).
MSP430 oferă 3,3 V Vcc, dar avem nevoie de 5 V pentru a-l conecta cu modulul LCD și RTC. Deci, vom folosi un hack, există un jumper disponibil numit TP1 lângă conectorul cablului USB. Puteți lua 5V de acolo.
Diagrama circuitului:
Programarea MSP430 pentru modulul RTC:
Aici folosim Energia IDE pentru programare. Este la fel ca Arduino IDE și ușor de utilizat. Dacă nu sunteți nou în MSP și energia, atunci începeți să începeți cu MSP folosind Energia IDE. Pentru a interfața modulul RTC avem nevoie de bibliotecă pentru această placă. Descărcați biblioteca RTC din acest link și instalați-o.
De asemenea, avem nevoie de biblioteci Wire (utilizate pentru comunicarea I2C) și liquidcrystal care sunt preinstalate în Energia IDE.
Codul complet pentru acest ceas digital MSP430 este dat la sfârșitul acestui articol. Codul este simplu și ușor de înțeles. Aici explicăm câteva părți ale acestuia.
În primul rând, trebuie să includem bibliotecile necesare.
Biblioteca de mai jos este pentru comunicarea I2C între modulul RTC și MSP430. Pinii SDA și SCK sunt deja definiți în această bibliotecă, deci nu trebuie să declarăm acești pinii separat.
#include
Apoi am inclus biblioteca RTClib.h pentru ceasul RTC și LiquidCrystal.h pentru funcțiile LCD.
#include "RTClib.h" #include
După aceasta, trebuie să creăm o instanță pentru a inițializa modulul nostru RTC.
RTC_DS3231 rtc;
Apoi, faceți o serie de mărimea 7 și stocați toate cele șapte zile cu numele în ea.
char daysOfTheWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
Iată declarația Pinilor MSP430 care trebuie utilizată de afișajul 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);
În setarea nulă () , am inițializat interfața cu ecranul LCD și RTC și am specificat dimensiunile (lățimea și înălțimea) afișajului, begin ()
trebuie apelat înainte de orice alte comenzi de bibliotecă.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print („RTC Clock”); întârziere (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Acum, Ora afișată pe afișaj este corectă, dar există o problemă, de fiecare dată când reporniți / resetați microcontrolerul, LCD va afișa Ora la care ați încărcat codul. Acest lucru se datorează faptului că funcția rtc.adjust () a stocat ora computerului dvs., astfel încât atunci când resetați, începe cu acel moment.
Pentru a remedia această problemă, încărcați mai întâi programul cu funcția rtc.adjust () necomentată. Apoi, comentează imediat aceeași linie și încarcă din nou programul. Acum, data și ora dvs. sunt setate și nu vor fi afectate de resetarea microcontrolerului.
În funcția de buclă luăm data și ora din modulul RTC și stocăm în variabila predefinită numită acum și o afișăm pe LCD folosind funcția lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. ……
Codul complet și videoclipul sunt prezentate mai jos.