December 5th, 2011
No comments
Pendahuluan
Pada tulisan kali ini saya akan memberikan salah satu contoh pemakaian mikrokontroler PIC16F84 untuk digunakan sebagai pemilih ( selektor ) masukan suara. Jika anda pernah membuat amplifier misalnya, dan memiliki dua atau lebih sumber suara misalnya dari sebuah CD Player, Tape dan Tuner. Maka kita dapat memilih suara yang akan dikuatkan ( amplifikasi ) apakah dari CD Player, Tape maupun Tuner. Hal ini secara sederhana dapat dilakukan dengan menggunakan sebuah saklar.Nah kali ini fungsi saklar sederhana tersebut akan digantikan dengan menggunakan saklar dari sebuah relay yang dikontrol oleh mikrokontroler. Agar lebih menarik, maka akan diberikan juga tampilan menggunakan sebuah LCD ( Liquid Crystal Display ). Dalam hal ini LCD akan dapat menampilkan tulisan fungsi yang sedang dipilih seperti ‘TAPE’ atau ‘TUNER’. Ataupun tulisan apa saja sesuai dengan keinginan anda.
Cara Kerja Alat
Cara kerja alat adalah sangat sederhana saja. Pada dasarnya hanya mengontrol kerja relay berdasarkan tombol mana yang ditekan. Pada prototype yang saya buat, baru menggunakan 2 buah relay ( dapat dikembangkan dikemudian hari ). Oleh karena itu kita akan menganggap bahwa masukan suara ada 2 jenis yaitu yang berasal dari TAPE dan yang berasal dari TUNER.
Berikut akan diberikan diagram rancangan alat untuk memilih sumber suara ini secara sederhana.

Gambar 1 Diagram Alat
Dari gambar diatas terlihat bahwa ada 2 sumber suara
yaitu dari TAPE dan dari TUNER. Pemilihan sumber suara tersebut akan
ditentukan oleh tombol mana yang ditekan. Jika yang ditekan adalah
tombol TAPE, maka sumber suara yang terpilih adalah TAPE dan Relay1 akan
aktif ( terhubung dengan amplifier ) dan pada LCD akan tertulis tulisan
‘TAPE’. Jika tombol TUNER ditekan, maka sumber suara dari TUNER akan
terhubung ke amplifier melalui Relay 2 dan pada LCD akan tertulis
tulisan ‘TUNER’.Rangkaian Programmer PIC16F84
Karena yang akan kita pakai sebagai pengontrol utama adalah sebuah mikrokontroler PIC16F84, maka ada baiknya apabila kita singgung terlebih dahulu cara memprogram mikrokontroler tersebut. Jika anda telah membuat rangkaian PIC to Breadboard, maka dapat dipakai juga untuk memprogram mikrokontroler PIC16F84.
Ataupun anda dapat membuat sebuah programmer sederhana untuk mikrokontroler ini. Ini adalah salah satu kelebihan mikrokontroler ini yang dapat diprogram dengan menggunakan alat yang sederhana saja. Adapun rangkaian untuk memprogram mikrokontroler ini adalah :

Gambar 2 Rangkaian Programmer PIC16F84
Rangkaian diatas merupkan rangkaian untuk memprogram
mikrokontroler PIC16F84. Adapun pada bagian kiri adalah terminal yang
dihubungkan dengan konektor DB-9 (Female) yang nantinya dihubungkan
dengan serial port pada komputer ( COM1 atau COM2 ). Ingat bahwa
nama-nama pin pada DB-9 dengan DB-25 letaknya tidak sama. Apabila pada
komputer anda yang tersisa adalah yang menggunakan DB-25 maka anda dapat
membeli alat konverter DB-25 ke DB-9 yang banyak dijual di toko
komputer.Adapun Software yang digunakan untuk memprogram mikrokontroler ini masih sama dengan yang digunakan pada PIC to Breadboard yaitu Picprog. Berikut diberikan contoh gambar programmer mikrokontroler PIC16F84 yang sudah dibuat penulis.

Gambar 3 Programmer PIC16F84
Liquid Crystal Display ( LCD )LCD telah lama dipakai sebagai penampil untuk alat-alat elektronika. Dengan menggunakan LCD maka kesan alat akan menjadi lebih professional. Bandingkan jika hanya menggunakan penampil tujuh segmen saja, mungkin masih terlihat sederhana. Namun menggunakan LCD tidaklah semudah menggunakan penampil tujuh segmen.

Gambar 4 Contoh LCD 2 baris
Hal ini dikarenakan pada LCD juga terdapat kontroler
terintegrasi. Nah tugas kita adalah berkomunikasi dengan kontroler yang
telah ditanam pada LCD tersebut agar LCD mau menampilkan tulisan
seperti yang kita kehendaki. Secara umum kontroler yang dipakai adalah
buatan Hitachi HD44780, yang mana walaupun banyak pabrikan yang membuat
LCD ini namun karena sama-sama menggunakan kontroler yang sama
menjadikannya saling kompatibel.Pena-pena LCD
LCD memiliki pena-pena sebanyak 14 sampai 16 pin. Pena-pena tersebut memiliki kegunaan masing-masing. Pengantar-mukaan dapat menggunakan sistim 8 bit maupun menggunakan sistim 4 bit. Jika menggunakan sistim 4 bit, maka kita akan menghemat 4 port mikrokontroler. Adapun kegunaan masing-masing pena adalah sebagai berikut.
Tabel 1 Nama dan Kegunaan Pena pada LCD
Pena Nama Pena Fungsi1 Gnd Ground untuk LCD
2 Vcc +5 Volt untuk LCD
3 Vref Teg. Pengatur brightness
4 RS Bit pemilih instruksi / data
5 R/W Bit pemilih Read / Write
6 E Bit enable
7 D0 Data Bit 0
8 D1 Data Bit 1
9 D2 Data Bit 2
10 D3 Data Bit 3
11 D4 Data Bit 4
12 D5 Data Bit 5
13 D6 Data Bit 6
14 D7 Data Bit 7
15 Back Light ( + ) – optional
16 Back Light ( – ) – optional
Pena no 15 dan 16 hanya ada pada LCD yang dilengkapi dengan Back Light ( lampu belakang ) sehingga LCD dapat terbaca pada kondisi gelap. Beberapa LCD tidak terdapat fasilitas back light tersebut, sehingga pena no 15 dan 16 tidak ada.
Prinsip Menggunakan LCD
Untuk dapat menggunakan LCD, maka harus tahu prinsip menggunakan LCD tersebut. Apabila anda membeli LCD yang baru jangan lupa untuk meminta data sheet-nya, karena pada data sheet tersebut terdapat keterangan-keterangan yang berguna bagaimana cara menggunakan LCD tersebut. Berikut akan diberikan prinsip penggunaan LCD secara umum.
Modul LCD memiliki 3 jalur kontrol yang bernama RS, R/W dan E. RS digunakan untuk memberitahukan kepada LCD apakah data yang diberikan adalah kata-instruksi ( instruction word) atau kata-data ( data word ). Jika akan mengirim instruksi maka RS harus dibuat 0, sedangkan untuk mengirimkan data maka RS harus berlogika 1.
Logika pada RS
Instruksi 0
Data 1
Sementara jalur R/W digunakan untuk memilih operasi Read atau
Write. Read artinya membaca data dari LCD sedangkan Write artinya
menuliskan data ke LCD. Dalam kasus ini kita hanya akan menuliskan data
ke LCD, sehingga jalur ini dapat dibuat rendah ( logika 0 ) terus.
Terakhir adalah jalur E ( Enable ), dimana jika dia berlogika tinggi ( 1
) maka proses penulisan ke LCD akan diaktifkan.Kata instruksi yang dikirimkan ke LCD akan memberitahukan apa yang harus dilakukan oleh kontroler LCD. Berikut diberikan beberapa kata-instruksi untuk mengatur tampilan pada LCD.
Tabel 2 Kata Instruksi
Operasi Kata Instruksi KegunaanSet Fungsi 0×38 Mode 8-bit, 5×7 pada saat inisialisasi saja
Display On/Off 0x0C Display On tanpa kursor
0x0F Display On kursor kedip di kiri
Hapus Display 0×01 Hapus display ( blank = kosong )
Entry Mode Set 0×06 Mode penaikan ( Increment )
Alamat Karakter
Sebelum menuliskan sebuah tulisan ke LCD, maka kita harus tahu alamat karakter pada display LCD. Berikut alamat karakter pada LCD secara umum.

- LCD 1 baris

b. LCD 2 baris
Jadi pada LCD 1 baris, alamat awal adalah 0×80 dan berisi 8 karakter saja sedangkan karakter ke 9 memiliki alamat 0xC0 dan seterusnya. Sedangkan pada LCD 2 baris alamat awal pada baris pertama adalah 0×80 sedangkan alamat awal pada baris ke dua adalah 0xC0.
Rangkaian Lengkap
Rangkaian lengkap berisi hubungan antara mikrokontroler PIC16F84 dengan LCD dan sistim relay. Pada proyek saat ini hanya akan menggunakan 2 buah relay saja walaupun dapat ditingkatkan menjadi 3 relay untuk 3 sumber suara. Adapun port-port yang dipilih untuk berhubugan dengan saklar dan relay adalah sebagai berikut.
Bagian Masukan :
Tombol TAPE – RA0
Tombol TUNER – RA3
Bagian Keluaran :
Relay TAPE – RB0
Relay TUNER – RB1
Rangkaian akan diberikan secara terpisah menjadi 3 bagian yaitu : sistim minimum mikrokontroler PIC16F84, bagian LCD dan bagian relay dan switch.
- Sistim minimum mikrokontroler PIC16F84

Gambar 5 Sistim minimum PIC16F84
Gambar 6 Foto sistim minimum PIC16F84
- Rangkaian bagian LCD

1 : GND 7 : - 13 : RB6
2 : +5V 8 : - 14 : RB7
3 : Vref 9 : -
4 : RA2 10 : -
5 : GND 11 : RB4
6 : RA1 12 : RB5
Hubungan antara LCD dengan mikrokontroler PIC16F84 hanya menggunakan 6 jalur I/O saja yaitu RA2 , RA1 dan RB4..RB7. Hal ini karena menggunakan sistim 4-bit sehingga hanya RB4 sampai RB7 saja yang dipakai sebagai jalur data ( 4-bit ). Sementara RA2 dihubungkan dengan RS dan RA1 dihubungkan dengan E ( Enable ). Pena R/W dihubungkan terus dengan ground.
- Rangkaian Relay

Gambar 7 Rangkaian Relay
Terakhir diberikan foto alat secara keseluruhan.
Gambar 8 Alat secara keseluruhan
Taman Aster Blok G2 No.35
Cikarang Barat Bekasi 17520
Email : moh_ibnumalik@yahoo.com
YM : moh_ibnumalik
HP : 081 293 295 12
Program
Berikut adalah program yang harus dimasukkan kedalam mikrokontroler PIC16F84.
;=======FUNC.ASM==============================================
list p=16c84
radix hex
;————————————————————
status equ 0×03
porta equ 0×05
portb equ 0×06
count1 equ 0x0c
count2 equ 0x0d
bits equ 0x0e
trisa equ 0×85
trisb equ 0×86
;————————————————————
; persamaan bit
rp0 equ 5
;————————————————————
org 0×000
;
mulai
bsf status,rp0 ; ke bank 1
movlw b’00000000′ ;RB sebagai outputs
movwf trisb
movlw b’00011001′ ;RA0in,RA1out,RA2out,RA3in,RA4in
movwf trisa
bcf status,rp0 ; kembali ke bank 0
movlw b’00000000′ ;semua keluaran rendah
movwf portb
movlw b’00011001′ ;inisialisasi porta
movwf porta
call del_5 ;beri waktu biar LCD berinisialisasi sendiri
call initlcd ;inisialisasi LCD
call function ; tampilkan tulisan ‘Function :’
cek_tombol ; cek penekanan tombol
btfss porta,0 ; tombol RA0 ditekan?
call tape ; ya,tampilkan tulisan ‘TAPE’
btfss porta,3 ; tidak,tombol RA3 ditekan ?
call tuner ; ya,tampilkan tulisan ‘TUNER’
goto cek_tombol ; tidak, kembali ke cek tombol
;————————————————————
function
bcf porta,1 ;jalur E rendah
bcf porta,2 ;jalur RS rendah, set up untuk kontrol
call del_125 ;tunda 125 mikrodetik
movlw 0×80 ;control word = alamat awal 0×80 (baris pertama)
call send
bsf porta,2 ;RS=1, set up untuk data
call del_125 ;tunda 125 mikrodetik
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘F’
call send
movlw ‘u’
call send
movlw ‘n’
call send
movlw ‘c’
call send
movlw ‘t’
call send
movlw ‘i’
call send
movlw ‘o’
call send
movlw ‘n’
call send
movlw ‘:’
call send
return
;——————–
tape
bsf portb,0 ; aktifkan relay RB0 (biar input terhubung ke ;ampli)
bcf portb,1 ; lumpuhkan relayRB1
bcf porta,1
bcf porta,2
call del_125
movlw 0xC0 ;menulis pada baris ke dua
call send
bsf porta,2 ;RS=1, set up untuk data
call del_125 ;tunda 125 mikrodetik
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘T’
call send
movlw ‘A’
call send
movlw ‘P’
call send
movlw ‘E’
call send
movlw ‘ ‘
call send ; mencegah tertulisnya kata ‘TAPER’
return
tuner
bcf portb,0 ; lumpuhkan relay RB0
bsf portb,1 ; aktifkan relay RB1
bcf porta,1
bcf porta,2
call del_125
movlw 0xC0 ;menulis pada baris ke dua
call send
bsf porta,2 ;RS=1, set up untuk data
call del_125 ;tunda 125 microdetik
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘ ‘ ; beri spasi
call send
movlw ‘T’
call send
movlw ‘U’
call send
movlw ‘N’
call send
movlw ‘E’
call send
movlw ‘R’
call send
return
;————————————————————
initlcd
bcf porta,1 ;jalur E line rendah
bcf porta,2 ;jalur RS rendah , set up untuk control
call del_125 ;tunda 125 mikrodetik
movlw 0×38 ;8-bit, 5X7 mode
movwf bits ;0011 1000
call flipbit ;output 4 MS bits (LS tidak pakai)
call pulse ;kirim bits
call del_125 ;tunda 125 mikrodetik
movlw 0×28 ;4-bit, 5×7 mode
movwf bits ;0010 1000
call flipbit ;output 4 MS bits (LS tidak pakai)
call pulse ;masuk ke mode 4-bit
call del_125
movlw 0×28 ;4-bit, 5×7 mode
call send ;send kirim kedua nibble
movlw 0x0c ;display on tanpa kursor
call send
movlw 0×01 ;hapus display
call send
call del_5 ;tunda 5 milidetik
return
;————————————————————
send
movwf bits
call flipbit
call pulse
swapf bits,f ;tukar MS and LS nibble
call flipbit ;
call pulse
call del_125
return
;————————————————————
flipbit
bcf portb,4
btfsc bits,4
bsf portb,4
bcf portb,5
btfsc bits,5
bsf portb,5
bcf portb,6
btfsc bits,6
bsf portb,6
bcf portb,7
btfsc bits,7
bsf portb,7
return
;————————————————————
del_125
movlw 0x2a ;
movwf count1 ;
repeat decfsz count1,f
goto repeat
return ;
;————————————————————
del_5
movlw 0×29 ; 40 desimal
movwf count2 ; ke counter
delay
call del_125 ; tunda 125 mikrodetik
decfsz count2,f ; kerjakan 40 kali = 5 milidetik
goto delay
return ;counter 0, tundaan selesai
;————————————————————
pulse
bsf porta,1 ;pulse E line
nop ;delay
bcf porta,1
return
;————————————————————
end
.png)
.png)
.png)
.png)

0 comments:
Posting Komentar