RTC on elektroninen laite, jolla on keskeinen rooli reaaliaikainen sulautetun järjestelmän suunnittelu . Se tarjoaa tarkan ajan ja päivämäärän erilaisissa sovelluksissa, kuten järjestelmän kellossa, opiskelijoiden läsnäolojärjestelmässä ja hälytyksessä jne., Jotka seuraavat ajankohtaa ja antavat tasaisen tuloksen kyseiseen tehtävään. Tämä artikkeli esittelee RTC-liitännän 8051 mikropyörän kanssa ja sisäisten rekistereiden peruskäyttöä.

RTC-liitäntä 8051-mikrokontrolleriin
RTC-ohjelmointi ja rajapinta
RTC-liitäntä 8051-mikrokontrolleriin on samanlainen kuin kaikki muut siihen liitetyt 'reaaliaikakellot'. Katsotaan siis yksinkertaista RTC-liitäntää 8051-mikrokontrolleri ja siihen liittyvä ohjelmointimenettely.
Vaihe 1: Valitse RTC-laite
Reaaliaikaisessa sulautetussa maailmassa on saatavana erilaisia RTC-siruja, jotka luokitellaan useiden kriteerien perusteella, kuten pakettityyppi, syöttöjännite ja pin-kokoonpano jne. Muutamia RTC-laitteita on
- Kaksilankainen sarjaliitäntä (I2C-väylä)
- Kolmilankainen sarjaliitäntä (USB-väylä)
- Nelijohtiminen sarjaliitäntä (SPI-väylä)
Ensinnäkin meidän on valittava RTC-laitteen tyyppi luokittain vaatimusten perusteella, kuten I2C-väylä RTC tai SPI-väylä RTC tai muu, joka sopii käytettäväksi vastaavan mikrokontrollerin kanssa. Sitten voimme valita RTC-laitteen ominaisuudet sovelluksen vaatimusten mukaan, kuten akun kesto, sopiva paketti ja kellotaajuus. Tarkastellaan kahden johtimen liitäntää RTC 8051-mikrokontrollerilla, kuten DS1307 .
Vaihe 2: RTC-laitteen sisäinen rekisteri ja osoite
RTC tarkoittaa reaaliaikakelloa, joka tarjoaa vuosia, kuukausia, viikkoja, päiviä, tunteja, minuutteja ja sekunteja kristallitaajuuden perusteella. RTC koostuu sisäänrakennetuista RAM-muisti tietojen tallentamiseen . Akun varmuuskopio annetaan, jos päävirtalähde epäonnistuu, kytkemällä akku RTC-laitteeseen.
RTC DB1307 -määritykset:

RTC: n sisäiset lohkot ja piikkikaavio
A0, A1, A2: ovat RTC DB1307 -piirin osoitetappeja, joita voidaan käyttää kommunikointiin isäntälaitteen kanssa. Voimme ohjata kahdeksaa laitetta, joissa on RTC-liitäntä 8051-mikrokontrolleri A0-, A1-, A2-biteillä käyttämällä I2C-protokollaa.
VCC ja GND: VCC ja GND ovat virtalähde ja vastaavasti maadoitusnastat. Tämä laite toimi 1,8 V: n ja 5,5 V: n välillä.
VBT: VBT on akun virtalähde. Akun virtalähde on pidettävä välillä 2 V - 3,5 V.
SCL: SCL on sarjakellotappi ja sitä käytetään tietojen synkronointiin sarjaliitännässä.
SDL: Se on sarjaliitäntä ja ulostulotappi. Sitä käytetään tietojen lähettämiseen ja vastaanottamiseen sarjaliitännässä.
Leimata itsensä ulos: Se on valinnainen neliöaaltotulostappi.
OSC0 ja OSC1: Nämä ovat kideoskillaattorinastoja, joita käytetään tarjoamaan kellosignaalit RTC-laitteelle. Kvartsikiteen vakiotaajuus on 22,768 kHz.
Laitteen osoite:
I2C-väyläprotokolla sallii useita orjalaitteita kerrallaan. Jokaisen orjalaitteen on muodostettava oma osoite edustamaan sitä. Päälaite kommunikoi tietyn orjalaitteen kanssa osoitteella. RTC-laitteen osoite on ”0xA2”, jossa ”1010” on valmistajan antama ja A0, A1, A2 ovat käyttäjän määrittelemää osoitetta, jota käytetään kahdeksan RTC-laitteen kommunikointiin. I2C-väyläprotokolla .

Laitteen lisäys
R / W-bittiä käytetään luku- ja kirjoitusoperaatioiden suorittamiseen RTC: ssä. Jos R / W = 0, suoritetaan kirjoitusoperaatio ja R / W = 1 lukutoimintoa varten.
RTC: n lukutoiminnon osoite = “0xA3”
RTC: n kirjoitusoperaation osoite = “0xA2”
Muistirekisterit ja osoitteet:
RTC-rekisterit sijaitsevat osoitteiden välillä 00h - 0Fh ja RAM-muistirekisterit sijaitsevat osoitteissa 08h - 3Fh, kuten kuvassa on esitetty. RTC-rekistereitä käytetään tarjoamaan kalenteritoimintoja ja kellonaikaa sekä näyttämään viikonloppuja.

Muistirekisterit ja osoite
Ohjaus- / tilarekisterit:
DB1307 koostuu kahdesta lisärekisteristä, kuten ohjaus / tila1 ja ohjaus / tila2, joita käytetään reaaliaikakellon ohjaamiseen ja keskeyttää .
Ohjaus- / tilarekisteri1:

Valvontatilarekisteri 1
- TEST1 = 0 normaalitila
= 1 EXT-kellotestitila
- STOP = 0 RTC käynnistyy
= 1 RTC-pysäytys
- TESTC = 0 virran palautus nollattu
= virran kytkeminen palautettu
Ohjaus- / tilarekisteri2:

Ohjauksen tilarekisteri 2
- TI / TP = 0 INT aktiivinen koko ajan
= 1 aktiivinen vaadittu aika
- AF = 0 Hälytys ei täsmää
= 1 hälytysottelu
- TF = 0 Ajastimen ylivuotoa ei tapahdu
= 1 Ajastimen ylivuoto tapahtuu
- ALE = 0 Hälytyksen keskeytys pois käytöstä
= 1 Hälytyksen keskeytys käytössä
- TIE = 0 Ajastin keskeyttää käytöstä
= 1 Ajastimen keskeytykset käytössä
Vaihe 3: RTC ds1307: n ja 8051: n liitäntä
RTC voi olla liitetty mikro-ohjaimeen käyttämällä erilaisia sarjaväyläprotokollia, kuten I2C ja SPI-protokollat jotka tarjoavat yhteyden niiden välille. Kuvassa näkyy reaaliaikainen kelloyhteys 8051-mikrokontrolleriin käyttäen I2C-väyläprotokollaa. I2C on kaksisuuntainen sarjaprotokolla, joka koostuu kahdesta johtimesta, kuten SCL ja SDA, tiedonsiirtoon väylään kytkettyjen laitteiden välillä. 8051-mikrokontrollerissa ei ole sisäänrakennettua RTC-laitetta, joten olemme liittyneet ulkoisesti a: n kautta sarjaliikenne koostuvien tietojen varmistamiseksi.

RTC-liitäntä 8051-mikrokontrolleriin
I2C-laitteilla on avoimet tyhjennyslähdöt, joten I2C-väylälinjaan on kytkettävä vetovastukset jännitelähteellä. Jos vastuksia ei ole kytketty SCL- ja SDL-linjoihin, väylä ei toimi.
Vaihe 4: RTC-tietojen kehystysmuoto
Koska RTC-liitäntä 8051-mikrokontrolleriin käyttää I2C-väylää, tiedonsiirto tapahtuu tavujen tai pakettien muodossa ja kutakin tavua seuraa kuittaus.
Tietokehyksen lähettäminen:
Lähetystilassa päällikkö vapauttaa alkuehdon valittuaan orjalaitteen osoitebitin mukaan. Osoitebitti sisältää 7-bittisen, joka ilmoittaa orjalaitteet ds1307-osoitteeksi. Sarjatiedot ja sarjakello lähetetään SCL- ja SDL-linjoilla. KÄYNNISTYS- ja PYSÄYTYS-olosuhteet tunnustetaan sarjaliikenteen alkamis- ja lopetusjaksoiksi. Vastaanotto- ja lähetystoimintoja seuraa R / W-bitti.

Tietokehyksen lähettäminen
Alkaa: Ensisijaisesti tiedonsiirtosekvenssi, jonka master aloittaa generoimalla alkuehdot.
7-bittinen osoite: Sen jälkeen isäntä lähettää orjaosoitteen kahdessa 8-bittisessä muodossa yhden 16-bittisen osoitteen sijaan.
Ohjaus- / tilarekisterin osoite: Ohjauksen / tilarekisterin osoitteen on sallittava ohjauksen tilarekisterit.
Ohjaus- / tilarekisteri1: Ohjauksen tilarekisteri1, jota käytetään RTC-laitteen käyttöönottoon
Ohjaus- / tilarekisteri2: Sitä käytetään keskeytysten ottamiseen käyttöön ja poistamiseen käytöstä.
R / W: Jos luku- ja kirjoitusbittiä on vähän, kirjoitusoperaatio suoritetaan.
VALITETTAVASTI: Jos orjalaitteessa suoritetaan kirjoitusoperaatio, vastaanotin lähettää 1-bittisen ACK: n mikrokontrollerille.
Lopettaa: Kun orjalaite on kirjoittanut kirjoitusoperaation, mikrokontrolleri lähettää pysäytysolosuhteet orjalaitteelle.
Tietokehyksen vastaanottaminen:

Tietokehyksen vastaanottaminen
Alkaa: Ensisijaisesti tiedonsiirtosekvenssi, jonka master aloittaa generoimalla alkuehdot.
7-bittinen osoite: Sen jälkeen isäntä lähettää orjaosoitteen kahdessa 8-bittisessä muodossa yhden 16-bittisen osoitteen sijaan.
Ohjaus- / tilarekisterin osoite: Ohjauksen / tilarekisterin osoitteen on sallittava ohjauksen tilarekisterit.
Ohjaus- / tilarekisteri1: Ohjauksen tilarekisteri1, jota käytetään RTC-laitteen käyttöönottoon
Ohjaus- / tilarekisteri2: Sitä käytetään keskeytysten ottamiseen käyttöön ja poistamiseen käytöstä.
R / W: Jos luku- ja kirjoitusbitti on suuri, lukuoperaatio suoritetaan.
VALITETTAVASTI: Jos orjalaitteessa suoritetaan kirjoitusoperaatio, vastaanotin lähettää 1-bittisen ACK: n mikrokontrollerille.
Lopettaa: Kun orjalaite on kirjoittanut kirjoitusoperaation, mikrokontrolleri lähettää pysäytysolosuhteet orjalaitteelle.
Vaihe 5: RTC-ohjelmointi
Kirjoitustoiminto isännältä orjalle:
- Antaa alkuehto isännältä orjalle
- Siirrä orjaosoite kirjoitusmuodossa SDL-linjalle
- Lähetä ohjausrekisterin osoite
- Lähetä control / status register1value
- Lähetä control / status register2 -arvo
- Lähetä vastaavien minuuttien, sekuntien ja tuntien päivämäärä
- Lähetä pysäytyskappale
#sisältää
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
mitätön alku ()
void hosts (allekirjoittamaton merkki)
viive (allekirjoittamaton merkki)
void main ()
{
alkaa()
kirjoita (0xA2) // orjaosoite //
kirjoita (0x00) // ohjausrekisterin osoite //
kirjoita (0x00) // ohjausrekisterin 1 arvo //
kirjoita (0x00) // control regiter2 vlaue //
kirjoita (0x28) // sekunnin arvo //
kirjoita (0x50) // minuutin arvo //
kirjoita (0x02) // tuntien arvo //
}
mitätön alku ()
{
SDA = 1 // tietojen käsittely //
SCL = 1 // kello on korkea //
viive (100)
SDA = 0 // lähetti tiedot //
viive (100)
SCL = 0 // kellosignaali on matala //
}
void write (allekirjoittamaton merkki d)
{
allekirjoittamaton merkki k, j = 0 × 80
(k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
viive (4)
SCL = 0
}
SDA = 1
SCL = 1
viive (2)
c = SDA
viive (2)
SCL = 0
}
tyhjä viive (int p)
{
allekirjoittamaton, b
Sillä (a = 0a<255a++) //delay function//
Sillä (b = 0b
Lue operaatio orjalta isännälle:
#sisältää
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
mitätön alku ()
void write (tunnusmerkki)
void read ()
void ack ()
void delay (allekirjoittamaton merkki)
void main ()
{
alkaa()
kirjoita (0xA3) // orjaosoite lukutilassa //
lukea()
Valitettavasti()
sec = arvo
}
mitätön alku ()
{
SDA = 1 // tietojen käsittely //
SCL = 1 // kello on korkea //
viive (100)
SDA = 0 // lähetti tiedot //
viive (100)
SCL = 0 // kellosignaali on matala //
}
void write (allekirjoittamaton merkki d)
{
allekirjoittamaton merkki k, j = 0 × 80
(k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
viive (4)
SCL = 0
}
SDA = 1
SCL = 1
viive (2)
c = SDA
viive (2)
SCL = 0
}
tyhjä viive (int p)
{
allekirjoittamaton, b
Sillä (a = 0a<255a++) //delay function//
Sillä (b = 0b
Tyhjä luku ()
{
Allekirjoittamaton merkki j, z = 0 × 00, q = 0 × 80
SDA = 1
(j = 0j<8j++)
{
SCL = 1
viive (100)
lippu = SDA
jos (lippu == 1)
z = (z
void ack ()
{
SDA = 0 // SDA-rivi laskee matalaksi //
SCL = 1 // kello on korkeasta matalaan //
viive (100)
SCL = 0
}
Nämä ovat tarvittavat vaiheet RTC-liitäntää varten 8051-mikrokontrollerin kanssa. Näiden vaiheiden lisäyksissä tässä artikkelissa käsitellään myös datan siirtämiseen ja vastaanottamiseen käytettyjä datakehyksiä, jotta käyttäjä ymmärtäisi ne asianmukaisella ohjelmoinnilla. Jos haluat lisätietoja tästä konseptista, voit jättää kommentin alla.