Ang interfacing RTC (DS1307) kasama ang Microcontroller at ang Programming nito

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Ang RTC ay isang elektronikong aparato na may mahalagang papel sa realtime naka-embed na disenyo ng system . Nagbibigay ito ng isang tumpak na oras at petsa sa iba't ibang mga application tulad ng system clock, system ng pagdalo ng mag-aaral at alarma atbp, na sumusubaybay sa kasalukuyang oras at nagbibigay ng pare-parehong resulta sa kani-kanilang gawain. Ipinapakita ng artikulong ito ang RTC na nakikipag-ugnay sa 8051microcotrollerand pangunahing pag-access sa mga panloob na rehistro.

Ang RTC Interfacing kasama ang 8051 Microcontroller

Ang RTC Interfacing kasama ang 8051 Microcontroller



Programming at Interfacing ng RTC

Ang interfacing ng RTC sa 8051 microcontroller ay katulad sa lahat ng iba pang mga uri ng 'Real Time Clocks' na nakakonekta dito. Kaya't tingnan natin ang simpleng pakikipag-ugnay sa RTC 8051 microcontroller at pamamaraan ng programa na kinasasangkutan dito.


Hakbang1: Piliin ang RTC Device

Ang iba't ibang mga uri ng mga RTC chip ay magagamit sa real time na naka-embed na mundo, na inuri batay sa iba't ibang mga pamantayan tulad ng uri ng pakete, boltahe ng supply at pagsasaayos ng pin atbp. Ang ilang mga uri ng mga aparatong RTC ay



  • Two-Wire Serial Interface (I2C Bus)
  • Three-Wire Serial Interface (USB BUS)
  • Four-wire Serial interface (SPI BUS)

Una, kailangan naming pumili ng uri ng aparatong RTC ayon sa kategorya batay sa kinakailangan tulad ng I2C Bus RTC o SPI Bus RTC o iba pa, na angkop para sa pag-interfacing ng kani-kanilang microcontroller. Pagkatapos ay maaari naming piliin ang mga tampok ng RTC aparato depende sa kinakailangan ng aplikasyon tulad ng buhay ng baterya, angkop na package at dalas ng orasan. Isaalang-alang natin ang two-wire interfacing RTC na may 8051 microcontroller tulad ng DS1307 .

Hakbang2: Panloob na Rehistro at Address ng RTC Device

Ang RTC ay nangangahulugang real time na orasan na nagbibigay ng mga taon, buwan, linggo, araw, oras, minuto at segundo batay sa dalas ng kristal. Ang RTC ay binubuo ng inbuilt Memorya ng RAM para sa pag-iimbak ng data . Ibibigay ang isang backup ng baterya sakaling mabigo ang pangunahing supply ng kuryente sa pamamagitan ng pagkonekta ng isang baterya sa RTC aparato.

Pag-configure ng RTC DB1307:

Mga Panloob na Bloke ng RTC at Diagram ng Pin

Mga Panloob na Bloke ng RTC at Diagram ng Pin

A0, A1, A2: ay ang mga address pin ng RTC DB1307 chip, na maaaring magamit upang makipag-usap sa master device. Maaari naming makontrol ang walong mga aparato sa pag-interfaces ng RTC 8051 microcontroller ni A0, A1, A2 na mga piraso gamit ang I2C protocol.


VCC at GND: Ang VCC at GND ay supply ng kuryente at mga ground pin ayon sa pagkakabanggit. Nagpapatakbo ang aparatong ito na may saklaw na 1.8V hanggang 5.5V.

VBT: Ang VBT ay isang power supply pin na baterya. Ang mapagkukunan ng lakas ng baterya ay dapat na gaganapin sa pagitan ng 2V hanggang 3.5V.

SCL: Ang SCL ay isang serial clock pin at ginagamit ito upang mai-synchronize ang data sa serial interface.

SDL: Ito ay isang serial input at output pin. Ginagamit ito upang maipadala at matanggap ang data sa serial interface.

Clock Out: Ito ay isang opsyonal na square wave output pin.

OSC0 at OSC1: Ito ang mga kristal na oscillator pin na ginagamit upang maibigay ang mga signal ng orasan sa aparato ng RTC. Ang karaniwang dalas ng quartz crystal ay 22.768KHzs.

Paglalagay ng Device:

Pinapayagan ng I2C bus protocol ang maraming mga aparato ng alipin nang sabay-sabay. Ang bawat aparato ng alipin ay dapat na binubuo ng sariling address upang kumatawan dito. Nakikipag-usap ang master device sa partikular na aparato ng alipin sa pamamagitan ng isang address. Ang address ng RTC device ay '0xA2' kung saan ang '1010' ay ibinibigay ng tagagawa at A0, A1, A2 ay address na tinukoy ng gumagamit, na ginagamit upang makipag-usap ng walong mga RTC device sa I2C bus protocol .

Pag-addres ng Device

Pag-addres ng Device

Ginagamit ang R / W bit upang maisagawa ang mga pagpapatakbo ng pagbasa at pagsusulat sa RTC. Kung R / W = 0, isinasagawa ang pagsulat ng operasyon at R / W = 1 para sa binasang operasyon.

Address ng Basahin ang pagpapatakbo ng RTC = '0xA3'

Address ng Sumulat operasyon ng RTC = '0xA2'

Mga Rehistro ng Memory at Address:

Ang mga rehistro ng RTC ay matatagpuan sa mga lokasyon ng address mula 00h hanggang 0Fh at ang mga rehistro ng memorya ng RAM ay matatagpuan sa mga lokasyon ng address mula 08h to3Fh tulad ng ipinakita sa pigura. Ginagamit ang mga rehistro ng RTC upang magbigay ng pagpapaandar sa kalendaryo at oras ng paghimok ng araw at upang ipakita ang mga pagtatapos ng linggo.

Mga Rehistro ng Memory at Address

Mga Rehistro ng Memory at Address

Mga Rehistro sa Pagkontrol / Katayuan:

Ang DB1307 ay binubuo ng dalawang karagdagang mga rehistro tulad ng control / status1 at control / status2 na ginagamit upang makontrol ang real time na orasan at nakakagambala .

Control / Rehistro ng Katayuan1:

Rehistro ng Katayuan ng Control1

Rehistro ng Katayuan ng Control1

  • TEST1 = 0 normal na mode

= 1 EXT-clock test mode

  • TIGIL = 0 pagsisimula ng RTC

= 1 RTC huminto

  • Ang TESTC = 0 na kapangyarihan sa pag-reset ay hindi pinagana

= pinagana ang power on reset

Control / Rehistro ng Katayuan2:

Pagrehistro sa Katayuan ng Control2

Pagrehistro sa Katayuan ng Control2

  • TI / TP = 0 INT aktibo sa lahat ng oras

= 1 INT aktibong kinakailangang oras

  • AF = 0 Hindi tumutugma ang alarm

= 1 Tugma sa alarm

  • TF = 0 Timer overflow ay hindi nangyari

= 1 Timer overflow nangyayari

  • ALE = 0 Hindi nakaka-disable ang mga pag-alarma ng alarm

= 1 Pinagana ang mga pagkagambala ng alarm

  • Hindi pinagana ng TIE = 0 ang timer

= Paganahin ang 1 timer na nakakagambala

Step3: Interfacing RTC ds1307 na may 8051

Ang RTC ay maaaring interfaced sa microcontroller sa pamamagitan ng paggamit ng iba't ibang mga serial bus protokol tulad ng I2C at Mga protokol ng SPI na nagbibigay ng link sa komunikasyon sa pagitan nila. Ipinapakita ang pigura, ang real time na pag-orasan sa 8051 microcontroller gamit ang I2C bus protocol. Ang I2C ay isang bi-directional serial protocol, na binubuo ng dalawang wires tulad ng SCL at SDA upang ilipat ang data sa pagitan ng mga aparato na konektado sa bus. Ang 8051 microcontroller ay walang nakapaloob na RTC aparato samakatuwid nakakonekta kami sa panlabas sa pamamagitan ng a serial komunikasyon para sa pagtiyak sa binubuo ng data.

Ang RTC Interfacing kasama ang 8051 Microcontroller

Ang RTC Interfacing kasama ang 8051 Microcontroller

Ang mga aparato ng I2C ay may bukas na mga output ng alisan ng tubig samakatuwid, ang isang pull-up resistors ay dapat na konektado sa linya ng bus ng I2C na may mapagkukunan ng boltahe. Kung ang mga resistor ay hindi konektado sa mga linya ng SCL at SDL, hindi gagana ang bus.

Hakbang4: Format ng Pag-frame ng Data ng RTC

Dahil ang RTC na nakikipag-ugnay sa8051 microcontroller ay gumagamit ng I2C bus samakatuwid ang paglilipat ng data ay nasa anyo ng mga byte o packet at ang bawat byte ay sinusundan ng isang pagkilala.

Paghahatid ng Frame ng Data:

Sa mode na paglilipat, pinakawalan ng master ang kundisyon ng pagsisimula pagkatapos pumili ng aparato ng alipin sa pamamagitan ng kaunting address. Naglalaman ang address bit ng 7-bit, na nagsasaad ng mga aparato ng alipin bilang ds1307 address. Ang serial data at serial clock ay ipinapadala sa mga linya ng SCL at SDL. Ang mga kundisyon ng Start at STOP ay kinikilala bilang simula at pagtatapos ng isang serial transfer. Ang makatanggap at magpadala ng mga pagpapatakbo ay sinusundan ng R / W bit.

Paghahatid ng Frame ng Data

Paghahatid ng Frame ng Data

Simula: Pangunahin, ang pagkakasunud-sunod ng paglilipat ng data na pinasimulan ng master na bumubuo ng kondisyong panimula.

7-bit na Address: Pagkatapos nito ay ipinapadala ng master ang address ng alipin sa dalawang 8-bit na format sa halip na isang solong 16-bit na address.

Control / Address ng Rehistro ng Katayuan: Ang address ng rehistro ng control / status ay upang payagan ang mga rehistro ng katayuan ng kontrol.

Control / Rehistro ng Katayuan1: Ginamit ang rehistro ng katayuan ng kontrol upang paganahin ang RTC aparato

Control / Rehistro ng Katayuan2: Ginagamit ito upang paganahin at huwag paganahin ang mga pagkagambala.

R / W: Kung ang pagbabasa at pagsulat ng kaunti ay mababa, pagkatapos ay isinasagawa ang pagpapatakbo ng pagsusulat.

NAKU: Kung ang operasyon ng pagsusulat ay ginaganap sa alipin na aparato, pagkatapos ang nagpapadala ay nagpapadala ng 1-bit ACK sa microcontroller.

Itigil: Matapos makumpleto ang operasyon ng pagsusulat sa aparato ng alipin, nagpapadala ang microcontroller ng kundisyon ng paghinto sa aparato ng alipin.

Tumatanggap ng Frame ng Data:

Tumatanggap ng Frame ng Data

Tumatanggap ng Frame ng Data

Simula: Pangunahin, ang pagkakasunud-sunod ng paglilipat ng data na pinasimulan ng master na bumubuo ng kondisyong panimula.

7-bit na Address: Pagkatapos nito ay nagpapadala ang master ng address ng alipin sa dalawang 8-bit na format sa halip na isang solong 16-bit na address.

Control / Address ng Rehistro ng Katayuan: Ang address ng rehistro ng control / status ay upang payagan ang mga rehistro ng katayuan ng kontrol.

Rehistro ng Kontrol / Katayuan1: Ang rehistro ng katayuan ng kontrol1 na ginamit upang paganahin ang RTC aparato

Control / Rehistro ng Katayuan2: Ginagamit ito upang paganahin at huwag paganahin ang mga pagkagambala.

R / W: Kung ang basahin at isulat ang bit ay mataas, pagkatapos ay isinasagawa ang pagbabasa ng operasyon.

NAKU: Kung ang operasyon ng pagsusulat ay ginaganap sa alipin na aparato, pagkatapos ang nagpapadala ay nagpapadala ng 1-bit ACK sa microcontroller.

Itigil: Matapos makumpleto ang operasyon ng pagsusulat sa aparato ng alipin, nagpapadala ang microcontroller ng kundisyon ng paghinto sa aparato ng alipin.

Hakbang5: Programming sa RTC

Isulat ang Pagpapatakbo mula sa Master hanggang sa Alipin:

  1. I-isyu ang panimulang kondisyon mula sa master hanggang sa alipin
  2. Ilipat ang address ng alipin sa mode ng pagsulat sa linya ng SDL
  3. Ipadala ang address ng rehistro ng kontrol
  4. Ipadala ang control / status register1value
  5. Ipadala ang halaga ng control / status register2
  6. Ipadala ang petsa ng mga katulad na minuto, segundo at oras
  7. Ipadala ang hintuan ng kaunti

# isama

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
walang bisa simula ()
walang bisa ang mga host (unsigned char)
antala (unsigned char)

walang bisa pangunahing ()
{

simulan ()
isulat (0xA2) // address ng alipin //
isulat (0x00) // control register address //
isulat (0x00) // control register 1 halaga //
isulat (0x00) // control regiter2 vlaue //
isulat (0x28) // sec halaga //
isulat (0x50) // minutong halaga //
isulat (0x02) // halaga ng oras //
}

walang bisa simula ()
{

SDA = 1 // pagpoproseso ng data //
SCL = 1 // mataas ang orasan //
antala (100)
Nagpadala ang SDA = 0 // ng data //
antala (100)
SCL = 0 // signal ng orasan ay mababa //
}
walang bisa pagsulat (unsigned char d)
{

unsigned char k, j = 0 × 80
para sa (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
antala (4)
SCL = 0
}
SDA = 1
SCL = 1
antala (2)
c = SDA
antala (2)
SCL = 0
}
walang bisa ang pagkaantala (int p)
{
unsignedinta, b
Para sa (a = 0a<255a++) //delay function//
Para sa (b = 0b}

Basahin ang Pagpapatakbo mula sa Alipin hanggang sa Master:

# isama
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
walang bisa simula ()
walang bisa pagsulat (usigned char)
walang bisa na basahin ()
walang bisa ack ()
walang bisa ang pagkaantala (unsigned char)
walang bisa pangunahing ()
{
simulan ()
isulat (0xA3) // address ng alipin sa read mode //
basahin ()
Naku()
sec = halaga
}
walang bisa simula ()
{

SDA = 1 // pagpoproseso ng data //
SCL = 1 // mataas ang orasan //
antala (100)
Nagpadala ang SDA = 0 // ng data //
antala (100)
SCL = 0 // signal ng orasan ay mababa //
}
walang bisa pagsulat (unsigned char d)
{

unsigned char k, j = 0 × 80
para sa (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
antala (4)
SCL = 0
}
SDA = 1
SCL = 1
antala (2)
c = SDA
antala (2)
SCL = 0
}
walang bisa ang pagkaantala (int p)
{
unsignedinta, b
Para sa (a = 0a<255a++) //delay function//
Para sa (b = 0b}
Walang bisa na basahin ()
{
Hindi naka-sign na char j, z = 0 × 00, q = 0 × 80
SDA = 1
para sa (j = 0j<8j++)
{
SCL = 1
antala (100)
watawat = SDA
kung (flag == 1)

z = (z
walang bisa ack ()
{
SDA = 0 // Ang linya ng SDA ay napupunta sa mababang //
SCL = 1 // ang orasan ay mataas hanggang sa mababa //
antala (100)
SCL = 0
}

Ito ang mga kinakailangang hakbang para sa interfacing ng RTC sa 8051 microcontroller. Sa mga karagdagan sa mga hakbang na ito, ang mga frame ng data na ginamit para sa paglilipat at pagtanggap ng data ay tinalakay din sa artikulong ito para sa pag-unawa ng gumagamit na may naaangkop na pag-program. Para sa karagdagang anumang tulong tungkol sa konseptong ito maaari kang mag-iwan ng komento sa ibaba.