Real Time Clock DS12C887
Chip DS12C887 buatan Dallas Semiconductor merupakan alat pencatat waktu yang baik, dalam chip itu tersimpan baterai Lithium sehingga pencatatan waktu tidak terhenti jika catu daya alat pemakaiannya terhenti, dan prosesor dapat mengambil kapanpun hasil kerjanya tanpa harus mengaturnya.
Waktu dicatat mulai dari Detik, Menit, Jam, Hari, Bulan, Tahun bahkan sampai dengan Abad dan sistem penanggalannya dirancang bisa bekerja tanpa salah sampai tahun 2099. Pencatatan jam bisa dilakukan dalam format 24 jam perhari, atau 12 jam am/pm.
Dalam mother board IBM produksi beberapa tahun yang lalu DS12C887sering dipakai sebagai pencatat waktu. Dalam chip ini terdapat pula memori (CMOS RAM) yang mendapat catu daya yang sama dengan catu daya pencatat waktu, sehingga informasi yang disimpan tidak hilang selama pencatat waktu masih bekerja. CMOS RAM tersebut dipakai untuk mencatat parameter yang dipakai untuk mengatur tata kerja mother board, dari sinilah didapat istilah CMOS Setup yang sangat dikenal dengan PC.
Selain dipakai sebagai pencatat waktu, DS12C887 bisa berfungsi sebagai alarm, bisa pula dipakai untuk membangkitkan sinyal periodik dengan frekuensi mulai dari 2 Hz sampai dengan 8 kHz. Karakteristik dari RTC DS 12C887 adalah sebagai berikut:
1. Pengganti clock /kalender komputer IBM AT
2. PIN kompatibel /sesuai dengan MC14618B dan DS 12C887
3. Data tidak akan hilang maksimal sampai 10 tahun meskipun tidak ada daya
4. Subsistem tercakup sendiri meliputi litium, kwarsa, dan pendukung rangkaian
5. Menghitung detik,menit, jam, hari seminggu, tanggal, bulan dan tahun dengan lompatan pergantian tahun
6. Data waktu kalender atau alarm dapat dipresentasikan dalam format biner / BCD
7. Format jam yang dipakai 24 atau 12 jam dengan AM dan PM dalam mode 12 jam-an
8. Pilihan waktu penyimpanan sianghari
9. Timing bus dapat dipilih antara Motorola dan Intel.
10. Bus multipleks antara address dengan data untuk efisiensi PIN
11. Interface dengan software dengan lokasi RAM 128 byte dengan15 byte clock register kontrol dan 113 byte RAM untuk tujuan umum.
Secara lengkap struktur dari DS12C887 dapat dilihat pada gambar dibawah ini :
Gambar 1 Diagram Blok DS12C887
Gambar 2 Konfigurasi Kaki DS12C887
1. AD0-AD7 : Bus alamat / data
2. NC : Tidak ada hubungan
3. MOT : Seleksi tipe bus Intel atau Motorola
4. CS : Chip select
5. AS : Sinyal untuk penanda bahwa AD0-AD7 adalah alamat
6. R/ : Masukan baca/tulis
7. DS : Sinyal untuk penanda bahwa AD0-AD7 adalah data
8. RESET : Masukan reset
9. IRQ : Pengiriman sinyal interupsi selamat 1 detik sekali
10. SQW : Keluaran gelombang kotak
11. VCC : Catu daya + 5 V
12. GND : Ground ( Vss )
Peta Memori
Dari sudut pandang pemprograman, chip DS12C887 terlihat sebagai 128 byte memori data. Memori data tersebut dipakai untuk mencatat waktu, penentu alarm, register pengatur kerja DS12C887 dan register pemantau kerja dari DS12C887, yang secara lengkap diperlihatkan dalam Tabel dibawah ini :
Tabel 1 Lokasi Memori DS12C887
|
Alamat |
Kegunaan |
Rentang Nilai (BCD) |
|
0 |
Detik |
00…59 |
|
1 |
Alarm |
00…59 |
|
2 |
Menit |
00…59 |
|
3 |
Alarm menit |
00…59 |
|
4 |
Jam |
00…12 81…92 00…23 |
|
5 |
Alarm jam |
00…12 81…92 00…23 |
|
6 |
Hari |
01…07 |
|
7 |
Tanggal |
01…31 |
|
8 |
Bulan |
01…12 |
|
9 |
Tahun |
00…99 |
|
10 |
Register A |
|
|
11 |
Register B |
|
|
12 |
Register C |
|
|
13 |
Register D |
|
|
14…49 |
Memori Bebas |
|
|
50 |
Abad |
19..20 |
|
51…128 |
Memori Bebas |
|
Memori data yang masih tersisa atau memori bebas merupakan memori yang bisa dipakai untuk segala macam keperluan. Memori nomor 10 sampai 13 dipakai sebagai register pengatur kerja DS12C887 dan register pemantau kerja dari DS1C8287, register-register tersebut dinamakan sebagai register A, B, C dan D. Pemakaian masing-masing bit dalam register-register tersebut dirinci dalam tabel – tabel dibawah ini :
Tabel 2 Register A (CMOS RAM No. 10)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
UIP |
DV2 |
DV1 |
DV0 |
RS3 |
RS2 |
RS1 |
RS0 |
Tabel 3 Register B (CMOS RAM No. 11)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
SET |
PIE |
AIE |
UIE |
SQWE |
DM |
24/12 |
DSE |
Tabel 4 Register C (CMOS RAM No. 12)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
IRQF |
PF |
AF |
UF |
0 |
0 |
0 |
0 |
Tabel 5 Register D (CMOS RAM No. 14)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
VRT |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Register A
Bit 7 dari register A dinamakan UIP (singkatan dari Update In Progress). Nilai 1 pada uip menyatakan data catatan waktu dalam DS1287 segera akan diperbaiki, jadi pengambilan data terkini seharusnya dilakukan pada saat UIP = 0. DV2, DV1 dan DV0 (bit 6 sampai 4) dipakai untuk mengatur kerja osilator kristal. Nilai 010 pada tiga bit ini menghidupkan rangkaian osilator dan mengaktifkan system pecatatan waktu. Nilai 110 atau 111 menghidupkan rangkaian osilator tapi system pencatatan waktu tidak bekerja. Nilai-nilai lainnya mematikan rangkaian osilator. Saat setelah diproduksi, agar beterai Lithium tidak terpakai sia-sia osilator dalam chip dimatikan. RS3, RS2, RS1, RS0 (bit 3 sampai 0) untuk menentukan frekuensi sinyal kotak yang dibangkitkan sesuai dengan kombinasi biner dari keempat bit ini, kombinasinya secara lengkap diperhatikan dalam Tabel 6.
Tabel 6 Frekuensi Pulsa SQW
|
RS3 |
RS2 |
RS1 |
RS0 |
Frekuensi SQW |
|
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
1 |
256 Hz |
|
0 |
0 |
1 |
0 |
128 Hz |
|
0 |
0 |
1 |
1 |
8.192 Hz |
|
0 |
1 |
0 |
1 |
4.096 Hz |
|
0 |
1 |
0 |
1 |
2.048 Hz |
|
0 |
1 |
1 |
0 |
1.024 Hz |
|
0 |
1 |
1 |
1 |
512 Hz |
|
1 |
0 |
0 |
0 |
256 Hz |
|
1 |
0 |
0 |
1 |
128 Hz |
|
1 |
0 |
1 |
0 |
64 Hz |
|
1 |
0 |
1 |
1 |
32 Hz |
|
1 |
1 |
0 |
0 |
16 Hz |
|
1 |
1 |
0 |
1 |
8 Hz |
|
1 |
1 |
1 |
0 |
4 Hz |
|
1 |
1 |
1 |
1 |
2 Hz |
Register B
AIE (bit 5, singkatan dari Alarm Interrupt enable) = 1 mengaktifkan system interupt alarm. UIE (bit 4, singkatan dari Update Ended Interrupt Enable) = 1 Mengaktifkan system interupt karena adanya perubahan nilai pencatatan waktu. SQWE (bit 3, singkatan dari Square Wave Enable) = 1 membangkitkan sinyal kontak pada kaki SQW (kaki nomor 23). DM (bit 2, singkatan dari data mode) menentukan format data pencatatan waktu. DM = 0 pencatatan waktu dilakukan dengan format biner, DM = 1 pencatatan waktu dilakukan dengan format BCD. 24/12 (bit 1) menentukan format pencatatan JAM, 24/12 = 0 pencatatan jam dilakukan dengan format 0..12, 24/12 = 1 pencatatan JAM dilakukan dengan format 0..24.DSE (bit 0, singkatan dari Daylight Savings Enable) dipakai untuk mengatur perubahan waktu pada musim panas dan musim dingin, hanya diperlukan pada daerah dengan 4 musim.
Register C
IRQF (bit 7 sigkatan dari Interrupt Request Flag) dipakai untuk menandai DS12C887 sedangkan mengajukan permintaan interup pada prosesor dengan cara me-nol-kan kaki IRQ* (kaki nomor 19). Setelah prosesor membaca isi register C, IRQF dan bit-bit lainnya dalam register C berubah menjadi 0 dan kaki IRQ* menjadi 1.
PF (bit 6 singkatan dari Periodic Interrupt Flag) menjadi 1 secara periodic, periodenya ditentukan oleh kombinasi nilai biner pada RS3..RS0 dalam Register A. Jika PIE dalam register B bernilai 1 saat PF bernilai 1, DS12C887 mengajukan permintaan interupsi pada prosesor dengan cara membuat 0 kaki IRQ* (kaki nomor 19).
AF (bit 5, singkatan dari Alarm Interrupt Flag) menjadi 1 jika waktu saat ini sudah sama dengan waktu alarm, jika saat itu AIE dalam Register B bernilai 1 pula, DS12C887 mengajukan permintaan interupsi dengan membuat 0 kaki IRQ* (kaki nomor 19).
UF (bit 4, singkatan dari Update Ended Interrupt Flag) menjadi 1 sekali dalam 1 detik, yakni pada saat perubahan pencatatan waktu. Jika saat itu UIE dalam Begister B bernilai 1 pula, DS12C887 mengajukan permintaan interupsi dengan membuat 0 kaki IRQ* (kaki nomor 19).
Register D
VRT (bit 7, singkatan dari Valid RAM and Time) disatukan saat DS12C887 diproduksi, menjadi 0 jika energi baterai Lithium sudah lemah sehingga nilai pencatatan waktu dan isi CMOS RAM diragukan keberadaannya.











malam bos!
hhe saya lg ada proyek ttg RTC dallas 12C887 ni bos..
aplikasi jam digital berbasis mikrokontroler ATMEGA 8535/16/32..outputnya ke LCD 1×16/2×16..
klo bos berkenan utk memberikan ilmu pemrograman C-nya, tolong kirim ilmunya ke email sy arcticsoul@ymail.com
saya biasa menggunakan CodeVision AVR sebagai compiler mggunakan bhsa C+BASCOM utk bahasa BASIC.
tq bos!
alamat friendster sy: soul_of_mayday@yahoo.co.id
Malem juga, mau buat jam digital pake RTC12C887 dengan AVR type analog seperti ATmega8535/16/32 seperti kurang cocok meskipun sebenarnya bisa, karena RTC ini menggunakan type komunikasi data secara paralel dimana address dan data di mpx, saran saya gunakanlah RTC dengan type komunikasi data serial I2C aja RTS DS1307 yang mana Avr analog tersebut sudah support dengan I2C.
Apalagi apabila anda pake codevision dalam pemrogrammanya jauh lebih mudah karena sudah disediakan settingnya tinggal pake aja.
Semoga sukses……………….
aya ingin merangkai sebuah alat dengan mikrokontroler Atmega 16 dengan menggunakan RTC jenis DS12C887.
yang ingin saya tanyakan adalah bagaimana saya memngetahui port mana saja yang harus dihubungkan antara Atmega 16 dan RTC.
saya mohon petunjuk dan gambar lengkap rangkaian RTC dan ATmega 16.Trima Kasih Sebelumnya….
Apabila anda menggunakan avr Atmega8535/16/32 jenis alanog ini sebaiknya anda menggunakan rtc ds1307 yang komunikasinya menggunakan serial I2C, apabila pemrogrammanya menggunakan codevision fasilitas ini sudah tersedia dan mikrokontroller tersebut sudah support. Jika menggunakan RTC12C887 gunakan AVR yang type digital seperti ATmega 8515, karena komunikasi RTC 12C887 ini menggunakan paralel data yang mana mikrokontroller tersebut sudah support. Semoga dapat membantu, tq atas pertanyaannya.
jadi, kemungkinan menggunakan ic RTC 12C887 tidak bs y.kl begitu bisakah saya minta rangkaian atmega 16 dengan i2c dan RTC buat saya pelajari dahulu…
sebelumnya saya ucapkan terima kasih telah banyak membantu…..
ok nanti akan saya bahas di bagian AVR, tunggu saja artikelnya……:) salam hangat
saya sudah buat skematik RTC12C887 dg AVR ATMEGA16
kalau menggunakan RTC DS1307 sudah ada teman saya yg menggunakannya, jadi harus berbeda2 satu sama lain sesuai perintah dosen,,
terima kasih sarannya,,saya sedang dalm proses membuat software dg Codevision AVR,,
kalau mas ws pambudi ada info atau saran lagi ke saya, tolong kirm email lagi
terima kasih ^^v
ok sama-sama, kalo masih pengen pake RTC 12C887 pake aja AVR digital dengan tipe ATmega8515 dimana pin-nya sama persis dengan AT89S51/52/8252 tapi kalo yang satu ini aku belum pernah coba sih, tapi kalo misalnya aku sudah bisa mengoperasikan jenis ini pasti aku share sama temen2……………………………..
akhirna aku pake DS 1307 aja.
dari harga Ic lebih murah dr pada menggunakan 12C887. sekarang tinggal permasalahan memprogram timing diagram I2C dengan RTCnya aja. mungkin ada saran. trima kasih atas masukannya…
Pemrogrammannya mau pake apa? kalo C mungkin bisa pake codevision dimana untuk fitur DS1307 sudah terdapat disana.
Exsample please….
8051(other) by C51(C) connect with 7segment 4 digits and RTC DS12C887
askum mas…
ne saya mw tnya
mw bikin jam digital output suara
nah pakenya ATMega 8535
enaknya pake ic isd berapa y mas
kl pake 1420 cukup g
rencananya sie tiap setengah jam satu jam
da suaranya
ato kalo pake ic tu g cukup???
siste kerja nya rekamnya tu gmn???
kalo 20 detik tu keseluruhan pa tiap kt rekam 1 kali
durasinya 20 detik
belum pernag pake soalnya
makasih
mas, sy mw buat jam digital dengan RTC12887 pake ATmega16,
waktu itu saya pikir bisa, and udah saya buat harwarenya lengkap pake LCD lagi,
tp ternyata pas saya baca koment d sini, saya jadi bingung,
apa bisa diterusin pake RTC2887 ato harus ganti juga,
mohon nasihatnya.
trims
wa’alaikum salam, wah ni mas ato jeng????
kalo pake ISD yang saya tahu type ISD25xx,
xx disini maksudnya adalah durasi penyimpanan maksimal dalam satuan detik
misalnya ISD2560 berarti maksimal 60 detik.
ic tersebut juga telah dilengkapi address untuk masing2 penyimpanan.
jadi kalo ada beberapa jenis suara yang berbeda beda akan dapat diakses
bergantian sesuai dengan address yang dimasukkan.
semoga sukses
kalo saran saya sih ganti aja pake rtc1307 I2C karena rtc12887 type komunikasinya adalah paralel,
dan atmega8535 ga support meskipun bisa juga pake cara akal-akalan.
tapi kalo tetep maksa pake rtc ini pake avr type digital aja seperti atmega8515 gt.
kalo mas pake codevision untuk buat programnya disana fasilitas untuk akses ds1307 sudah ada
tinggal diaktifkan saja.
semoga sukses
Mas-mass senior ada artikel jam digital berbasisi mikrokontroler yang output nya ke sevensegment…dan suara…..
soalnya saya mau dibikin tuga akhir kuliah saya….
kalo ada tolong kirimin ke email saya
rian_cuple@yahoo.co.id
thx sebelumnya
skarang sy sudah pake ds1307, dengan librari dar codevisionnya
tapi jam nya gak jalan,
setelah saya lihat data sheet saya disuruh mengaktifkan osilator,
tp setelah saya aktifkan osilatornya, jamnya masih gak jalan juga,
saya yakin perinytah enablenya sudah saya lakukan, karana setelah saya
baca kembali register di rtcnya, bitnya sudah enable.
mohon petunjuknya.
Langkah pertama yang perlu anda lakukan adalah memeriksa apakah komponen, nilai dan pemasangannya sudah benar.
Jenis RTC ini mempunyai kaki SWQ/OUT yang keluarannya berupa pulsa.
Fungsi ini dapat digunakan untuk melihat kerja dari osc, caranya pasang LED dan Resistor 220 ohm,
posisi aktif low atau high sama saja tidak ada masalah, so jika led tidak menyala berarti osc belum aktif.
Kalo untuk bahasa C nya saya perlu cek dulu program anda…
ini program yang saya buat, dan saya juga telah mengecek apakah osilato sudah enable atau belum dalam register 0
#include
#include
// I2C Bus functions
#asm
.equ __i2c_port=0×15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include // DS1307 Real Time Clock functions
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×18 ;PORTB
#endasm
#include
#include
// Declare your global variables here
char h,m,s,x,screen[33];
void main(void)
{
DDRA=0xF0;
PORTA=0xFF; // input dari keypad
DDRB=0xFF;
PORTB=0xFF; // LCD
DDRD=0xFF;
PORTD=0xFF; // pengaturan RTC dan buzzer
// LCD module initialization
lcd_init(16) ;
i2c_init();
i2c_start();//send start cond
i2c_write(0xd0);//send slave addr+w
i2c_write(0×00);//set the reg ptr to sec
i2c_write(0×00);//write 0 to ch bit
i2c_start();//send repeated start
i2c_write(0xd0);//send slave add+w
i2c_write(0×07);//to control register
i2c_write(0×80);
i2c_stop();
i2c_stop();
x=i2c_start();
lcd_gotoxy(0,0);
sprintf(screen,”return %d”,x);
lcd_puts(screen);
//rtc_set_time(2,5,0);
/*
do
{
x=rtc_read(0×00);
lcd_gotoxy(0,0);
sprintf(screen,”data %d”,x);
lcd_puts(screen);
rtc_get_time(&h,&m,&s) ;
lcd_gotoxy(0,1);
sprintf(screen,” %u:%u:%u”,h,m,s);
lcd_puts(screen);
}
while (1);
*/
}
skarang Jam digitalnya dah jalan, kynya yang rusak itu kristanya
nah kan bener, kalo masalah seperti itu pastikan dulu hardwarenya, karena kesalahan suatu desain baru sebuah sistem sekitar 75% adalah hardware baik itu komponen maupun PCB.
ok semoga sukses.
mas,, aq lagi nyari rangkaian IC Voice yang menggunakan Ic ISD 25120,,yang dapat di aplikasikan dengan mikron Atmega 32,,kira2 gimana ya bentuk rangkaian, cara pengaplikasiannya, dan tempat pembeliannya,,thanx b4
Aplikasi dengan ISD, untuk AVR sama dengan menggunakan MC51 hanya istruksinya aja harus menyesuaikan, sedangkan untuk gambar rankaian nanti saya email, untuk pembeliannya gunakan link ini http://delta-electronic.com/shop/advanced_search_result.php?keywords=isd&x=10&y=16
Mas saya bru bkin sens0r suhu.Pke ic8535.Rencana mau tak tmbahin jam dgital pke ds1307.Saya biasa pke basc0m avr.
Yg sya tnykan.K0nfigurasi dr kaki ds1307 yg ke ic8535 gmn?Kemudian programnya juga
saya mau tanya soal program assembler yang dapat digunakan untuk menyimpan data masukan sensor ultrasonik pada EEPROM AT89S8252. sebelumnya terima kasih
maap mas gggu
oia…
aku bleh minta cara mengkases RTC 12c887 serta program ??
pake bahasa assembler
aq pengen blajar RTC ne….
udah ada semua di blog saya ini, sourcenya aku pake bahasa asm trus at89s51, silahkan di download
bs minta program’y bos??
maklum masih awam..
kirim lewat email ya bos, ne alamatnya justify_oc@yahoo.co.id
Tengkyu
ada di artikel saya tentang proyek jam digital I, tadi sudah saya email linknya silahkan di cek
mas,, aq lagi nyari rangkaian ic isd25 yang interface dengan at89c51..ada g mas?kalo ada krm ya mas k email q….help
mas,,sya dapt tgas untuk mnampilin jam menggunakan rtc ds1307,,sya sudah mncoba make coding code vision avr,,,tapi ga mw2 nampilin jam nya mas,,,mas tolong kirimin source coding cvavr untuk nampilin jam menggunakan micro atmega 8535 ke email sya,,,(onegreatroute@yahoo.com),,,,tolong mas,,,makasi,,,
mas, sya mau nyari rangkaian isd25 didlam rangkaian pabx dengan interface at89c51, ada g mas?
saya sudah sertakan di artikel itu, silahkan dicek
mas… klau RTC DS12C887 pkek AT89S52 bs ga?cz q br bljr? blh mnt gmbr rngkaiannya ga dr AT89S52 ke RTC DS12C887?
krm ke email q ja…ne almtnya nepprip@yahoo.co.id
mksh mas sblmy….
boss tlg kasih rangkaian termometer digital output suara dengan memakai AVR 8535 dan memakai IC ISD 25120
thaks
mas senior, saya baru diberi proyek avr untuk membuat jam digital menggunakan 7 segment tetapi menggunakan suara sebagai pengingatnya..saya bingung bagaimana membuatnya dan apa aja yang diperlukan..mohon pencerahan ilmunya dunx, bisa di kirim k email sy juliushasan2@gmail.com
untuk rangkaian itu saya belum pernah mencoba, mungkin kalo misalnya dipaksakan beli aja kitnya trus dihubungkan antara avr dengan isd ga susah kok
mas, saya mau bikin jam digital dengan 4 output alarm, sampai saat ini saya kesulitan mencari skematik RTCnya, saya mau menggunakan IC ds1287, sementara mikronya saya menggunakan AT89S52.. apakah mas punya skematiknya RTC DS1287..
mas saya mw tanya mengenai ISD 1420 ni… gmana cara mencari alamat yang udah direkam, sy ada proyek alat ukur tinggi badan menggunakan ISD kesulitan mencari alamat datanya,, mohon bantuannya… sebelumnya terima kasih
mas saya mau buat jam digital dan alarm tiap jam 8 mlm bunyi. itu list programnya gmn? kq g bisa2
mas tolong sharing ilmunya tentang program c rtc 12c887 . tolong kirim ke email ku bang_baron60@yahoo.com
saya tunggu
mas saya mw tanya,klo program menambahkan alarm gimana y?,misal jam 5 pagi alrm berbunyi dengan output speaker.dengan menggunakan code vision dan mikron 8535.makasih sebelumnya mas….
tolong dikirim dulu list programnya ke saya, nnt saya bantu cek