Translate

Dadu Elektronik Kembar Dengan AT89


Terima kasih kepada Sobat yang sudah membaca artikel yang aku buat.

Aku pernah menulis sebuah artikel mengenai “Membuat Dadu Elektronik Mengenang Masa Lalu” dan ternyata ada beberapa yang merespon tulisan tersebut.

Pada artikel ini, sengaja penulis membahas lagi mengenai pembuatan penampil dadu tetapi akan menampilkan sebanyak 2 buah dadu atau kembar. Tentu saja tidak menggunakan komponen IC TTL atau CMOS standar seperti terdahulu tetapi menggunakan mikrokontroler seri AT89.

Nah, mungkin di antara Sobat lainnya ada yang belum membaca artikel sebelumnya maka berikut sedikit ulasan mengenai apa dan bagaimana dadu elektronik tersebut.

Sebuah kubus dadu memiliki 6 sisi yang masing-masing merepresentasikan angka 1 sampai 6 dalam bentuk noktak seperti gambar berikut ini:

Dari tampilan kubus dadu tersebut secara elektronik hanya ada 4 noktah yang berubah-ubah sesuai penunjukkan nilai dadu yaitu noktah untuk 1, 2, 4 dan 6 sehingga diagram pewaktuannya untuk urutan nilai dadu adalah sebagai berikut:



Diagram pewaktuan tersebutlah yang menjadi dasar dalam pembuatan sebuah penampil dadu elektronik. Setiap peraga dadu membutuhkan sekitar 4 bit. Jadi jika kita ingin membuat beberapa peraga adalah kelipatan jumlah bit-bit yang dibutuhkan. Karena kita akan membuat 2 buah maka yang dibutuhkan adalah 8 bit atau 1 byte saja.

Berikut adalah gambar rangkaian untuk peraga dadu kembar menggunakan AT89C2051. Keluaran peraga dadu menggunakan Port 1 yang terbagi dalam 2 nibel yaitu dadu pertama dengan LSB dan dadu kedua MSB. Port 3.7 digunakan untuk tombol START di mana saat ditekan maka secara internal pencacah akan berjalan dan menampilkan hasil akhir cacahan pada keluarannya saat dilepaskan.



Untuk aplikasi program yang harus dijalankan pada mikrokontroler AT89C2015 dapat Sobat lihat pada daftar program di bawah ini:

                       1    $mod51
0000                   2    org     0

Setelah menetap mode kompilasi untuk MCS-51 dan alamat awal di mana program akan dimulai maka hal pertama adalah menetapkan isi akumulator dengan #00010001B. Merujuk pada diagram pewaktuan di atas maka nilai akumulator akan merepresentasikan keluarah kubus dadu masing-masing dengan menunjukkan angka 1. Nilai akumulator ini harus dikomplemen terlebih dahulu sebelum dipindahkan ke Port 1 untuk ditampilkan karena keluaran dari gerbang ini adalah aktif rendah pada LED.

0000 7488              3            mov     a, #00010001b
0002                   4    Tampilan:
0002 F4                5            cpl     a
0003 F590              6            mov     p1, a

Selanjutnya program menunggu nilai Port 3.7 menjadi rendah atau tombol START ditekan. Jika Port 3.7 rendah maka isi Port 1 akan dipindahkan ke akumulator untuk kemudian dikomplemen dan Port 1 sendiri diisi dengan nilai 0 untuk membuat seluruh LED menyala. Namun jika diinginkan beroperasi menggunakan batere maka saran penulis lebih baik nilai tersebut diganti #255 agar seluruh LED padam sehingga menghemat batere.

0005 20B7FD            7            jb      p3.7, $
0008 E590              8            mov     a, p1
000A F4                9            cpl     a
000B 759000           10            mov     p1, #0

Sebelum melakukan proses pencacahan angka dadu, aplikasi kembali memeriksa nilai Port 3.7 untuk memastikan posisi tombol START, kemudian baru memeriksa Noktah 1 dari dadu pertama yaitu bit ACC.0. Kita anggap nilai akumulator seperti di atas yaitu 00010001B maka program akan melompat ke alamat Dadu12 di mana LSB mewakili nilai dadu pertama 1.

Jika ACC.0 bukan 1 maka program terlebih dahulu memeriksa nilai ACC.3 yaitu noktah 6. Jika ACC.3 bernilai 1 maka berarti nilai dadu pertama sudah menunjuk pada angka 6 dan program akan menuju ke Dadu21. Sementara jika ACC.3 rendah di mana kemungkinan dadu menunjukkan angka 2 atau 4 maka ACC.0 akan diset untuk menunjuk ke angka 3 atau 5.

000E 20B7FD           11    Dadu11: jb      p3.7, $
0011 20E007           12            jb      acc.0, Dadu12
0014 20E318           13            jb      acc.3, Dadu21
0017 D2E0             14            setb    acc.0
0019 010E             15            ajmp    Dadu11

Pada Dadu12 selanjutnya program akan memeriksa ACC.1 atau noktah 2. Jika masih rendah atau berarti angka dadu pertama adalah 1 maka ACC.1 akan diset dan program melompat ke alamat Dadu1 untuk menunjuk angka 2.

001B 20E104           16    Dadu12: jb      acc.1, Dadu14
001E D2E1             17            setb    acc.1
0020 012B             18            ajmp    Dadu1

Sama halnya dengan alamat Dadu14 dan Dadu16 yang menjalankan perintah untuk menampilkan angka dadu pertama menjadi 4 dan 6.

0022 20E204           19    Dadu14: jb      acc.2, Dadu16
0025 D2E2             20            setb    acc.2
0027 012B             21            ajmp    Dadu1
0029 D2E3             22    Dadu16: setb    acc.3
002B C2E0             23    Dadu1:  clr     acc.0
002D 010E             24            ajmp    Dadu11

Program yang diawali oleh Dadu21 akan mereset nilai LSB akumulator dengan nilai 1. Program selanjutnya adalah sama dengan di atas namun untuk memproses nilai dadu kedua yang ditunjuk oleh MSB.

002F 54F0             25    Dadu21: anl     a, #11110000b
0031 4401             26            orl     a, #00000001b
0033 20E407           27            jb      acc.4, Dadu22
0036 20E718           28            jb      acc.7, Reset
0039 D2E4             29            setb    acc.4
003B 010E             30            ajmp    Dadu11
003D 20E504           31    Dadu22: jb      acc.5, Dadu24
0040 D2E5             32            setb    acc.5
0042 014D             33            ajmp    Dadu2
0044 20E604           34    Dadu24: jb      acc.6, Dadu26
0047 D2E6             35            setb    acc.6
0049 014D             36            ajmp    Dadu2
004B D2E7             37    Dadu26: setb    acc.7
004D C2E4             38    Dadu2:  clr     acc.4
004F 010E             39            ajmp    Dadu11
0051 7411             40    Reset:  mov     a, #00010001b
0053 010E             41            ajmp    Dadu11
                      42    end

Rangkaian dadu di atas dapat bekerja pada tegangan 3 volt sehingga bisa dicatu menggunakan 2 buah batere jenis AA, AAA. Jika Sobat menggunakan AT89C2051 maka akan menarik arus sekitar 5,5 mA sementara jika menggunakan AT89S2051 hanya membutuhkan 3,5 mA. Untuk masing-masing LED membutuhkan arus sekitar 3 mA dan beban tertinggi adalah saat menampilkan nilai dadu 6 sebanyak 12 LED sehingga beban untuk LED menjadi 36 mA.

Nah, Sobat bisa menempatkannya pada kotak sehingga mudah dibawa kemana-mana.



Udah ya, makasih udah baca postingan aku. Semoga bisa bermanfaat, sukur-sukur bisa diterapkan oleh sobat semua.

Salam....

Tidak ada komentar:

Posting Komentar