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