Interface RTC (DS1307) dengan Mikrokontroler dan Pengaturcaraannya

Cuba Instrumen Kami Untuk Menghapuskan Masalah





RTC adalah alat elektronik yang memainkan peranan penting dalam reka bentuk sistem terbenam masa nyata . Ini memberikan waktu dan tarikh yang tepat dalam pelbagai aplikasi seperti jam sistem, sistem kehadiran pelajar dan penggera dll, yang mengikuti waktu semasa dan memberikan hasil yang konsisten untuk tugas masing-masing. Artikel ini membentangkan antara muka RTC dengan 8051 mikrokotroler dan akses asas daftar dalaman.

RTC Interfacing dengan Mikrokontroler 8051

RTC Interfacing dengan Mikrokontroler 8051



Pengaturcaraan dan Antaramuka RTC

Antaramuka RTC dengan mikrokontroler 8051 mirip dengan semua jenis 'Jam Masa Sebenar' yang dihubungkan dengannya. Oleh itu, marilah kita melihat antara muka RTC sederhana dengan 8051 mikrokontroler dan prosedur pengaturcaraan yang melibatkannya.


Langkah 1: Pilih Peranti RTC

Pelbagai jenis cip RTC tersedia dalam dunia terbenam masa nyata, yang diklasifikasikan berdasarkan pelbagai kriteria seperti jenis pakej, voltan bekalan dan konfigurasi pin dll. Beberapa jenis peranti RTC adalah



  • Antaramuka Bersiri Dua Kawat (Bas I2C)
  • Antara muka bersiri tiga wayar (USB BUS)
  • Antara muka Serial empat wayar (SPI BUS)

Pertama, kita perlu memilih jenis peranti RTC mengikut kategori berdasarkan keperluan seperti I2C Bus RTC atau SPI Bus RTC atau yang lain, yang sesuai untuk antara muka dengan mikrokontroler masing-masing. Kemudian kita dapat memilih ciri peranti RTC bergantung pada keperluan aplikasi seperti hayat bateri, paket yang sesuai dan frekuensi jam. Mari kita pertimbangkan penghubung dua wayar RTC dengan mikrokontroler 8051 seperti DS1307 .

Langkah 2: Daftar Dalaman dan Alamat Peranti RTC

RTC bermaksud jam masa nyata yang memberikan tahun, bulan, minggu, hari, jam, minit dan saat berdasarkan frekuensi kristal. RTC terdiri daripada terbina dalam Memori RAM untuk penyimpanan data . Cadangan bateri akan disediakan sekiranya berlaku kegagalan bekalan kuasa utama dengan menyambungkan bateri ke peranti RTC.

Konfigurasi RTC DB1307:

Gambarajah Blok Dalaman dan Pin RTC

Gambarajah Blok Dalaman dan Pin RTC

A0, A1, A2: adalah pin alamat cip RTC DB1307, yang dapat digunakan untuk berkomunikasi dengan peranti induk. Kita boleh mengawal lapan peranti dengan RTC berinteraksi dengan 8051 mikrokontroler oleh bit A0, A1, A2 menggunakan protokol I2C.


VCC dan GND: VCC dan GND masing-masing adalah bekalan kuasa dan pin ground. Peranti ini beroperasi dengan jarak 1.8V hingga 5.5V.

VBT: VBT adalah pin bekalan kuasa bateri. Sumber kuasa bateri mesti dipegang antara 2V hingga 3.5V.

SCL: SCL adalah pin jam bersiri dan ia digunakan untuk menyegerakkan data pada antara muka bersiri.

SDL: Ia adalah pin input dan output bersiri. Ini digunakan untuk mengirim dan menerima data pada antara muka bersiri.

Jam Keluar: Ia adalah pin output gelombang persegi pilihan.

OSC0 dan OSC1: Ini adalah pin pengayun kristal yang digunakan untuk memberikan isyarat jam ke peranti RTC. Kekerapan kristal kuarza standard ialah 22.768KHz.

Pengalamatan Peranti:

Protokol bas I2C membolehkan banyak peranti hamba dalam satu masa. Setiap peranti hamba mesti terdiri daripada alamat sendiri untuk mewakili di atasnya. Peranti induk berkomunikasi dengan peranti hamba tertentu dengan alamat. Alamat peranti RTC adalah '0xA2' di mana '1010' diberikan oleh pengeluar dan A0, A1, A2 adalah alamat yang ditentukan pengguna, yang digunakan untuk menyampaikan lapan peranti RTC pada Protokol bas I2C .

Penambahan Peranti

Penambahan Peranti

R / W bit digunakan untuk melakukan operasi membaca dan menulis dalam RTC. Sekiranya R / W = 0, operasi tulis dilakukan dan R / W = 1 untuk operasi baca.

Alamat operasi Baca RTC = '0xA3'

Alamat operasi Tulis RTC = '0xA2'

Daftar dan Alamat Memori:

Daftar RTC terletak di lokasi alamat dari 00h hingga 0Fh dan register memori RAM terletak di lokasi alamat dari 08h hingga 3Fh seperti yang ditunjukkan pada gambar. Daftar RTC digunakan untuk menyediakan fungsi kalendar dan masa perjalanan hari dan untuk memaparkan hujung minggu.

Daftar dan Alamat Memori

Daftar dan Alamat Memori

Daftar Kawalan / Status:

DB1307 terdiri daripada dua daftar tambahan seperti kawalan / status1 dan kawalan / status2 yang digunakan untuk mengawal jam masa nyata dan mencelah .

Daftar Kawalan / Status1:

Daftar Status Kawalan1

Daftar Status Kawalan1

  • TEST1 = 0 mod biasa

= 1 mod ujian jam EXT

  • STOP = 0 RTC bermula

= 1 hentian RTC

  • TESTC = 0 power pada reset dilumpuhkan

= power on reset diaktifkan

Daftar Kawalan / Status2:

Daftar Status Kawalan2

Daftar Status Kawalan2

  • TI / TP = 0 INT aktif sepanjang masa

= 1 masa aktif yang diperlukan INT

  • AF = 0 Penggera tidak sepadan

= 1 Pertandingan penggera

  • TF = 0 Overflow pemasa tidak berlaku

= 1 Limpahan pemasa berlaku

  • ALE = 0 gangguan penggera mematikan

= 1 Gangguan penggera diaktifkan

  • TIE = 0 gangguan pemasa mematikan

= 1 gangguan Pemasa membolehkan

Langkah 3: Memadankan RTC ds1307 dengan 8051

RTC boleh dihubungkan ke mikrokontroler dengan menggunakan protokol bas bersiri yang berbeza seperti I2C dan Protokol SPI yang memberikan hubungan komunikasi antara mereka. Gambar menunjukkan, jam masa nyata yang bersambung dengan 8051 mikrokontroler menggunakan protokol bas I2C. I2C adalah protokol bersiri dua arah, yang terdiri daripada dua wayar seperti SCL dan SDA untuk memindahkan data antara peranti yang disambungkan ke bas. 8051 mikrokontroler tidak mempunyai peranti RTC terbina dalam oleh itu kami telah menyambung secara luaran melalui a komunikasi bersiri untuk memastikan data yang terdiri.

RTC Interfacing dengan Mikrokontroler 8051

RTC Interfacing dengan Mikrokontroler 8051

Peranti I2C mempunyai output longkang terbuka oleh itu, perintang penarik mesti disambungkan ke saluran bas I2C dengan sumber voltan. Sekiranya perintang tidak disambungkan ke garis SCL dan SDL, bas tidak akan berfungsi.

Langkah 4: Format Pembingkaian Data RTC

Oleh kerana RTC berinteraksi dengan mikrokontroler 8051 menggunakan bas I2C oleh itu pemindahan data adalah dalam bentuk bait atau paket dan setiap bait diikuti dengan pengakuan.

Menghantar Rangka Data:

Dalam mod penghantaran, induk melepaskan syarat permulaan setelah memilih peranti hamba mengikut bit alamat. Bit alamat mengandungi 7-bit, yang menunjukkan peranti hamba sebagai alamat ds1307. Data bersiri dan jam bersiri dihantar pada garis SCL dan SDL. Syarat MULAI dan BERHENTI diakui sebagai permulaan dan akhir pemindahan bersiri. Operasi penerimaan dan penghantaran diikuti oleh bit R / W.

Menghantar Rangka Data

Menghantar Rangka Data

Mulakan: Terutamanya, urutan pemindahan data yang dimulakan oleh induk menghasilkan keadaan mula.

Alamat 7-bit: Selepas itu tuan menghantar alamat hamba dalam dua format 8-bit dan bukannya alamat 16-bit tunggal.

Alamat Daftar Kawalan / Status: Alamat daftar kawalan / status adalah untuk membenarkan daftar status kawalan.

Daftar Kawalan / Status1: Daftar status kawalan1 yang digunakan untuk mengaktifkan peranti RTC

Daftar Kawalan / Status2: Ia digunakan untuk mengaktifkan dan mematikan gangguan.

R / W: Sekiranya bit baca dan tulis rendah, maka operasi tulis dilakukan.

MALANGNYA: Sekiranya operasi menulis dilakukan dalam peranti hamba, maka penerima akan menghantar ACK 1-bit ke mikrokontroler.

Berhenti: Setelah selesai operasi menulis di peranti hamba, mikrokontroler mengirimkan keadaan berhenti ke peranti hamba.

Menerima Bingkai Data:

Menerima Bingkai Data

Menerima Bingkai Data

Mulakan: Terutamanya, urutan pemindahan data yang dimulakan oleh induk menghasilkan keadaan mula.

Alamat 7-bit: Selepas itu tuan menghantar alamat hamba dalam dua format 8-bit dan bukannya alamat 16-bit tunggal.

Alamat Daftar Kawalan / Status: Alamat daftar kawalan / status adalah untuk membenarkan daftar status kawalan.

Daftar Kawalan / Status1: Daftar status kawalan1 yang digunakan untuk mengaktifkan peranti RTC

Daftar Kawalan / Status2: Ia digunakan untuk mengaktifkan dan mematikan gangguan.

R / W: Sekiranya bit baca dan tulis tinggi, maka operasi baca dilakukan.

MALANGNYA: Sekiranya operasi menulis dilakukan dalam peranti hamba, maka penerima akan menghantar ACK 1-bit ke mikrokontroler.

Berhenti: Setelah selesai operasi menulis di peranti hamba, mikrokontroler mengirimkan keadaan berhenti ke peranti hamba.

Langkah 5: Pengaturcaraan RTC

Tulis Operasi dari Master ke Hamba:

  1. Mengeluarkan syarat permulaan dari tuan ke hamba
  2. Pindahkan alamat hamba dalam mod tulis pada baris SDL
  3. Hantarkan alamat daftar kawalan
  4. Hantarkan kawalan / status register1value
  5. Hantar nilai register / status register2
  6. Hantar tarikh seperti minit, saat dan jam
  7. Hantar bit berhenti

#sertakan

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
batal mula ()
kekosongan hos (char yang tidak ditandatangani)
kelewatan (char yang tidak ditandatangani)

kekosongan utama ()
{

mulakan ()
tulis (0xA2) // alamat hamba //
tulis (0x00) // alamat daftar kawalan //
tulis (0x00) // daftar kawalan 1 nilai //
tulis (0x00) // kawalan regiter2 vlaue //
tulis (0x28) // nilai saat //
tulis (0x50) // nilai minit //
tulis (0x02) // nilai jam //
}

batal mula ()
{

SDA = 1 // memproses data //
SCL = 1 // jam tinggi //
kelewatan (100)
SDA = 0 // menghantar data //
kelewatan (100)
SCL = 0 // isyarat jam rendah //
}
batal menulis (tanda tidak bertanda d)
{

char tidak bertanda tangan, j = 0 × 80
untuk (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
kelewatan (4)
SCL = 0
}
SDA = 1
SCL = 1
kelewatan (2)
c = SDA
kelewatan (2)
SCL = 0
}
kelewatan tidak sah (int p)
{
unsignedinta, b
Untuk (a = 0a<255a++) //delay function//
Untuk (b = 0b}

Baca Operasi dari Hamba hingga Tuan:

#sertakan
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
batal mula ()
kekosongan tulis (char yang digunakan)
batal baca ()
kekosongan ack ()
kelewatan tidak sah (char yang tidak ditandatangani)
kekosongan utama ()
{
mulakan ()
tulis (0xA3) // alamat hamba dalam mod baca //
baca ()
Malangnya()
sec = nilai
}
batal mula ()
{

SDA = 1 // memproses data //
SCL = 1 // jam tinggi //
kelewatan (100)
SDA = 0 // menghantar data //
kelewatan (100)
SCL = 0 // isyarat jam rendah //
}
batal menulis (tanda tidak bertanda d)
{

char tidak bertanda tangan, j = 0 × 80
untuk (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
kelewatan (4)
SCL = 0
}
SDA = 1
SCL = 1
kelewatan (2)
c = SDA
kelewatan (2)
SCL = 0
}
kelewatan tidak sah (int p)
{
unsignedinta, b
Untuk (a = 0a<255a++) //delay function//
Untuk (b = 0b}
Batal baca ()
{
Char tidak bertanda tangan, z = 0 × 00, q = 0 × 80
SDA = 1
untuk (j = 0j<8j++)
{
SCL = 1
kelewatan (100)
bendera = SDA
jika (bendera == 1)

z = (z
kekosongan ack ()
{
SDA = 0 // Garis SDA menuju rendah //
SCL = 1 // jam tinggi ke rendah //
kelewatan (100)
SCL = 0
}

Ini adalah langkah-langkah yang diperlukan untuk menghubungkan RTC dengan mikrokontroler 8051. Sebagai tambahan kepada langkah-langkah ini, bingkai data yang digunakan untuk memindahkan dan menerima data juga dibahas dalam artikel ini untuk pemahaman pengguna dengan pengaturcaraan yang sesuai. Untuk bantuan lebih lanjut mengenai konsep ini, anda boleh memberikan komen di bawah.