Simulasi Seven Segment untuk Program Jam Digital dengan Tampilan Jam-Menit-Detik
Seven Segment adalah salah satu komponen yang paling sering digunakan terutama untuk menampilkan data dalam bentuk angka. Untuk itu, Microcontroller Project juga menyediakan simulasi untuk seven segment, yaitu SSLED.exe
Simulasi seven segment yang disediakan oleh SSLED.exe berukuran delapan digit dengan cara multipleks. Cara multipleks adalah cara yang paling sering digunakan karena pengkabelan yang ringkas dan hanya membutuhkan sedikit port untuk mengendalikannya. Cara mengendalikan seven segment yang disusun secara multipleks adalah dengan membagi dua macam jalur berupa jalur data dan jalur pengendali digit. Jalur data digunakan untuk menentukan lampu mana yang menyala, sedangkan jalur pengendali digit digunakan untuk mengatur digit mana yang menyala.
Jalur data dan jalur pengendali digit pada SSLED.exe diterima menggunakan window message berupa WM_USER. Jika lParam bernilai 1, maka sinyal yang diterima akan dianggap sebagai sinyal untuk jalur pengendali digit. Sedangkan jika lParam bernilai 2, maka sinyal yang diterima akan dianggap sebagai sinyal untuk jalur data.
Pada jalur data, bit 0 akan digunakan untuk menyalakan lampu a, bit 1 untuk menyalakan lampu b, dan seterusnya hingga bit 6 untuk menyalakan lampu g. Sedangkan bit 7 digunakan untuk menyalakan lampu titik desimal. Jika sebuah bit bernilai 1, maka lampu yang bersangkutan akan menyala. Hal ini akan sesuai dengan penyalaan lampu pada tipe common cathode. Akan tetapi kita juga bisa membalik data sehingga jika data yang dikirim bernilai FF, maka data tersebut justru akan dianggap 00. Kemampuan ini berguna untuk penyesuaian dengan tipe seven segment yang akan digunakan.
SSLED.exe menyediakan dua cara pengendalian digit, yaitu cara paralel dan cara counter. Pada cara paralel, setiap digit bisa diaktifkan secara individual tergantung nilai bit pada jalur pengendali. Bit 0 pada jalur pengendali akan mengendalikan digit paling kanan dan bit 7 akan mengendalikan digit paling kiri. Jika sebuah bit bernilai 1, maka digit yang bersangkutan akan aktif. Dan seperti halnya pada jalur data, maka jalur pengendali digit juga bisa dibalik.
Pada mode counter, hanya bit 0 dan bit 1 pada jalur pengendali digit yang digunakan. Bit 0 digunakan untuk mereset counter, sehingga digit yang aktif menjadi digit yang paling kanan. Sedangkan bit 1 digunakan untuk menggeser digit yang aktif menjadi digit disebelah kirinya, atau sebutlah sebagai menaikkan cacahan counter. Cara menaikkan cacahan counter pun ada dua macam, yaitu transisi L to H atau transisi H to L. Jika kita menggunakan transisi L to H, maka counter akan dinaikkan cacahannya jika bit 1 berubah kondisi dari 0 menuju 1. Sebaliknya jika transisi yang digunakan adalah H to L, maka cacahan justru akan dinaikkan jika bit 1 berubah kondisi dari 1 menjadi 0.
Jika digit yang aktif adalah digit paling kiri dan cacahan dinaikkan, maka digit yang aktif akan kembali menjadi digit paling kanan.
Gambar di atas adalah contoh bagaimana simulasi seven segment jika dioperasikan untuk menampilkan program jam digital. Program di atas sebenarnya merupakan modifikasi dari program pada bab Interupsi dari buku Mudah dan Menyenangkan Belajar Mikrokontroler, yaitu pada program Timer.A51. Akan tetapi pada buku tersebut kita akan mencoba program pada seven segment yang sebenarnya, jadi kita perlu berhemat hanya dengan menggunakan empat digit saja. Sedangkan pada simulasi ini, kita memiliki simulasi seven segment yang menyediakan delapan digit. Oleh karena itu, kita bisa menampilkan tidak hanya jam dan menit saja, tetapi juga detik. Bahkan kita masih memiliki sisa dua digit. Sisa digit ini kita gunakan untuk memisahkan jam dengan menit dan menit dengan detik, yantu dengan menampilkan tanda (-). Oleh karena itu, kita perlu sedikit modifikasi dari program Timer.A51 agar bisa menampilkan detik dan tanda pemisahan tersebut.
Kode sumber ditulis dengan format M51 dan c dimana sinyal data dikirim menggunakan P0, dan sinyal kendali digit menggunakan P1. Dengan demikian kita harus mengatur P0 untuk dilink secara Link Message dengan message berupa WM_USER dan lParam bernilai 2 serta mengisi Handle dengan Capture Handle ke SSLED.exe yang sedang berjalan. Demikian juga dengan P1. Hanya bedanya pada P1, nilai lParam adalah 1. Dan ingat, buang tanda cek pada menu Update Display pada simulator.
Tapi perlu diingat bahwa program tersebut ditulis untuk berjalan di mikrokontroler dengan kristal 11,592Mhz. Jadi kecepatan perubahan detik pada saat simulasi belum tentu tepat. Dan kecepatannya tergantung kecepatan komputer yang Anda gunakan.
Nah, menarik kan? Selamat mencoba
Apakah Anda menyukai post ini? Mengapa tidak memberikan komentar di bawah dan melanjutkan perbincangan, atau berlangganan my feed dan dapatkan artikel semacam ini yang dikirm secara otomatis feed reader Anda.
Comments
trima kasih untugg itu…
infonya…
klow bisa tw ap nama IC yang dipake??
dan gambara rangkaiannya pada papan pcb..
harap kirim ke febiiy_sanchez@yahoo.com
ini menyangkut saya NAIK ATAU TINGGAL KELAS…
KUMOHOHN
IDE baru V6 sudah saya donlot and bisa saya pakai simulasi enak mas(tinggal coba write pake alat saya)
mo sekalian tanya neh, saya suka source ini dan mau saya kembangkan untuk timer penyalaan lampu aquarium 3 formasi dengan 3 waktu yg berbeda (ada seh yg jual timer jadi tp 45rb an klo butuh 3 Rp.150.000 mahal dung and habisin tempat)
saya yakin source anda ini bisa saya kembangkan, tp dg assembler perintah yg mirip VB
‘——-batas timer—
dim jamNeon as Time
dim JamLED as Time
dim JamUV as Time
if format(now(),”hh:mm”) > jamNeon and _ Format(now(),”hh:mm”)+durasi > jamNeon then
‘–bla bla bla
nyalakan_Neon
‘–bal bla…. dst
endif
‘–bal bla…. dst
klo asembly mnemonic lebih besar bisa gak ya…?
thx b4
Terimakasih mas, wah hebat
[/b]@roy: sebenernya aku belum begitu paham ma pertanyaannya[b]
maaf mas pertanyaanku yg ribet mungkin, tapi hebat bisa jawab persoalanku,
iya mas, aku sekarang punya gambaran dari macro ini
tantangan saya selanjutnya adalah saya akan coba atur agar bisa berjalan di 89C2051 4 digit SS and dg 2 tombol unt setting,3 port untuk nyalain lampu
emm…
.. bisa aku kayaknya..
nanti klo ada kendala, bakal ganggu mas lagi hehe sorry n thx b4 mas
[b]Bisa[/b] 892051 port na P3 and P1
[b]Sepertinya[/b] bisa untuk 4 digit(8 bit data seven segmen) di kemudikan dengan 4 bit untuk menentukan digit aktif, trus 2 bit untuk saklar. sisanya 2 bit untuk atur relay lampu neon
yaahh kurang satu dunk klo untuk 4 lampu (tambah IC TTL pencacah dunk sepertinya)
kecuali ada ide lain apa ya…?
DEFAULT DOWNLOADER untuk micro v 611
saya tidak terburu buru butuhnya mas tapi klo memang ada saya berminat untuk mendapatkan juga, atau default itu juga bisa di fungsikan sebagai DTK..?
NB: mas di micro v6 ini saya menggunakan directive
JAM1 equ 8
JAM2 equ 9
jam3 equ 10
mov SP,#savestack
tapi waktu di SIM(simulasi) SaveStack nilainya kok #08H ..?
thx b4 mas
mz bisa minta souce code untuk at89c2051 cos aq dapat kok g ada yg bisa ya? kl ada tlng di kirim ke email achmadmuchlis17@gmail.com terimakasih sebelumnya
Siang Kang…Yoko… Setelah saya download rev debouncing saya jalankan ternyata swit yang di P3.3 dan P3.4 jika ditekan membuat digit pertama menyala lebih terang dan titik berkedip2. tetapi tidak bisa ntuk seting jam dan menit. gimana yaaa..?? terus untuk detikan saya coba pasang common anoda digit 1 di P3.5 digit 2 di P3.4 digit 3 di P3.3 digit 4 di P3.2 digit 5 di P3.1 dan digit 6 di P3.0 ternyata gak mau muncul detikannya.. salahnya dimana yaaa???? Tolong dong kaang. dikasi jalan keluar…..please deh ahhhh…
bang aq baru belajar mikrokontroller aq pengen buat jam digital dengan at89c2015 menggunkan 4 digit 7 segmen tpi terbentur sama souce code nya. bisa minta tlng untuk kirimkan souce code ke achmadmuchlis17@yahoo.com
terima kasih sebelumnya
mz saya pakek program read51 saya coba masukkan program yang saya dapat dari mz sulhan tpi kok ada errornya 1. tulisannya
cSio51.c is up to date
Linking c51.obj
c0.OBJ
cSio51.obj
-> cSio51.hex
1 linker error found. Generating error file…
gmn penyelsaiannya mz . mohon petunjuknya biar saya bisa belajar
maaf kalo ngerepotin sebelumnya bang, kebetulan saya nguliknya di bahasa assembler. Saya gak paham dengan bahasa C.
Kalo saya pake kristal, misalnya 1Mhz. berarti periodanya 10^-6s, kalo 1 perintah bernilai 1 siklus. Apakah untuk 1 detik saya membuat pengulangan 1juta kali terhadap siklus ts?!. Apa perhitungannya sesederhana itu bang?
ini delay yang saya buat :
…
delay:
mov r0,#01h (nilai r0 dan r1 hanya contoh)
mov r1,#0ffh
sjmp penghabis_delay1
penghabis_delay1:
djnz r1,penghabis_delay1
djnz r0,penghabis_delay1
ret
…
Makasih sebelumnya… maaf merepotkan.
mas, Aq bole minta tolong kirimi contoh program+codingnya ini ke e-mailq ngk.???
kalau semisal bole & ngk keberatan tlg di kirimkan ke lucky_maghfirah@yahoo.com, makaci sebelumnya.. !!!????
mas, boleh minta source code bahasa c buat avr atmega16 donk..
kalo bisa kirim ke email ku ya.. cheche_dunk@yahoo.co.id
Indonesia
English
saya tertarik melihat tampilan jam digital di 7 segment, tuk melihat lebih jelas rangkaianna dimana ya?