Antarmuka RTC (DS1307) dengan Mikrokontroler dan Pemrogramannya

Coba Instrumen Kami Untuk Menghilangkan Masalah





RTC adalah perangkat elektronik yang memainkan peran penting dalam desain sistem tertanam realtime . Ini memberikan waktu dan tanggal yang tepat dalam berbagai aplikasi seperti jam sistem, sistem absensi siswa dan alarm dll, yang melacak waktu saat ini dan memberikan hasil yang konsisten untuk tugas masing-masing. Artikel ini menyajikan RTC interfacing dengan 8051microcotrollerdan pengaksesan dasar register internal.

Antarmuka RTC dengan Mikrokontroler 8051

Antarmuka RTC dengan Mikrokontroler 8051



Pemrograman dan Antarmuka RTC

Antarmuka RTC dengan mikrokontroler 8051 mirip dengan semua jenis 'Jam Waktu Nyata' yang dihubungkan dengannya. Jadi mari kita lihat antarmuka RTC sederhana 8051 mikrokontroler dan prosedur pemrograman yang terlibat di dalamnya.


Langkah 1: Pilih Perangkat RTC

Berbagai jenis chip RTC tersedia di dunia tertanam waktu nyata, yang diklasifikasikan berdasarkan berbagai kriteria seperti jenis paket, tegangan suplai, konfigurasi pin, dll. Beberapa jenis perangkat RTC adalah



  • Antarmuka Serial Dua Kawat (Bus I2C)
  • Antarmuka Serial Tiga Kabel (USB BUS)
  • Antarmuka Serial empat kabel (SPI BUS)

Pertama, kita perlu memilih jenis perangkat RTC berdasarkan kategori berdasarkan kebutuhan seperti I2C Bus RTC atau SPI Bus RTC atau lainnya, yang sesuai untuk antarmuka dengan mikrokontroler masing-masing. Kemudian kita dapat memilih fitur perangkat RTC tergantung pada kebutuhan aplikasi seperti masa pakai baterai, paket yang sesuai dan frekuensi clock. Mari kita pertimbangkan antarmuka dua kabel RTC dengan mikrokontroler 8.051 seperti DS1307 .

Langkah2: Registrasi Internal dan Alamat Perangkat RTC

RTC adalah singkatan dari real time clock yang menyediakan tahun, bulan, minggu, hari, jam, menit dan detik berdasarkan frekuensi kristal. RTC terdiri dari inbuilt Memori RAM untuk penyimpanan data . Cadangan baterai akan disediakan jika terjadi kegagalan catu daya utama dengan menghubungkan baterai ke perangkat RTC.

Konfigurasi RTC DB1307:

Blok Internal RTC dan Diagram Pin

Blok Internal RTC dan Diagram Pin

A0, A1, A2: adalah pin alamat chip RTC DB1307, yang dapat digunakan untuk berkomunikasi dengan perangkat master. Kami dapat mengontrol delapan perangkat dengan antarmuka RTC 8051 mikrokontroler dengan A0, A1, A2 bit menggunakan protokol I2C.


VCC dan GND: VCC dan GND masing-masing adalah catu daya dan pin ground. Perangkat ini dioperasikan dengan rentang 1.8V hingga 5.5V.

VBT: VBT adalah pin catu daya baterai. Sumber daya baterai harus berada di antara 2V hingga 3,5V.

SCL: SCL adalah pin jam serial dan digunakan untuk menyinkronkan data pada antarmuka serial.

SDL: Ini adalah pin input dan output serial. Ini digunakan untuk mengirim dan menerima data pada antarmuka serial.

Jam Keluar: Ini adalah pin keluaran gelombang persegi opsional.

OSC0 dan OSC1: Ini adalah pin osilator kristal yang digunakan untuk memberikan sinyal clock ke perangkat RTC. Frekuensi kristal kuarsa standar adalah 22.768KHz.

Alamat Perangkat:

Protokol bus I2C memungkinkan banyak perangkat budak dalam satu waktu. Setiap perangkat budak harus terdiri dari alamat sendiri untuk diwakili di atasnya. Perangkat master berkomunikasi dengan perangkat pendukung tertentu melalui sebuah alamat. Alamat perangkat RTC adalah '0xA2' dimana '1010' diberikan oleh pabrikan dan A0, A1, A2 adalah alamat yang ditentukan pengguna, yang digunakan untuk mengkomunikasikan delapan perangkat RTC pada Protokol bus I2C .

Penambahan Perangkat

Penambahan Perangkat

Bit R / W digunakan untuk melakukan operasi baca dan tulis di RTC. Jika R / W = 0, operasi tulis dilakukan dan R / W = 1 untuk operasi baca.

Alamat operasi Baca RTC = '0xA3'

Alamat operasi Write RTC = '0xA2'

Register dan Alamat Memori:

Register RTC terletak di lokasi alamat dari 00h hingga 0Fh dan register memori RAM terletak di lokasi alamat dari 08h hingga3Fh seperti yang ditunjukkan pada gambar. Register RTC digunakan untuk menyediakan fungsionalitas kalender dan waktu berkendara dan untuk menampilkan akhir pekan.

Register dan Alamat Memori

Register dan Alamat Memori

Kontrol / Status Register:

DB1307 terdiri dari dua register tambahan seperti kontrol / status1 dan kontrol / status2 yang digunakan untuk mengontrol jam waktu nyata dan menyela .

Kontrol / Status Register1:

Kontrol Status Register 1

Kontrol Status Register 1

  • TEST1 = 0 mode normal

= 1 mode uji jam EXT

  • STOP = 0 RTC dimulai

= 1 RTC berhenti

  • TESTC = 0 daya saat reset dinonaktifkan

= daya saat reset diaktifkan

Kontrol / Status Register2:

Kontrol Status Register2

Kontrol Status Register2

  • TI / TP = 0 INT aktif sepanjang waktu

= 1 INT waktu aktif yang dibutuhkan

  • AF = 0 Alarm tidak cocok

= 1 pertandingan Alarm

  • TF = 0 Timer overflow tidak terjadi

= 1 Terjadi overflow timer

  • ALE = 0 Interupsi alarm dinonaktifkan

= 1 Interupsi alarm diaktifkan

  • TIE = 0 Pengatur waktu menonaktifkan menonaktifkan

= 1 Timer interupsi aktif

Langkah3: Menghubungkan RTC ds1307 dengan 8051

RTC bisa dihubungkan ke mikrokontroler dengan menggunakan protokol bus serial yang berbeda seperti I2C dan Protokol SPI yang menyediakan hubungan komunikasi di antara mereka. Gambar tersebut menunjukkan, antarmuka jam real time dengan mikrokontroler 8051 menggunakan protokol bus I2C. I2C adalah protokol serial dua arah, yang terdiri dari dua kabel seperti SCL dan SDA untuk mentransfer data antar perangkat yang terhubung ke bus. Mikrokontroler 8051 tidak memiliki perangkat RTC inbuilt oleh karena itu kami telah terhubung secara eksternal melalui komunikasi serial untuk memastikan data yang terdiri.

Antarmuka RTC dengan Mikrokontroler 8051

Antarmuka RTC dengan Mikrokontroler 8051

Perangkat I2C memiliki keluaran drain terbuka oleh karena itu, resistor pull-up harus dihubungkan ke jalur bus I2C dengan sumber tegangan. Jika resistor tidak terhubung ke jalur SCL dan SDL, bus tidak akan berfungsi.

Step4: Format Pembingkaian Data RTC

Karena RTC interfacing dengan mikrokontroler 8051 menggunakan bus I2C maka transfer data berupa byte atau paket dan setiap byte diikuti dengan acknowledgement.

Mengirimkan Bingkai Data:

Dalam mode transmisi, master melepaskan kondisi awal setelah memilih perangkat budak berdasarkan bit alamat. Bit alamat berisi 7-bit, yang menunjukkan perangkat slave sebagai alamat ds1307. Data serial dan jam serial ditransmisikan pada jalur SCL dan SDL. Kondisi START dan STOP diakui sebagai awal dan akhir dari transfer serial. Operasi penerimaan dan pengiriman diikuti oleh bit R / W.

Mengirimkan Bingkai Data

Mengirimkan Bingkai Data

Mulailah: Terutama, urutan transfer data yang diprakarsai oleh master yang menghasilkan kondisi awal.

Alamat 7-bit: Setelah itu master mengirimkan alamat slave dalam dua format 8-bit, bukan satu alamat 16-bit.

Kontrol / Status Alamat Register: Alamat register kontrol / status adalah untuk memungkinkan register status kontrol.

Kontrol / Status Register1: Register status kontrol1 digunakan untuk mengaktifkan perangkat RTC

Kontrol / Status Register2: Ini digunakan untuk mengaktifkan dan menonaktifkan interupsi.

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

SAYANG: Jika operasi tulis dilakukan pada perangkat slave, maka penerima mengirimkan ACK 1-bit ke mikrokontroler.

Berhenti: Setelah selesai operasi tulis di perangkat slave, mikrokontroler mengirimkan kondisi stop ke perangkat slave.

Menerima Bingkai Data:

Menerima Bingkai Data

Menerima Bingkai Data

Mulailah: Terutama, urutan transfer data yang diprakarsai oleh master yang menghasilkan kondisi awal.

Alamat 7-bit: Setelah itu master mengirimkan alamat slave dalam dua format 8-bit, bukan satu alamat 16-bit.

Kontrol / Status Alamat Register: Alamat register kontrol / status adalah untuk memungkinkan register status kontrol.

Kontrol / Status Register1: Status kontrol register1 digunakan untuk mengaktifkan perangkat RTC

Kontrol / Status Register2: Ini digunakan untuk mengaktifkan dan menonaktifkan interupsi.

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

SAYANG: Jika operasi tulis dilakukan pada perangkat slave, maka receiver mengirimkan ACK 1-bit ke mikrokontroler.

Berhenti: Setelah selesai operasi tulis di perangkat slave, mikrokontroler mengirimkan kondisi stop ke perangkat slave.

Step5: Pemrograman RTC

Tulis Operasi dari Master ke Slave:

  1. Keluarkan kondisi awal dari tuan ke budak
  2. Transfer alamat budak dalam mode tulis pada jalur SDL
  3. Kirim alamat register kontrol
  4. Kirim nilai register1 kontrol / status
  5. Kirim nilai register2 kontrol / status
  6. Kirimkan tanggal seperti menit, detik dan jam
  7. Kirimkan stop bit

#include

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
batal mulai ()
void hosts (unsigned char)
penundaan (unsigned char)

void main ()
{

Mulailah()
tulis (0xA2) // alamat budak //
write (0x00) // control register address //
write (0x00) // control register 1 value //
tulis (0x00) // kontrol regiter2 vlaue //
write (0x28) // nilai detik //
write (0x50) // nilai menit //
write (0x02) // nilai jam //
}

batal mulai ()
{

SDA = 1 // memproses data //
SCL = 1 // jam tinggi //
penundaan (100)
SDA = 0 // mengirim data //
penundaan (100)
SCL = 0 // sinyal clock rendah //
}
void write (unsigned char d)
{

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

Baca Operasi dari Slave ke Master:

#include
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
batal mulai ()
void write (usigned char)
batal baca ()
batal ack ()
void delay (unsigned char)
void main ()
{
Mulailah()
write (0xA3) // alamat slave dalam mode baca //
Baca()
Sayang()
sec = nilai
}
batal mulai ()
{

SDA = 1 // memproses data //
SCL = 1 // jam tinggi //
penundaan (100)
SDA = 0 // mengirim data //
penundaan (100)
SCL = 0 // sinyal clock rendah //
}
void write (unsigned char d)
{

karakter tak bertanda k, j = 0 × 80
untuk (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
penundaan (4)
SCL = 0
}
SDA = 1
SCL = 1
penundaan (2)
c = SDA
penundaan (2)
SCL = 0
}
batal penundaan (int p)
{
unsignedinta, b
Untuk (a = 0a<255a++) //delay function//
Untuk (b = 0b}
Batal baca ()
{
Karakter tak bertanda j, z = 0 × 00, q = 0 × 80
SDA = 1
untuk (j = 0j<8j++)
{
SCL = 1
penundaan (100)
flag = SDA
jika (bendera == 1)

z = (z
batal ack ()
{
SDA = 0 // Garis SDA pergi ke rendah //
SCL = 1 // jam dari tinggi ke rendah //
penundaan (100)
SCL = 0
}

Ini adalah langkah-langkah yang diperlukan untuk antarmuka RTC dengan mikrokontroler 8051. Selain langkah-langkah ini, bingkai data yang digunakan untuk mentransfer dan menerima data juga dibahas dalam artikel ini untuk pemahaman pengguna dengan pemrograman yang sesuai. Untuk bantuan lebih lanjut tentang konsep ini, Anda dapat meninggalkan komentar di bawah.