Cara Membuat Lampu Lalu Lintas Dengan
Visual Basic 6.0
Okeh, kali ini admin akan mencoba memberikan sedikit tentang
bagaimana Cara Membuat Lampu Lalu Lintas Dengan Visual Basic 6.0, program
kali ini masih bersifat sederhana karena hanya menggunakan beberapa komponen
saja. Langsung saja untuk menuturkan langkah demi langkah proses pembuatan
program sederhana ini. Mari ikuti langkah – langkah berikut ini :
- Saya berharap sobat
sudah menginstall software Visual Basic 6.0 pada PC / Laptop sobat, jika
memang belum menginstall software VB-nya, sobat dapat download dulu softwarenya
pada menu Free Download – Pilih Software – Setelah itu baru lah sobat
install softwarenya.
- Untuk langkah
pertama marilah buka program VB sobat yang sudah terinstall, kemudian akan
muncul kotak dialog maka pilihlah “Standard EXE” lalu
Open. Seperti pada gambar berikut :
(NIHIL)
- Setelah sobat pilih open maka akan muncul tampilan utama lembar kerja visual basic 6.0. Seperti pada gambar berikut:
- Nah seperti itulah
tampilan awal mula dari membuat sebuah program, kita dapat merancang
program yang ingin kita buat di lembar kerja itu. Okeh tidak usah terlalu
berlama-lama untuk penjelasannya, mari langsung saja kita buat lampu lalu
lintas untuk menggantikan lampu lalu lintas yang sudah rusak pada jalanan
ibukota…hehe
- Pertama-tama kita
ambil komponen “Frame” yang berada di sebelah kiri sobat
atau yang dinamakan dengan “ToolBox”. Lihat contoh pada
gambar berikut ini :
- Sudah ??? Jika sudah, sekarang sobat atur lebar dan tingginya form1 sesuai dengan keinginan sobat, karena kita ingin membuat desain tampilannya. Sebagai contoh lihat gambar berikut :
- Oia sobat bisa hapus tulisan “Frame 1” pada komponen frame tersebut, yaitu dengan cara : klik dulu komponen Frame-nya kemudian sobat beralih lah ke sebelah kanan sobat, disana terdapat menu “Properties” lalu carilah nama “Caption” dan hapuslah tulisan “Frame1”. Seperti pada gambar berikut :
- Setelah sobat
mengatur lebar dan tingginnya form, langkah selanjutnya adalah mari kita
ambil kembali komponen yang berada pada toolbox yaitu komponen “Shape”. Seperti
gambar berikut :
- Kemudian sobat
letakkan komponen “Shape” tersebut di dalam kotak “Frame”. Seperti
pada gambar berikut :
- Loh koq kotak ??? Ya
tenang aja, itu dapat kita ganti menjadi bentuk apapun, mari sekarang kita
ganti dengan bentuk lingkaran. Sobat klik dulu bentuk kotak-nya kemudian
kita beralih ke “Properties”, oia perlu sobat ketahui bahwa
pada menu properties ini lah kita dapat mensetting setiap komponen yang
kita gunakan apapun komponennya, sobat bisa coba otak-atik pada menu
propertiesnya untuk komponen lainnya. Okeh sekarang kita lanjut ke materi,
pada menu properties sobat cari yang namanya “Shape” dan
rubah menjadi “3 – Circle”. Seperti pada gambar berikut :
- Lalu lihat hasil
pada bentuk kotak sebelumnya, maka akan berubah bentuk menjadi sebuah
lingkaran, lalu sobat ganti bentuk kotak lainnya sehingga semuanya menjadi
bentuk lingkaran dengan cara yang sama. Lihat hasilnya pada gambar berikut
:
- Selesai sudah kita
membuat sebuah lampu, tenang perjalanan kita masih panjang. Sekarang coba
kita tambahkan tiang penyangga agar lampu itu dapat berdiri kokoh di
jalanan…hehehe. Begini caranya :
- Sobat ambil kembali
komponen “Shape” yang berada di menu Toolbox dan buatlah
sebuah tiang panjang lalu letakkan pas dibawah lampu tersebut. Sebagai
contoh lihat pada gambar berikut :
- Nah seperti itulah
gambaran dalam pembuatan lampu lalu lintas, sekarang tinggal kita membuat
bagaimana agar lampu lalu lintas tersebut dapat berfungsi layaknya lampu
lalu lintas yang berada di jalanan… Lanjutttt....
- Sekarang mari kita
beri warna pada lampunya, sobat klik bentuk lingkaran yang paling atas
kemudian sobat beralih ke “Properties”, kemudian sobat cari
yang namanya “BackStyle” lalu rubah menjadi “1 -
Opaque”. Nah sekarang kita beri lingkaran tersebut warna merah
yaitu dengan cara : sobat cari yang namanya “BackColor” dan
“BorderColor” rubahlah menjadi warna merah. “BackColor”
menandakan sebagai warna untuk background dan “BorderColor”menandakan
sebagai pinggiran dari lingkaran tersebut. Sudahkah ??? Jika sudah maka
lingkaran tersebut menjadi warna merah semua, betul tidak ???. Hasilnya
seperti pada gambar berikut :
- Langkah berikutnya
sobat rubah lingkaran yang lainnya sesuai dengan warna pada lampu lalu
lintas. Seperti pada gambar berikut :
- Oia satu lagi, agar
terlihat seperti layaknya lampu lalu lintas yang berada di pinggir jalan
kita beri warna pada “Frame” dan “Tiangnya”, caranya gini
: klik pada framenya kemudian beralih ke properties cari yang
namanya “BackColor” lalu rubah warnanya menjadi warna
hitam begitu juga dengan tiangnya rubah menjadi warna hitam dengan cara
seperti merubah lingkaran. Seperti pada gambar berikut :
- Sekarang saatnya
kita memberikan sedikit script / coding pada lampu lalu lintas itu, agar
dapat digunakan sebagai lampu lalu lintas di pinggir jalan. Hehehe
- Sobat ambil
komponen “Timer” pada Toolbox cukup 3 timer aja. Gunanya
timer adalah sebagai waktu yang nantinya kita gunakan untuk menentukan
setiap berapa detik setiap lampu itu akan nyala. Lihat pada gambar berikut
:
- Lalu sobat klik 2x
pada “Timer1”, maka sobat akan di bawa ke jendela coding /
biasa disebut lembar kerja koding, seperti pada gambar berikut :
- Nah !!! disana sudah
ada tulisan :
Private Sub Timer1_Timer()
End Sub
- Itu artinya kita
harus memberikan sebuah perintah terhadap “Timer1”. Untuk
perintah di Timer1 berikan script / coding yang berwarna merah dibawah ini
:
Private Sub Timer1_Timer()
Shape3.Visible = False
Shape1.Visible = True
Timer2.Enabled = True
Timer1.Enabled = False
End Sub
- Kemudian sobat
kembali ke lembar kerja VB-nya dengan cara klik icon yang tertera pada
gambar dibawah ini :
- Kemudian lakukan
klik 2x kembali pada “Timer2”, dan berikan script /
coding seperti dibawah ini :
Private Sub Timer2_Timer()
Shape1.Visible = False
Shape2.Visible = True
Timer3.Enabled = True
Timer2.Enabled = False
End Sub
- Dan untuk script /
coding pada “Timer3” seperti dibawah ini :
Private Sub Timer3_Timer()
Shape2.Visible = False
Shape3.Visible = True
Timer1.Enabled = True
Timer3.Enabled = False
End Sub
- Sudah deh jadi lampu
lalu lintasnya. Eitttsss tapi kita lupa memberikan waktu setiap berapa
detik lampu itu akan menyala. Okeh saya berikan ketentuan waktunya,
untuk Lampu Warna Merahsaya berikan waktu untuk nyala
selama “8 Detik”. Untuk “Lampu Warna
Orange” saya berikan waktu nyala selama “2 detik”, dan
untuk “Lampu Warna Hijau” saya berikan waktu nyala
selama “6 Detik”, itu hanya ketentuan dari admin aja,
sobat bisa rubah sesuai kemauan sobat. Mau tau caranya ???
- Mari ikuti
langkah-langkahnya.
- Sobat klik pada “Timer1” kemudian
beralih ke “Properties”, nah disana terdapat nama“Interval”, Betul
Tidak ???. Lihat pada gambar :
- Disana tertulis
Interve bernilai “0”, maka sobat ganti Interval pada Timer1 dengan
nilai “6000”,itu artinya Timer1 akan memberikan waktu nyala
terhadap lampu hijau sebanyak “6 Detik”, Why ??? karena
pada script / codingnya “Timer1” diaktifkan oleh “Timer3”. Itu
artinya bahwa sebenarnya Lampu Warna Hijau di aktifkan oleh “Timer1”, Loh
koq begitu ??? Kenapa ga Timer3 aja untuk lampu hijau ??? Tips dari admin
bahwa membuat sebuah program itu memerlukan sebuah LOGIKA yang
cukup kuat agar menghasilkan kualitas program yang sangat baik. Setiap
manusia memiliki logika yang berbeda-beda dan sesuai dengan apa yang di
anggapnya mudah. Okeh sudah paham tips dari admin, sekarang kita lanjut ke
materi. Kemudian Interval padaTimer2 berikan
nilai “8000”, artinya Lampu Warna Merah akan menyala
selama “8 Detik”, dan kemudian untuk Interval pada Timer3 berikan
nilai “2000”, artinya untuk Lampu warna kuning akan
menyala selama “2 Detik”. Selesai untuk tahap pemberian
waktunya, sekarang sobat cek kembali pada Timer1, Timer2, dan
Timer3 pada “Properties-nya” disana terdapat
nama“Enabled”, sobat ganti untuk “Timer1 Menjadi True”,
“Timer2 Menjadi False” dan “Timer3 Menjadi False”, Agar Lebih Jelas lihat
ketentuannya seperti pada gambar berikut :
- Sekarang lampu lalu
lintas benar2 sudah jadi dan siap kita pasang di pinggir jalan, Loh Koq
Bisa ??? Iya Bisa, Bisa Stress Mikirin untuk keluarinnya… hehehe
- Sobat sobat jalankan
programnya dengan menekan tombol “F5” atau sobat klik
tombol play yang berada di atas, Lihat hasilnya bagus bukan, hehehe…
- Sobat bisa
kembangkan sendiri sehingga hasilnya seperti pada gambar berikut ini :
Membuat Jam Digital Sederhana
Menggunakan Microcontroller P16F84a
Pada kesempatan ini saya akan mengajak anda membuat jam
digital dengan menggunakan microcontroller. Kita akan menggunakan
Microcontroller keluarga PIC buatan Microchip yang merupakan salah satu
Microcontroller yang paling populer di dunia. Dalam hal ini kita akan
menggunakan Microcontroller type P16f84a.
Komputer Termurah Sedunia
Saya senang menyebut Microcontroler sebagai komputer
termurah sedunia. Bayangkan dengan uang puluhan ribu, anda sudah bisa
membeli Microcontroller (baca komputer). Tidak perlu uang jutaan rupiah untuk
bisa membeli sebuah "komputer" dalam wujud Microcontroller (MCU)!!
Kalau kita ingin peralatan yang cerdas, maka peralatan itu
perlu dikendalikan oleh komputer. Contohnya mesin cuci otomatis. Kita tinggal
memasukkan sabun, dan pakaian kotor, sesudah itu kita dapat mengerjakan
pekerjaan lain, sambil membiarkan mesin cuci mengatur dirinya sendiri. Hasilnya
pakaian yang sudah bersih dan kering tanpa campur tangan kita. Mengendalikan
mesin cuci sebenarnya tidaklah rumit-rumit. Jadi kita tidak perlu komputer yang
berkemampuan tinggi. Dalam hal ini komputer "kemampuan rendah" atau
MCU sudah memadai. MCU ini merupakan chip tunggal, tetapi sudah berwujud
"komputer yang lengkap". Karena itu saya senang menyebut MCU sebagai
komputer termurah sedunia.
Dengan adanya MCU kita bisa membuat
alat yang cerdas dengan harga murah. Ini sangat menyenangkan bagi para
penggemar elektronika. Kita tidak perlu mengeluarkan uang terlalu banyak untuk
mencobanya. MCU dapat kita program untuk mengendalikan apa saja mulai dari hal
yang remeh sampai yang canggih: Timer untuk merebus telur, Pengisi baterai otomatis,
Penala gitar, sampai robot. Pendeknya dengan microcontroller kita bisa membuat
apa saja termasuk asal jangan membuat peluru kendali.
Sebagai perkenalan saya mengajak anda membuat jam digital.
Saya tidak membuat proyek "hello world" semacam lampu kelap-kelip
sebagai perkenalan. Menurut saya lampu kelap-kelip kurang menarik. Lagi pula
lampu kelap-kelip sebenarnya bisa diwujudkan dengan dua buah transistor saja,
dibanding harus diwujudkan dengan MCU yang terdiri dari puluhan-ribu
transistor!
Mari kita mulai
Sebagaimana halnya komputer, maka
agar MCU dapat berjalan sebagaimana mestinya harus diprogram terlebih dahulu.
Salah satu bahasa pemprograman yang dapat anda gunakan adalah bahasa :
Assembly. Kita tidak harus membeli software untuk menulis program dalam bahasa
assembly. Software dapat diperoleh secara gratis yakni : MPLAB IDE. Ini adalah
program yang dikeluarkan oleh pembuat PIC (Microchip) sendiri . Program ini
sangat baik dan gratis! Memprogram dengan bahasa Assembly adalah pekerjaan yang
cukup rumit, tetapi dibuat menyenangkan dengan MPLAB IDE. Itulah kehebatan
MPLAB IDE. Seharusnya anda membayar mahal untuk program yang sangat baik
seperti ini! Saya memiliki MPLAB IDE versi 8.84. Jadi tidak ada alasan untuk
tidak memilikinya. silahkan down load versi terbaru disini : www.microchip.com
Membuat program dengan bahasa Assembly umumnya tidak disukai
karena cukup rumit. Sebagai penggantinya kita dapat memprogram dengan bahasa
tingkat tinggi (high-level language) yang jauh lebih mudah dimengerti seperti:
C, Pascal atau BASIC. MPLAB IDE juga menyertakan compiler C. Sayangnya versi
gratisnya tidak dioptimasi (jalannya program MCU bakal lebih lambat) Sedangkan
untuk versi profesionalnya harus bayar!!
Ada pihak ketiga yang menyediakan
compiler untuk C, Pascal atau BASIC, salah satu yang sangat baik adalah buatan
Mikroelektronika, silahkan lihat di www.mikroe.com. Versi gratisnya, tidak bisa menghasilkan
code lebih besar
dari 2K (2 ribu baris program). Tetapi ini
sudah memadai untuk pemula dengan proyek-proyek sederhana seperti jam digital.
Perlu anda ketahui MCU P16F84a hanya mempunyai memori program 1K. Jadi
keterbatasan versi gratis tidak berpengaruh untuk MCU yang akan kita gunakan.
Pembatasan menjadi berarti untuk MCU yang mempunyai memori program 4k atau
lebih. (ada MCU dengan program 512k!). Versi berbayarnya sekitar Rp 2 jutaan.
Silahkan down load Compiler yang anda inginkan pada situs di atas. Coba dulu
versi gratisnya (versi demo), kalau anda cocok, boleh upgrade menjadi berbayar!
Saya punya semuanya! Compiler C, Pascal maupun BASIC buatan Mikroelektronika.
Semuanya versi demo alias gratis :-).
Mana yang lebih baik dipilih? C, Pascal atau BASIC ?? Terserah
anda! Anda boleh memilih yang paling populer: Bahasa C. Bila anda fans berat
Pascal (atau Delphi), pilihlah Pascal. Kalau anda menguasai BASIC, pilihlah!
Bila anda tidak menguasai semuanya....? Jangan panik, banyak buku-buku yang
membahas mengenai bahasa-bahasa pemrograman tersebut.
Sekalipun lebih mudah digunakan
dibanding assembly, bahasa tingkat tinggi mempunyai kelemahan. Code yang
dihasilkan biasanya lebih banyak, tentu saja jalannya program menjadi lebih
lambat. Jadi, sebaiknya
anda mahir menggunakan bahasaassembly juga.
Compiler nantinya akan menghasilkan
bahasa mesin (dalam bentuk file berformat hex) yang harus dimasukkan ke dalam
MCU. Diperlukan adanya program dan rangkaian elektronika khusus untuk
memindahkan file berformat hex di komputer kita ke dalam MCU. MPLAB IDE telah
menyediakan program untuk maksud tersebut. Tapi saya tidak suka karena
rangkaiannya harus beli (baca: mahal). Saya menggunakan program WINPIC yang
rangkaian elektronikanya (down loader) bisa dirakit sendiri (skema disertakan
dalam program). Rangkaian elektronika dihubungkan dengan komputer melalui
Serial Port, Pararel Port atau USB. Berminat dengan dengan WINPIC? silahkan
download: http://www.qsl.net/dl4yhf/winpicpr.html
Sebagai ringkasan dari apa yang telah kita bahas, sebelum
memulai proyek dengan MCU anda harus mempunyai:
1.
Compiler untuk assembly, C, Pascal
atau BASIC sebagai software untuk memprogram.
2.
Rangkaian elektronika (down loader)
beserta program yang bersesuaian untuk memindahkan program yang ada pada
komputer kita, ke dalam MCU.
Ingat keperluan di atas bukan untuk
proyek jam digital saja, tapi berguna juga untuk proyek-proyek MCU jenis PIC
lainnya kelak. Oh ya, hampir lupa! Kita perlu juga data sheet dari MCU P16F84a ini .
Bagaimana Cara Kerjanya
Cara
kerja ditinjau dari rangkaian:
Skema
rangkaian, clik gambar untuk memperbesar
Jam digital ini menggunakan LED 7-segment common anode
(jangan sampai tertukar dengan common catode). Ada 4 buah 7-segment,
masing-masing menunjukkan satuan menit, puluhan menit, satuan jam dan puluhan
jam. Keempat 7-segment tadi dinyalakan dengan metoda multiplex. Dinyalakan
bergantian setiap 5ms (0.005 detik). Setiap saat hanya ada 1 buah 7-segment
yang menyala, segment lainya padam. Berturut-turut dinyalakan 7-segment untuk
satuan menit, puluhan menit, satuan jam dan puluhan jam, demikian seterusnya. Mata
kita tidak dapat mengikuti pergantian yang demikian cepat sehingga seolah-olah
semua 7-segment menyala bersamaan. Metoda Multiplex digunakan karena, MCU ini
mempunyai jumlah port yang terbatas.
Transistor, Q1, Q2, Q2 dan Q4 bertugas untuk menyalakan (memadamkan)
7-Segment. Transistor menghantar ketika basis transistor tersebut dibuat rendah
melalui R8, R9, R10 dan R11. Transistor yang menghantar (menyumbat) membuat
7-segment menyala (padam).
Jam ini juga menyediakan battery cadangan sehingga bila
sewaktu-waktu aliran listrik terputus, jam ini tetap berjalan. Bila battery
cadangan tidak terpasang dan aliran listrik terputus, maka jam ini harus
dicocokkan kembali, tentu hal ini merepotkan. Untuk menghemat battery,
7-segment dibuat padam ketika battery cadangan aktif. Battery cadangannya
adalah adalah "Coin" (type Lithium CR2023) 3 Volt, agar cukup kecil
dipasang di PCB.
Rangkaian battery cadangan adalah dioda D1, D2 dan D3 dan
C1. Dioda D2 untuk mencegah arus catu masuk kedalam battery. Dioda D1 berguna
untuk mencegah aliran listrik dari battery masuk ke dalam 7-segment. D3 berguna
untuk kompensasi kehilangan tegangan akibat D1 dan D2. C1 berguna agar tegangan
tidak jatuh secara tiba tiba (akan mengacaukan kerja MCU), ketika battery
cadangan aktif. Dengan adanya C1, tegangan akan turun secara berangsur-angsur.
Perhatikan D1 dan D2 bukan dioda silikon biasa, melainkan
dioda Schottky type 1N 5817. Sekalipun dioda ini sedikit lebih mahal, tapi
jangan diganti dengan dioda silicon biasa semacam 1N4001. Alasannya adalah
tegangan minimum agar MCU P16F84a dapat bekerja adalah 2Volt. Tegangan baterai
3V dikurangi dengan kehilangan tegangan pada dioda silicon 0.6 Volt menjadi 2.4
Volt. Memang tegangan 2.4 Volt ini sudah cukup untuk MCU, namun ketahuilah
tegangan battery semakin lama semakin turun ketika digunakan. Battery menjadi
tidak berfungsi ketika tegangan sudah terlampau rendah. Kehilangan tegangan
dioda Schottky hanya 0.4 Volt. Umur pakai battery akan lebih lama kalau kita
menggunakan dioda Schottky.
Kalau dioda Schottky susah didapatkan di kota anda, boleh
diganti dioda 1N4001 dan gunakan battery dengan tegangan lebih tinggi. Boleh
gunakan 3 buah battery seng-karbon yang dipasang seri, tegangan total 3x1.5
Volt = 4.5 Volt. Hanya saja, battery ini harus dipasang di luar PCB. Pada
prinsipnya tegangan battery harus lebih kecil dari tegangan catu 5 Volt, dengan
demikian battery tidak aktif ketika tegangan catu bekerja.
Jam digital ini dilengkapi pula dengan saklar tekan s1 dan
s2 masing-masing berguna untuk mencocokkan menit dan untuk mencocokkan jam.
Cara
kerja ditinjau dari program :
Dalam menjelaskan program untuk jam digital ini, saya akan
mengangap anda adalah programmer C. Karena itu, saya hanya memberi sedikit
catatan tentang program C tersebut.
Bagian yang paling penting dari program ini adalah bagaimana
membuat bilangan menit bertambah setiap satu menit terlampaui. Hal ini
terselenggara dengan mekanisme interupsi yang terjadi setiap kali pencacah
(counter) timer over flow. Timer ini tertanam di dalam MCU. Timer over flow
setiap 0x10000 = 65536 siklus mesin. Ketika terjadi interupsi (timer over flow)
fungsi interrupt dipanggil (baris 068). Variabel num menyimpan banyaknya siklus
dalam satu menit. Besarnya num selalu dikurangi dengan banyaknya siklus
overflow (baris 069). Satu menit terlampaui bila variabel num telah habis
(menjadi negatif). Ketika itu terjadi bilangan menit ditambahkan (baris 071 -
073)
Haruslah dihitung banyaknya siklus
mesin untuk 1 menit. Hitung dulu perioda siklus mesin. Periode siklus mesin adalah
4 kali periode clock. Karena dalam hal ini saya
menggunakan xtal 4Mhz maka :
siklus mesin = 4 x perioda clock
siklus mesin = 4 x 1/4Mhz
siklus mesin = 1µS.
siklus mesin = 4 x 1/4Mhz
siklus mesin = 1µS.
Jadi 1menit = 60 S = 60 juta µS = 60 juta siklus mesin.
Karena itu saya mendefinisikan konstanta menit sebagai 60 juta (baris 011).
Kalau anda menggunakan frekuensi kristal yang berlainan misalnya 8Mhz maka
menurut perhitungan di atas 1 siklus mesin adalah 0.5µS. Jadi 1 menit adalah
120 juta siklus (dengan x'tal 8Mhz). Karena itu bila anda menggunakan xtal 8Mhz
anda harus mengubah menit menjadi 120 juta (baris 011), karena bila tidak maka
jam anda akan ngawur.
Bagian program lain yang perlu dicatat adalah bagaimana
menterjemahkan pola-pola 7-segment menjadi angka-angka. Hal ini dimungkinkan
dengan menyimpan pola tersebut pada Array yang bernama LED (baris 019).
Sebelum MCU digunakan, terlebih
dahulu register tertentu haruslah diset agar berjalan sebagaimana kita
kehendaki. Register ini kita sebut Special Function Register (FSR). Saya tidak
perlu menjelaskan panjang lebar, silahkan lihat lembar data 16f84a. Baris 080 - 081 untuk memilih port
mana yang digunakan untuk output (7-segment dan basis transistor) dan port mana
yang digunakan sebagai input (tombol tekan). Baris 086-087 untuk mengaktifkan
timer dan memampukan interrupt timer.
Baris 094 untuk memeriksa apakah tombol menit ditekan
(polling). Bila ditekan, bilangan menit akan ditambahkan. Sedang baris 096
untuk memeriksa tombol jam. Bila ditekan bilangan jam akan ditambahkan. Sebelum
polling, program akan memanggil fungsi display sebanyak 25 kali dalam loop for
(baris 091). Fungsi display untuk mengatur multiplex. Karena sebuah 7-segment
dinyalakan selama 5 ms dan ada 4 buah 7-segment, maka waktu yang diperlukan
untuk memanggil display sebanyak 25 kali adalah = 25x4x5ms = 500ms = setengah
detik. Jadi bila anda menekan tombol, bilangan (menit atau jam) akan
ditambahkan setiap setengah detik sekali.
Selanjutnya silahkan periksa bagian lain dari Program dengan
bahasa C ini. Anda sebagai programer C tentu dapat memahaminya dengan baik.
001
/* Program jam digital untuk MCU p16f84a
002
Digital clock program for p16f84a MCU
003
oleh : Hartono , www.gemar-elektronika.com
004
April 2012
005
Compiler Micro C for PIC
006
by Mikroelektronika, www.mikroe.com
007
please don't delete this comment
008
jangan hapus komemtar ini */
009
010 long int num;
011 const long int menit = 60000000;
//banyaknya siklus dalam 1 menit (xtal 4Mhz)
012 const long int timer_ovr =
0x00010000; //banyaknya siklus timer
013 char cacah;
014 char h0 = 0; //satuan jam
015 char h1 = 0; //puluhan jam
016 char m0 = 0; //satuan menit
017 char m1 = 0; //puluhan menit
018 char over_flow;
019 const char led[10] = {0x08,
0x3e, 0x11, 0x14, 0x26, 0x44, 0x40, 0x1e, 0x00, 0x04};
020
021 //rutin untuk menunda waktu
sebesar 5ms
022 void tunda(void){
023 Delay_ms(5);
024 }
025
026
//rutin untuk menambah menit
027 void inc_minute(void){
028
m0++ ; over_flow = 0;
029
if (m0 == 10){
030 m0 = 0;
031 m1++ ;
032 if (m1 == 6)
033 {m1 = 0; over_flow = 1;}
034
}
035 }
036
037
//rutin untuk menambah jam
038
void inc_hour(void){
039 h0++ ;
040 if (h0==10){h0 = 0; h1++ ;}
041 if (h0==4 && h1 == 2){h0 = 0; h1 =
0;}
042
}
043
044
//rutin untuk multiplex 7 segment
045
void display(void){
046 PORTA = 0b11111111;
047 PORTB = led[m0];
048 PORTA = 0b11111110;
049 tunda();
050
051 PORTA = 0b11111111;
052 PORTB = led[m1];
053 PORTA = 0b11111101;
054 tunda();
055
056 PORTA = 0b11111111;
057 PORTB = led[h0];
058 PORTA = 0b11111011;
059 tunda();
060
061 PORTA = 0b11111111;
062 PORTB = led[h1];
063 PORTA = 0b11110111;
064 tunda();
065
}
066
067
// rutin layanan interrupt
068
void interrupt(void){
069 INTCON.T0IF = 0;
069 num -= timer_ovr;
070 if (num < 0){
071 num += menit;
072 inc_minute();
073 if (over_flow) inc_hour();
074 }
075
}
076
077
/* -----------ini adalah program utama---------------------- */
078
void main(void) {
079 //mengatur arah data pada port
080 TRISB = 0b10000000;
081 TRISA = 0b10000;
082 //mengatur timer0
083 OPTION_REG = 0b11010111;
084
085 //memampukan interrupt timer
086 INTCON.GIE = 1;
087 INTCON.T0IE = 1;
088
089 num = menit;
090 while (1){
091 for (cacah = 0; cacah < 25; cacah++){
092 display();
093 }
094 if (PORTB.RB7 == 0) //periksa apakah tombol menit ditekan
095 {inc_minute(); num = menit;}
096 if (PORTA.RA4 == 0) //periksa apalah
tombol jam ditekan
097 {inc_hour(); num = menit;}
098 }
099 }
Saya juga membuat program serupa
dengan bahasa Pascal dan Assembly. Saya telah mendokumentasikan program jam digital
ini dalam bahasa C, Pascal, Assembly dan hex file (dikompilasi dari assembly) silahkan down-load.
Saya sengaja membuat percobaan dengan membandingkan hasil
kompilasi dengan compiler buatan Mikroelektronika. Ternyata dengan bahasa
Assembly menghasilkan 154 baris program, bahasa C menghasilkan 328 baris dan
bahasa Pascal menghasilkan 331 baris. Terbukti bahasa Assembly jauh lebih
efisien!!
Konstruksi
Terlebih dahulu siapkan chip MCU
P16F84a yang telah diprogram. Caranya kompilasi program dalam bahasa C atau
Pascal atau Assembly dengan compiller yang besesuaian dengan bahasa yang anda
pilih. Silahkan down-load disini.
Hasil kompilasi berupa file bahasa mesin dengan format hex.
Kalau anda tidak mau repot, saya juga sudah melampirkan file hex yang
dikompilasi dari bahasa Assembly (langsung dapat digunakan).
Download file berformat hex kedalam P16F84a MCU. Misalnya dengan
program Winpic. Pilih confiq: part=P16F84A, Oscillator=XT(crystal), Code
Protection =off, Power-up timer=enabled, Watchdog enable=disabled.
Untuk memudahkan komponen elektronika dirangkai dalam sebuah
PCB. Pasanglah Holder untuk battery "Coin". Dan juga jangan lupa
untuk memasang soket IC 18 Pin untuk MCU. Pemasangan soket IC dimaksudkan agar
MCU mudah dilepas dan diprogram ulang apabila ada kesalahan atau anda ingin
mengubah program. Untuk diketahui, kata pabriknya, MCU ini dapat diprogram
sampai ribuan kali!!
Tata letak PCB dapat anda lihat pada gambar berikut ini :
PCB
Jam digital dengan P16F84A MCU, click gambar untuk memperbesar
Daftar Belanja (semua resistor 0.25 watt)
|
|
Resistor
|
|
R1-R7 (7 buah)
|
330 Ohm
|
R8-R11 (4 buah)
|
4k7 Ohm
|
R12-R14 (3 buah)
|
10k Ohm
|
Capasitor
|
|
C1
|
100uF, 16Volt elektrolit
|
C2
|
100nF Ceramic
|
C3-C4 (2buah)
|
33pF Ceramic
|
LED display
|
|
7 Segment (4 buah)
|
Common Anoda
|
Dioda
|
|
D1 - D2 (2buah)
|
Schottky 1N5817
|
D3
|
1N4001
|
Transistor
|
|
Q1-Q4 (4buah)
|
BC 557 atau PNP lainnya
|
MCU
|
|
Microcontroller
|
P16F84a
|
Lain - Lain
|
|
X'tal
|
4 Mhz
|
Socket IC
|
18 pin DIL
|
Battery Holder
|
CR 2023
|
Battery
|
CR 2023 Lithium 3 Volt
|
s1- s2 (dua buah)
|
Push Button (saklar tekan)
|
DC plug jantan + betina
|
untuk koneksi dengan catu daya
|
Kabel Kaku untuk jumper
|
secukupnya
|
kabel untuk catu daya
|
secukupnya
|
Komponen harus dipasang sependek mungkin. Saya tidak
memasangkan kapasitor elektrolit C1 dalam posisi "berdiri" melainkan
dalam posisi tidur, agar tidak terlalu tinggi. Dengan memasang komponen
sependek mungkin nantinya akan memudahkan PCB dipasang pada panel tanpa
"terganjal" oleh komponen. Perhatikan pula ada 4 buah jumper pada
PCB.
Sebaiknya jam digital ini dipasang dalam box atau lukisan
agar indah dipandang. Selanjutnya jam digital ini perlu Catu Daya dengan
tegangan 5 Volt stabil. Bila anda belum mempunyai catu daya, maka anda dapat
merakitnya sendiri! Artikel tentang catu daya yang distabilkan akan segera
menyusul. Selamat bekerja. Semoga sukses!!
Intinya : Ketekunan dan kedisplinan agar usaha kita bisa lancar
- Selamat Mencobaba -
Baca Juga :
- Cara Membuat Data Browse Visual Basic
- Cara Membuat Login Program Visual Basic
Baca Juga :
- Cara Membuat Data Browse Visual Basic
- Cara Membuat Login Program Visual Basic