- Reikalingos medžiagos:
- Kas yra RTC?
- DS3231 RTC prijungimas prie MSP430:
- MSP430 programavimas RTC moduliui:
Šioje pamokoje sukursime skaitmeninį laikrodį, susiedami RTC modulį DS3231 su MSP430, o laiką ir datą parodysime 16x2 LCD ekrane. „MSP-EXP430G2“ yra „Texas Instruments“ sukurtas kūrimo įrankis, dar žinomas kaip „LaunchPad“, skirtas išmokti ir praktikuoti, kaip naudotis jų mikrovaldikliais. Ši plokštė priklauso „MSP430 Value Line“ kategorijai, kur galime užprogramuoti visus „MSP430“ serijos mikrovaldiklius. Jei dar nesinaudojote „MSP“, patikrinkite, kaip pradedate naudotis „MSP430“ mokymo programa.
Reikalingos medžiagos:
- MSP430
- DS3231 RTC modulis
- PODAS -10k
- LCD modulis 16 * 2
- Jungiamieji laidai
- Bandomoji Lenta
Kas yra RTC?
DS3231 yra RTC (Real Time Clock) modulis. Jis naudojamas daugumos „Electronics“ projektų datai ir laikui palaikyti. Šis modulis turi savo monetų elementų maitinimo šaltinį, kurį naudodamas jis palaiko datą ir laiką net tada, kai pagrindinė energija yra pašalinta arba MCU yra iš naujo nustatytas iš naujo. Taigi, kai šiame modulyje nustatysime datą ir laiką, ji visada ją stebės. Yra keli RTC IC tipai, tokie kaip DS1307, DS3231 ir kt.
Mes anksčiau naudojome RTC su kitais mikrovaldikliais toliau pateiktuose projektuose:
Pastaba: Pirmą kartą naudodamiesi šiuo moduliu turite nustatyti datą ir laiką. Taip pat galite naudoti RTC IC DS1307, anksčiau mes naudojome DS1307 su „Arduino“.
DS3231 RTC prijungimas prie MSP430:
„ MSP430“ mikrovaldiklio pagrindu veikiančio skaitmeninio laikrodžio schema pateikta žemiau. Kaip sakyta anksčiau, DS3231 veikia naudodamasis „I2C“ ryšiu, todėl jis turės nuoseklų laikrodį (SCL) ir nuoseklių duomenų (SDA) kaiščius, kurie turi būti prijungti prie mūsų MSP430 I2C kaiščių, tai yra 9 kaištis (PIN 2.1)., SCL) ir kaištis 10 (PIN 2.2, SDA).
MSP430 suteikia 3,3 V Vcc, bet mums reikia 5 V, kad galėtume jį prijungti prie LCD ir RTC modulio. Taigi, mes naudosime nulaužimą, šalia USB kabelio jungties yra trumpiklis, pavadintas TP1. Iš ten galite paimti 5V.
Grandinės schema:
MSP430 programavimas RTC moduliui:
Čia programavimui naudojame „Energia IDE“. Tai tas pats, kas „Arduino IDE“, ir paprasta naudoti. Jei dar nesinaudojote MSP ir „energia“, pradėkite naudotis MSP naudodami „Energia IDE“. Norėdami susieti RTC modulį, mums reikia šios plokštės bibliotekos. Atsisiųskite RTC biblioteką iš šios nuorodos ir įdiekite ją.
Mums taip pat reikalingos „ Wire“ (naudojamos I2C ryšiui) ir skystųjų kristalų bibliotekos, kurios iš anksto įdiegtos „Energia IDE“.
Pilnas šio MSP430 skaitmeninio laikrodžio kodas pateiktas šio straipsnio pabaigoje. Kodas yra paprastas ir lengvai suprantamas. Čia mes paaiškiname keletą jo dalių.
Pirmiausia turime įtraukti reikalingas bibliotekas.
Žemiau esanti biblioteka skirta I2C ryšiui tarp RTC modulio ir MSP430. SDA ir SCK kaiščiai jau apibrėžti šioje bibliotekoje, todėl neprivalome atskirai deklaruoti šių kaiščių.
# įtraukti
Tada mes įtraukėme RTClib.h biblioteką RTC laikrodžiui ir LiquidCrystal.h LCD funkcijoms.
#include "RTClib.h" #include
Po to turime sukurti egzempliorių, kad inicializuotume savo RTC modulį.
RTC_DS3231 rtc;
Tada sukurkite 7 dydžio masyvą ir visas septynias dienas su pavadinimu laikykite.
char daysOfTheWeek = {"sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis"};
Čia yra MSP430 kaiščių deklaracija, kurią reikia naudoti LCD ekrane: (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);
Atlikdami tuščią sąranką () , mes inicializavome sąsają su LCD ekranu ir RTC ir nurodėme ekrano matmenis (plotį ir aukštį), reikia pradėti iškviesti ()
prieš kitas bibliotekos komandas.
negaliojanti sąranka () { lcd.begin (16, 2); lcd.setCursor (3,0); „lcd.print“ („RTC Clock“); vėlavimas (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Dabar ekrane rodomas laikas yra teisingas, tačiau iškyla problema. Kiekvieną kartą paleidus / iš naujo nustatant mikrovaldiklį, LCD rodomas laikas, kuriuo įkėlėte kodą. Taip yra todėl, kad funkcija rtc.adjust () išsaugojo jūsų kompiuterio laiką, taigi, kai nustatote iš naujo, jis prasideda tuo laiku.
Norėdami išspręsti šią problemą, pirmiausia įkelkite programą su rtc.adjust () funkcija nekomentuota . Tada nedelsdami pakomentuokite tą pačią eilutę ir dar kartą įkelkite programą. Dabar jūsų data ir laikas yra nustatyti, o mikrokontrolerio nustatymas iš naujo neturės įtakos.
Pagal ciklo funkciją imame datą ir laiką iš RTC modulio ir saugome iš anksto nustatytame kintamajame, kuris dabar vadinamas, ir rodome jį LCD, naudodamiesi funkcija lcd.print ()
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Visas kodas ir vaizdo įrašas pateikiami žemiau.