- Tarvittavat materiaalit:
- Mikä on RTC?
- DS3231 RTC: n liittäminen MSP430: een:
- MSP430: n ohjelmointi RTC-moduulille:
Tässä opetusohjelmassa teemme digitaalisen kellon liittämällä RTC-moduulin DS3231 MSP430: een ja näyttämällä kellonajan ja päivämäärän 16x2 LCD: llä. MSP-EXP430G2 on kehitystyökalu eli LaunchPad, jonka Texas Instruments tarjoaa oppia ja harjoitella mikrokontrollereiden käyttöä. Tämä levy kuuluu MSP430 Value Line -luokkaan, jossa voimme ohjelmoida kaikki MSP430-sarjan mikrokontrollerit. Jos olet uusi MSP-käyttäjä, tarkista MSP430-opetusohjelman käytön aloittaminen.
Tarvittavat materiaalit:
- MSP430
- DS3231 RTC-moduuli
- POT -10k
- LCD-moduuli 16 * 2
- Johtojen liittäminen
- Leipälauta
Mikä on RTC?
DS3231 on RTC (Real Time Clock) -moduuli. Sitä käytetään pitämään päivämäärä ja aika useimmissa elektroniikkaprojekteissa. Tällä moduulilla on oma kolikkovirtalähde, jonka avulla se ylläpitää päivämäärää ja kellonaikaa, vaikka päävirta irrotettaisiin tai MCU olisi nollattu kovalla teholla. Joten kun asetamme päivämäärän ja kellonajan tässä moduulissa, se seuraa sitä aina. Saatavilla on useita RTC-IC-tyyppejä, kuten DS1307, DS3231 jne.
Olemme aiemmin käyttäneet RTC: tä muiden mikrokontrollerien kanssa alla olevissa projekteissa:
Huomaa: Kun käytät tätä moduulia ensimmäistä kertaa, sinun on asetettava päivämäärä ja kellonaika. Voit käyttää myös RTC IC DS1307: tä, olemme aiemmin käyttäneet DS1307: tä Arduinon kanssa.
DS3231 RTC: n liittäminen MSP430: een:
MSP430-mikrokontrolleripohjaisen digitaalisen kellon kytkentäkaavio on annettu alla. Kuten aiemmin kerrottiin, DS3231 toimii I2C-tiedonsiirron avulla, joten sillä on sarjakellon (SCL) ja sarjatietojen (SDA) tappi, joka on kytkettävä MSP430: n I2C-nastoihin, joka on tappi 9 (PIN 2.1)., SCL) ja tappi 10 (PIN 2.2, SDA).
MSP430 antaa 3,3 V Vcc, mutta tarvitsemme 5 V liittääksesi sen LCD- ja RTC-moduuleihin. Joten käytämme hakata, on hyppääjä nimeltään TP1 lähellä USB-kaapelin liitintä. Voit ottaa 5V sieltä.
Piirikaavio:
MSP430: n ohjelmointi RTC-moduulille:
Tässä käytämme Energia IDE: tä ohjelmointiin. Se on sama kuin Arduino IDE ja helppo käyttää. Jos olet uusi MSP ja energia, tutustu MSP: n käytön aloittamiseen Energia IDE: n avulla. RTC-moduulin käyttöliittymäksi tarvitsemme kirjastoa tälle kortille. Lataa RTC-kirjasto tästä linkistä ja asenna se.
Tarvitsemme myös Wire (käytetään I2C-viestintään) ja nestekidekirjastot, jotka on esiasennettu Energia IDE: hen.
Tämän MSP430-digitaalikellon täydellinen koodi on tämän artikkelin lopussa. Koodi on yksinkertainen ja helposti ymmärrettävä. Tässä selitämme muutamia osia siitä.
Ensinnäkin meidän on sisällytettävä tarvittavat kirjastot.
Alla oleva kirjasto on tarkoitettu I2C-tiedonsiirtoon RTC-moduulin ja MSP430: n välillä. SDA- ja SCK-nastat on jo määritelty tässä kirjastossa, joten meidän ei tarvitse ilmoittaa näitä nastoja erikseen.
#sisältää
Sitten olemme sisällyttäneet RTClib.h- kirjaston RTC-kellolle ja LiquidCrystal.h LCD-toiminnoille.
#include "RTClib.h" #include
Tämän jälkeen meidän on luotava instanssi RTC-moduulin alustamiseksi.
RTC_DS3231 rtc;
Tee sitten taulukko koko 7 ja säilytä kaikki seitsemän päivää nimen kanssa.
char daysOfTheWeek = {"sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"};
Tässä on MSP430: n nastojen ilmoitus, jota LCD-näyttö käyttää: (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);
In void setup () , olemme alustetaan rajapinta LCD-näytön ja RTC ja määritetty mitat (leveys ja korkeus) näytön, alkaa ()
on kutsua ennen kuin muu kirjasto komentoja.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC-kello"); viive (3000); lcd.clear (); RTCbegin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Nyt näytössä näkyvä aika on oikea, mutta siinä on ongelma, joka kerta, kun käynnistät / palautat mikrokontrollerin, LCD näyttää ajan, jolloin latait koodin. Tämä johtuu siitä, että rtc.adjust () -toiminto on tallentanut tietokoneesi ajan, joten kun nollaat, se alkaa tuolloin.
Voit korjata tämän ongelman lataamalla ohjelman ensin rtc.adjust () -toiminnolla kommentoimattomana. Sitten kommentoi välittömästi samaa riviä ja lataa ohjelma uudelleen. Nyt päivämäärä ja aika on asetettu, eikä mikro-ohjaimen nollaaminen vaikuta siihen.
Vuonna silmukan toiminnoksi vie päivämäärän ja ajan RTC-moduuli ja säilytä ennalta muuttujan nimeltään nyt ja näyttää sen LCD avulla lcd.print () funktio.
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Täydellinen koodi ja video on annettu alla.