1. Dokumen tersebut merupakan rangkuman tentang pembuatan jam digital 4 digit menggunakan IC AT89C2051 dan display 7 segmen. Jam digital dapat menampilkan waktu jam, menit, dan detik dengan menggunakan 2 tombol untuk mengatur pengaturan waktu.
1. Jam Digital (Seven Segment) Page 1
UAS SISTEM DIGITAL
Jam Digital 7 Segment
Gambar : Rakitan jam digital ic at89c2051 4 digit seven segment
Program Studi S1 Teknik Informatika
Disusun oleh,
Nama :
1) Angga Kusuma : 1555.2010.65
2) Nurul Qomariyah : 1555.2010.92
3) Shaun Hardinata : 1555.2010.20
4) Bayu Ismail : 1555.2010.05
Jenjang : S1, Teknik Informatika
Matkul : Sistem Digital
Dosen : Karno diantoro, S.Kom
2. Jam Digital (Seven Segment) Page 2
Membuat Jam digital sederhana 4 digit 7 segment dengan satu ic at89c205
(mcs51, 8051 seven segment digital clock 4 bit)
Berikut skemanya :
Dari skema rangkaian di atas bisa diambil detil dari komponen-komponen-nya:
1. Display seven segment 4 digit dilengkapi dengan titik dua di tengah untuk blink detik (simbol
FF1 seri komponen HSN 5543S)
2. Resistor pack (resistor array 8x1K) atau bisa menggunakan resistor biasa yang dijajar, seperti foto
diatas.
3. IC atmel 89c2051 yang sudah diprogram jam digital (untuk mendapatkannya bisa bertanya ke-
penulis di kolom komentar)
4. 2 saklar / push button untuk seting / mengatur jam dan menit
5. 1x crystal 12Mhz
6. 4x Kapasitor dengan berbagai nilai
7. 1x resistor 10K
8. 1x Terminal connector untuk mencatu dari power supplay 5V
Dari sekitar 8 komponen inti ini anda sudah bisa praktek merangkai jam digital buatan sendiri.
3. Jam Digital (Seven Segment) Page 3
Perkiraan biaya komponen untuk membuat jam digital sederhana ini :
1. Display seven segment 4 digit yang dilengkapi 2 titik
7 segmen 4 digit jam digital
karakteristik pin / kaki seven segmen
Harga Rp. 10.000,-
2. Resistor 10K dan 1K sekitar 10pcs
Resistor 1/4 watt
Harga 1 resistor Rp. 100,-/pcs
4. Jam Digital (Seven Segment) Page 4
3. IC atmel at89c2051 1pcs
IC at89c2051
Harga 1 pcs ic at89c2051 Rp.15.000, ic yang baru belum ada programnya, jadi kalau mau dipakai
untuk jam digital harus diisi dulu dengan file hex jam digital.
4. Saklar / push button 2 pcs
tactile switch / push button
Harga saklar kecil ini sekitar Rp. 1.000,- / pcs
5. Kristal / x-tal /crystal 12Mhz
kristal / xtal / crystal 12Mhz
Harga kristal 12Mhz sekitar Rp.2.500,-
5. Jam Digital (Seven Segment) Page 5
6. Kapasitor keramik dan elko
kapasitor keramik 30pf
kapasitor elektrolit / elko
Harga kapasitor keramik dan elko perpcs sekitar Rp.250,-
7. Terminal konektor untuk power supply
terminal konektor 2pin
Harga terminal konektor Rp.1.500
6. Jam Digital (Seven Segment) Page 6
Jadi kalau dirinci semua harga komponen sebagai berikut :
1. Display seven segmen 4 digit 1biji = 10.000
2. Resistor 10 biji = 1.000
3. IC atmel at89c2051 1biji = 15.000
4. Saklar push button / tactile switch 2biji = 2.000
5. Kristal 12Mhz 1biji = 2.500
6. Kapasitor keramik dan elko 4biji = 1.000
7. Terminal konektor 2pin 1biji = 1.500
Total harga semua komponen utama = Rp 33.000 (33 ribu)
Harga diatas adalah mengacu pada toko online pertanggal 09 Juni 2017, bisa saja harga lebih murah
atau lebih mahal tergantung daerah dan toko-nya.
Keterangan :
1. AT89C2051
Adalah sebuah microcontroller 20 pin yang digunakan untuk pengendali utama. Komponen ini
berfungsi sebagai penyimpan program dan juga mengendalikan tampilan Display seven segment
melalui BCD 7447 serta decoder/demultiplexer 74138 sebagai common anoda.
2. Seven Segmen
Seven segmen adalah penampil dengan susunan 7 digitit yang dapat menampilkan angka dari 0 –
9. Seven segmen disusun untuk menampilkan Jam, menit dan detik. Seven segmen mendapat
input dari BCD dan Decoder/Demultiplexer.
3. Kristal 12 Mhz.
Kristal yang digunakan untuk AT89S, biasanya 12 Mhz atau 11.58Mhz, anda akan mendapatkan
referensi waktu yang pas untuk 1 detik bila menggunakan kristal 12 Mhz. Kristal adalah resonator
mekanik yang bergetar menstabilkan getaran elektronis, kristal stabil karena memiliki ‘inersia’
yang relatif besar. Jika anda menggunakan kristal maka akan didapatkan frekuensi clock yang
stabil.
4. Resistor 10 KΩ.
Resistor adalah komponen yang terbuat dari bahan cemen. Sifat dari resistor dapat menghantar
dan mengurangi tegangan sekaligus juga dapat mengurangi arusnya. Resistor diatas menggunakan
kode huruf 10K yang artinya resistor tersebut bernilai 10 KΩ. Daya resistor adalah kemampuan
yang dimiliki oleh resistor agar tidak terbakar pada saat dialiri arus atau tegangan. Dan satuan
daya resistor adalah W (Watt).
7. Jam Digital (Seven Segment) Page 7
Cara Kerja :
AT89C2051 diberi catu daya 3 - 6 Volt. Kemudian ada 4 ruas LED untuk menampilkan waktu, terdiri
atas angka-angka puluhan jam, satuan jam, puluhan menit dan satuan menit. Tombol SW1 dan SW2
dipakai untuk mengatur tampilan waktu, saat SW1 ditekan angka pada tampilan jam akan bertambah
setiap detik, sedangkan SW2 dipakai untuk mengatur angka tampilan menit dengan cara yang sama.
7segment adalah komponen yang berfungsi menampilkan karakter angka. Dalam 7segment juga
dilegkapi dp (dot poin) untuk menampilkan koma atau titik pada saat menampilkan bilangan.
Kegunaan 7segment biasanya untuk jam digital.
Dalam bagian sevent segmen terbagi 8 bagian yang sudah ada bagiannya sendiri-sendiri
(A,B,C,D,E,F,G dan dp) bisa lihat gambar di bawah ini :
Misal untuk menampilkan angka 1, maka yang harus hidup dibagian (B, C,). untuk angka 2 (A, B,
D,E, G) dan seterusnya. Tabel Biner untuk menyusun angka 0-9
Setelah memahami kerja dari masing masing IC tersebut, pengaturan arus yang masuk ke display
seven segment kamu bisa atur dengan menggunakan resistor disetiap segment nya atau menggunakan
driver tambahan bila ingin membuat seven segment lebih besar.
Kristal yang digunakan untuk AT89S, biasanya 12 Mhz atau 11.58Mhz, anda akan mendapatkan
referensi waktu yang pas untuk 1 detik bila menggunakan kristal 12 Mhz. Kristal 12 MHz dan
kapasitor C1 dan C2 membentuk rangkaian oscilator pembangkit frekuensi kerja AT89C2051,
rangkaian ini merupakan rangkaian baku, artinya bentuk rangkaian oscilator ini selalu seperti ini
untuk semua rangkaian AT89C51, kecuali untuk keperluan yang lain nilai kristalnya saja yang
mungkin berbeda.
8. Jam Digital (Seven Segment) Page 8
Kombinasi kapasitor C3 dan tahanan R8 juga merupakan rangkaian baku, komponen ini dipakai untuk
membentuk rangkaian ‘power on reset’, artinya rangkaian yang akan otomatis me-reset AT89C2051
setiap kali AT89C2051 mulai menerima sumber daya listrik.
Melihat rangkaian pada Gambar, memang tidak bisa dijelaskan bagaimana Jam Digital ini bekerja,
karena rangkaian itu hanyalah bagian tampilan dan tombol pengatur waktu waktu saja, ‘Jam’ yang
sesungguhnya berupa program yang disimpan di dalam ROM yang ada di dalam IC AT89C2051.
Berikut Source Code-nya :
source code dalam bahasa C yang dicompile dengan SDCC 3.x
#include <at89x051.h>
/**** Menentukan Pin Common Cathode ke Pin IC P3 ****/
#define CC1 P3_0
#define CC2 P3_1
#define CC3 P3_2
#define CC4 P3_7
/**** Menentukan Pin Segment ke Pin IC P1 ****/
#define seg_a P1_0
#define seg_b P1_1
#define seg_c P1_2
#define seg_d P1_3
#define seg_e P1_4
#define seg_f P1_5
#define seg_g P1_6
#define seg_dp P1_7
/*** Menentukan saklar pengatur ***/
#define saklar_menit P3_5
#define saklar_jam P3_4
/**** Menentukan variabel ****/
unsigned char detik_sen, detik, menit, jam;
/**** Membuat fungsi untuk menunggu atau jeda waktu ****/
void jeda(int saat)
{ int tik;
for(tik = 0; tik < saat; tik++) continue;}
/**** Membuat fungsi untuk menampilkan angka ****/
void angkaSegmen(unsigned char angka)
{
switch(angka)
{ case 0:
{
seg_a = seg_b = seg_c = seg_d = seg_e = seg_f = 1; /* hidupkan segmen membentuk angka 0 */
break;}
case 1:
{seg_b = seg_c = 1; /* hidupkan segmen membentuk angka 1 */
break;}
case 2:
{seg_a = seg_b = seg_d = seg_e = seg_g = 1; /* hidupkan segmen membentuk angka 2 */
break;}
case 3:
{seg_a = seg_b = seg_c = seg_d = seg_g = 1; /* hidupkan segmen membentuk angka 3 */
break;}
case 4:
9. Jam Digital (Seven Segment) Page 9
{seg_b = seg_c = seg_f = seg_g = 1; /* hidupkan segmen membentuk angka 4 */
break;}
case 5:
{seg_a = seg_c = seg_d = seg_f = seg_g = 1; /* hidupkan segmen membentuk angka 5 */
break;}
case 6:
{seg_a = seg_c = seg_d = seg_e = seg_f = seg_g = 1;
/* hidupkan segmen membentuk angka 6 */
break;}
case 7:
{seg_a = seg_b = seg_c = 1; /* hidupkan segmen membentuk angka 7 */
break;}
case 8:
{seg_a = seg_b = seg_c = seg_d = seg_e = seg_f = seg_g = 1; /* hidupkan segmen membentuk
angka 8 */
break;}
case 9:
{seg_a = seg_b = seg_c = seg_d = seg_f = seg_g = 1;
/* hidupkan segmen membentuk angka 9 */
break;}
}
}
/*** menjalankan interrupt untuk menjalankan pencacah ****/
void timerisr(void) __interrupt(1)
{
TH0 = 0xd8;
TL0 = 0xf9;
if(++detik_sen >= 100)
{ detik_sen = 0;
if(++detik >= 60)
{ detik = 0;
if(++menit >= 60)
{ menit = 0;
if(++jam >= 24)
{ jam = 0;
}
}
}
}
}
/*** Program utama dijalankan dari sini ***/
void main()
{
TMOD = 0x01; /** Memilih timer mode 0 16 bit **/
TH0 = 0xd8; /** Menentukan interrupt pencacah 100ms ***/
TL0 = 0xf9;
EA = 1; /** opsi interrupt **/
ET0 = 1;
TR0 = 1; /** Menjalankan timer isr untuk pencacah ***/
detik_sen = detik = menit = jam = 0; /** memberikan nilai awal pada variabel **/
/* memberi nilai awal pada pin ic */
P1 = 0x00;
P3 = 0xff;
while(1) /** looping **/