Mencari USB Programmer Untuk Mikrokontroler Keluarga PICmicro

February 17th, 2012 No comments

Bagi anda  pemula yang akan mempelajari mikrokontroler keluarga PICmicro ( misalnya PIC16F84/A dll ) maka anda akan segera tahu bahwa dibutuhkan setidaknya 2 alat untuk mempelajari mikrokontroler tersebut ( atau mikrokontroler secara umum ).

Yang pertama adalah Programmer / Downloader Mikrokontroler. Programmer atau downloader ini digunakan untuk mengisikan program kedalam mikrokontroler. Alat ini dihubungkan dengan Komputer ( PC)  dan kemudian ada kabel yang dihubungkan dengan mikrokontroler target.

Selanjutnya file hex yang terdapat pada computer akan ditransfer / download ke dalam  Flash Memory pada mikrokontroler.  Di pasaran Indonesia saat ini terdapat Programmer/Downloader untuk keluarga mikrokontroler PICmicro dengan menggunakan antarmuka parallel port ( LPT) seperti terlihat pada gamba berikut.

DT-Proto-Programmer2

Gambar : PIC programmer dgn antarmuka Paralel dari Innovative Electronics

 

Salah satu kelemahan dari programmer/downloader dengan antarmuka parallel adalah harus menggunakan computer yang terdapat terminal LPT. Terminal ini terdapat pada komputer  rumah dan tidak terdapat pada computer jinjing ( notebook ).

Oleh sebab sekarang ini computer jinjing ( notebook ) sudah banyak dipakai oleh pelajar/mahasiswa, maka kebutuhan akan programmer/downloader yang menggunakan antarmuka USB semakin tinggi.

Oleh karena itu ijinkan saya memperkenalkan suatu programmer/downloader mikrokontroler keluarga PICmicro yang menggunakan antarmuka USB. Produk ini adalah iCP01  USB PIC Programmer.  Alat ini didisain cukup kompak dan praktis dan berukuran relative kecil.  Selain dapat dipakai untuk memprogram mikrokontroler dengan system ICSP ( In Circuit Serial Programmer ) juga disediakan ZIF Soket yang dapat dipakai untuk memprogram mikrokontroler secara parallel.

Programmer ini dapat dihubungkan dengan ZIF Soket seperti pada gambar di bawah ini.

Adapun fitur-fitur iCP01 USB PIC Programmer adalah sebagai berikut.

  1. Antarmuka ( interface ) menggunakan USB ( Universal Serial Bus )
  2. Tidak memerlukan catu daya pada perangkat programmer ini

Kami sudah mencoba menggunakan programmer ini yang saya pasang panda komputer Desktop dengan OS Windows XP dan tidak mengalami kesulitan yang berarti. Kami mencoba untuk memprogram mikrokontroler PIC dan bisa berhasil dengan baik.

Selanjutnya saya coba pasang pada komputer notebook (laptop ) dengan OS Windows Vista 7 . Hasilnya tanpa kesulitan software dapat dipasang dengan mudah. Akhirnya saya coba untuk membuat program untuk menuliskan tulisan di LCD 4 x 16.

Alat ini menggunakan software yang sama dipakai oleh PICKit2 yang dibuat oleh Microchip. Saat ini banyak orang yang mencari programmer mikrokontroler PICmicro dengan antarmuka USB. Oleh karena itu Product ini dapat dijadikan sebagai pilihan.  Untuk keterangan lengkap akan produk ini silakan kunjungi :

PICCIRCUIT.COM

 

Bagi anda yang ingin mengetahui lebih lanjut tentang programmer ini. Silakan download keterangannya di SINI

  • Share/Bookmark
Categories: PROGRAMMER Tags:

JAM DIGITAL DENGAN PIC16F84/A

December 19th, 2011 2 comments

Tujuan utama dalam penulisan ini adalah untuk menunjukkan bahwa mikrokontroler PIC16F84/A yang berukuran cukup kecil ini dapat digunakan untuk membuat peralatan yang berdaya guna dan kompleks. Pada rancangan jam digital ini dilengkapi juga dengan pengatur untuk mengeset jam dan menit.
Rancangan jam ini bukanlah rancangan penulis, dan rancangan ini didapat dari internet sekedar untuk memberikan contoh penggunaan mikrokontroler.

Dalam rancangan jam ini, kita memerlukan 4 buah seven segment common anoda, dua buah switch, beberapa resistor, penurun tegangan 78L05 atau 7805 dan tentu saja sebuah mikrokontroler PIC16F84/A.
Rangkaian jam digital ini adalah sebagai berikut.

 

 Rangkaian Jam Digital

jam digitam dengan mikrokontroler pic16f84a

Gambar 1  Rangkaian Jam Digital

hubungan pada jam pic16f84

Hubungan antara pena mikrokontroler dengan sevent segmen.

Jam digital ini dibuat menggunakan 4 buah sevent segment tunggal anoda. Dua buat sevent segment dipasang dengan posisi DOT (DP) berada pada posisi bawah, sementara 2 buah sevent segment lainnya dipasang dengan posisi DOT ( DP ) berada diatas ( lihat gambar ). Hal ini bertujuan antara digit “jam” dan digit “menit” akan dibatasi oleh tanda “ : “ sehingga tampilan menjadi JAM : MENIT.
Untuk menghasilkan tegangan stabil +5V didapat dengan cara menurunkan tegangan +9 Volt dari sebuah baterai kotak dengan menggunakan sebuah penurun tegangan 78L05. Perhatikan bahwa kaki 78L05 tidak sama dengan 7805.
Karena tidak tersedia program assemblernya, berikut akan diberikan program yang sudah berupa kode hexa-nya.

prototype jam pic16f84
Gambar 2  Prototipe yang dibuat Penulis

Kode Hex yang harus dimasukkan kedalam mikrokontroler adalah sebagai berikut.

:100000002A28FF3FFF3FFF3F8C00030E83018D0036
:100010000A088E008A0104088F000E28960803192A
:100020009503960B20289508031D20280130950084
:10003000E8309600483097070318960A0130980078
:100040000B110F0884000E088A000D0E83008C0E21
:100050000C0E0900FF309100FF30920001309C210E
:100060000030C9210030CB211116C821051E61289E
:10007000C030C600F930C700A430C800B030C90095
:100080009930CA009230CB008230CC00D830CD00FD
:100090008030CE009030CF00C030BC00CF30BD00EB
:1000A000A430BE008630BF008B30C0009230C1004B
:1000B0009030C200C330C3008030C4008230C5001D
:1000C00089283F30C6000630C7005B30C8004F307B
:1000D000C9006630CA006D30CB007D30CC002730BF
:1000E000CD007F30CE006F30CF003F30BC003030CD
:1000F000BD005B30BE007930BF007430C0006D3091
:10010000C1006F30C2003C30C3007F30C4007D307E
:10011000C500051EA4280130BE210030BC210130DD
:1001200095210230BE210030BC21013095210430E0
:10013000BE210030BC21013095210830BE210030A5
:10014000BC2101309521BC28FE30BE21FF30BC21EE
:1001500001309521FD30BE21FF30BC2101309521B9
:10016000FB30BE21FF30BC2101309521F730BE218C
:10017000FF30BC210130952101309500E830960018
:100180004830970098019A019B019C010C309D001A
:10019000D7218230D3218B178B16D9211808013C27
:1001A000031DE7289B0A98019A011B083C3C031D8C
:1001B000E7289B019C0A1C083C3C031DE7289C0186
:1001C0009D0A1D080D3C031DE72801309D001430D9
:1001D0001A02031C9A0A051EF0280130BE21F228DB
:1001E000FE30BE211D08093C0318F9284708BC2130
:1001F0000029051EFE28FF30BC2100290030BC214B
:100200000130A3211D08A1000A30A200DB21230830
:100210009E001E0899001908463E840000089900B7
:100220000F301A0203181C29051E1A2980301902E2
:1002300099001C2980309907051E21290230BE2112
:100240002329FD30BE211908BC210130A3211C083F
:10025000A1000A30A200E92123089F001F0899008D
:1002600019083C3E8400000899000F301A02031858
:100270004129051E3F29803019029900412980300B
:100280009907051E46290430BE214829FB30BE21AE
:100290001908BC210130A3211C08A1000A30A200CA
:1002A000DB212308A0002008990019083C3E8400A7
:1002B00000089900051E5F290830BE216129F7302A
:1002C000BE211908BC210130A321051E6A29FF3077
:1002D000BC216C290030BC21051E71290030BE21D3
:1002E0007329FF30BE211214C7219214C621061CA7
:1002F0008229061C7D29000079299C0A1C083B3CA8
:10030000031C9C01861C8F29861C882900008429D7
:100310009D0A1D080C3C03188F2901309D00921086
:10032000C6211210C721CE28942995001508A200D5
:100330006430A3003230AA2995001508A200643069
:10034000A3000A30AA29A1002108A2000A30A300B4
:100350000130AA29A400FF30A5002308A700220825
:10036000A600173025070318B229A60BB129A70B41
:10037000AF29A40BAD2908009400C0299300C3291C
:10038000140886000800130885000800CD29CD292F
:10039000D0299200CD299100D029120866000800CA
:1003A0001108650008009E001E0862000800831600
:1003B000080083120800A2080319E6292208210276
:1003C000031CE62922082102A100DE292108A3003E
:1003D0000800A401A2080319F62922082102031C1F
:1003E000F62922082102A100A40AED292408A3006D
:1003F0000800FF3FFF3FFF3FFF3FFF3FFF3FFF3F43
:10040000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFC
:10041000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEC
:10042000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDC
:10043000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCC
:10044000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBC
:10045000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAC
:10046000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9C
:10047000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8C
:10048000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7C
:10049000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6C
:1004A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5C
:1004B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4C
:1004C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3C
:1004D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2C
:1004E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1C
:1004F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0C
:10050000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFB
:10051000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEB
:10052000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDB
:10053000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCB
:10054000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBB
:10055000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAB
:10056000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9B
:10057000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8B
:10058000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7B
:10059000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6B
:1005A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5B
:1005B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4B
:1005C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3B
:1005D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2B
:1005E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1B
:1005F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0B
:10060000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFA
:10061000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEA
:10062000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDA
:10063000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCA
:10064000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBA
:10065000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAA
:10066000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9A
:10067000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8A
:10068000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7A
:10069000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6A
:1006A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5A
:1006B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4A
:1006C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3A
:1006D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2A
:1006E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1A
:1006F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0A
:10070000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF9
:10071000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE9
:10072000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD9
:10073000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC9
:10074000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB9
:10075000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA9
:10076000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F99
:10077000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F89
:10078000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F79
:10079000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F69
:1007A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F59
:1007B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F49
:1007C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F39
:1007D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F29
:1007E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F19
:1007F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F09
:084000000F000F000F000F007C
:02400E00F13F80
:104200007700770077002E006A006F00730065006A
:10421000700069006E006F002E0063006F002000C8
:104220002D0020004A0050003800340031002D00DD
:1042300034002E0068006500780020002A002A0063
:104240002A00200054004F00520020002A002A00BB
:104250002A0020004A0075006E0020003100330063
:104260002000320030003000350020002D002000FA
:104270004C0061007300740020007600650072003D
:00000001FF

Rangkaian ini sudah dicoba penulis dan bekerja dengan baik.


  • Share/Bookmark
Categories: APLIKASI MIKROKONTROLER Tags:

MEMBUAT ALAT PENGONTROL JIG DENGAN MIKROKONTROLER PIC16F84/A

December 7th, 2011 2 comments

Pendahuluan

Dalam dunia industri sering terdengar istilah JIG. JIG adalah alat apa saja yang dapat membantu / mempermudah pekerjaan. Nah  kali ini, saya akan menampilkan suatu alat yang dapat menjadi kontroler untuk dipergunakan sebagai JIG / alat bantu dalam proses pekerjaan baik untuk di industri maupun untuk di rumah.

Kontroler ini akan menggunakan mikrokontroler PIC16F84/A sebagai pengendalinya. Dia akan memiliki layar tampilan berupa LCD ( Liquid Crystal Display ) 16 karakter x 2 baris sebagai sarana untuk berkomunikasi dengan pengguna.

Disamping itu, dia juga memiliki beberapa port I/O yang dapat kita program untuk dijadikan sebagai alat masukan atau alat keluaran. Secara normal sebagai alat masukan digunakan tombol push on standard dan untuk keluran dapat berupa LED atau relay ( hal ini tentu sesuai dengan kebutuhan ).

 

Mengapa LCD ?

Penggunaan LCD tentu dikarenakan beberapa hal. Diantaranya adalah bahwa dengan digunakannnya LCD, maka tampilan alat akan cenderung lebih professional, bila dibandingkan hanya menggunakan lampu led maupun peraga seven-segment biasa. Selain itu juga dengan digunakannya LCD, maka beragam tulisan / karakter dapat ditampilkan dengan mudah.

LCD saat ini telah banyak dipakai dalam beragam alat elektronika. Secara mudah dapat kita temukan pada telepon umum ( walaupun saat ini telpon umum sudah jarang dipakai orang ). Atau juga sebagai peraga pada beberapa produk printer dan lain-lain.

Pada edisi ini kita tidak akan membahas LCD-nya itu sendiri, hal ini karena pembahasan tentang LCD telah diberikan pada Elkom edisi sebelumnya. Pembahasan akan lebih menitik beratkan pada rangkaian menggunakan kontrol PIC16F84/A.

 

Rangkaian Lengkap

Rangkaian pengontrol JIG ini hanya menggunakan beberapa komponen elektronika saja. Yang paling utama tentu saja mikrokontroler PIC16F84/A dan LCD. Selebihnya hanya komponen-komponen pendukung seperti kristal / resonator dan beberapa komponen untuk catu daya.

Seperti telah dijelaskan diawal bahwa pada alat ini terdapat port I/O yang dapat diprogram baik untuk alat masukan atau alat keluaran. Dengan cara ini, maka beragam kontrol JIG dapat dibuat. Yang perlu dilakukan adalah menentukan terlebih dahulu port masukan dan port keluaran.

Sebagai contoh kita akan mengontrol  sebuah relay ( yang terhubung dengan motor-misalnya ).  Sebagai sarana untuk mengatur nyala-matinya relay itu, akan dipergunakan saklar push on dua buah. Sebuah saklar untuk mengaktifkan relay dan saklar lainnya untuk mematikan relay.

 

Rangkaian Pengontrol JIG

 

Gambar 1 Rangkaian pengontrol JIG

            Rangkaian pengontrol JIG dapat dibuat sendiri dengan menggunakan PCB lubang. Namun untuk lebih mudahnya kita dapat menggunakan DT-Proto 18 pin PIC. Dengan menggunakan DT-Proto 18 pin PIC, maka kita tinggal memasang saklar push on dan relay pada pcb lubang yang sudah disediakan.

Hubungan antara mikrokontrole dengan LCD secara lengkap dapat dilihat pada listing program yang disertakan ( volex.asm ). Pada program ini adalah untuk mengontrol sebuah relay yang dapat terhubung ke sebuah motor. Untuk mengaktifkan relay ini, maka kita harus menekan tombol “START” sedangkan untuk mematikan relay ini, kita harus menekan tombol “STOP”.

Sesaat setelah kita menekan tombol START, maka pada LCD akan tampil tulisan “Mesin Bekerja” sedangkan sesaat setelah kita menekan tombol STOP maka pada LCD akan tampil tulisan “Mesin Berhenti”.

 

Prototype JIG

Gambar 2  Prototipe alat

Port-port pada mikrokontroler yang bebas dapat dipakai untuk I/O ( Input / Output ) adalah sebagai berikut.

Port A    :  RA0, RA3 dan RA4

Port B    :  RB0, RB1, RB2 dan RB3

Port-port ini dapat dihubungkan dengan alat masukan atau alat keluaran sesuai dengan alat yang hendak kita buat ( kita kontrol ). Pada contoh diatas tombol push on dihubungkandenganPORTA yaitu RA0 untuk tombol START dan RA4 untuk tombol STOP. Sedangkan relay dihubungkandenganPortB yaitu RB1.

Adapun listing program diatas adalah sebagai berikut.

;============================================================

;    Program untuk contoh

;    Mesin kontrol jig

;    Saat Memberikan training di PT.VolexIndonesia

;————————————————————

;    Pin-pin lcd

;    1= GND   2=+5V   3=Vref  4=RS   5=R/W   6=E

;    7= D0    8=D1    9=D2    10=D3  11=D4   12=D5

;    13=D6    14=D7   15=Backlight(+)  16=Backlight(-)

;————————————————————

;    Hubungan LCD dengan Mikrokontroler

;    RS dgn RA2    R/W  dgn ground       E dgn RA1

;    D4 dgn RB4    D5 dgn RB5       D6 dgn RB6      D7 dgn RB7

;

;==============================================================

;       cpu equates (memory map)

processor 16f84

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

PDel0   equ 0x0c

PDel1   equ 0x0d

PDel2   equ 0x0e

;————————————————————

;     bit equates

rp0   equ   5

;————————————————————

org     0×000

;

start   bsf     status,rp0  ;switch to bank 1

movlw b’11001′ ;outputs

movwf   trisa

movlw   b’00000001′

movwf trisb

bcf   status,rp0  ;switch back to bank 0

 

movlw b’11001′ ;all outputs low

movwf porta

movlw   b’00000001′

movwf portb

 

call  del_5 ;allow lcd time to initialize itself

 

call  initlcd     ;initialize display

call  display_line1

call    display_line2

call    delay2s

call    display_line2a

 

cek_tombol_start

btfsc porta,0

goto cek_tombol_start

start_on

bsf portb,1         ; led atau relay  on

call    display_line2b ; mesin bekerja

 

cek_tombol_stop

btfsc porta,4

goto cek_tombol_stop

 

stop_on

bcf portb,1         ; led atau relay off

call   display_line2c     ; mesin berhenti

goto cek_tombol_start

 

;————————————————————

display_line1

bcf porta,1     ;E line low

bcf porta,2     ;RS line low, set up for control

call      del_125     ;delay 125 microseconds

movlw     0×80  ;control word = address first half

call      send

bsf porta,2     ;RS=1, set up for data

call      del_125     ;delay 125 microseconds

 

movlw   ‘M’     ;define character

call    send

movlw   ‘E’

call    send

movlw   ‘S’

call    send

movlw   ‘I’

call    send

movlw   ‘N’

call    send

movlw   ‘ ‘

call    send

movlw   ‘K’

call    send

movlw   ‘O’

call    send

movlw   ‘N’

call    send

movlw   ‘T’

call    send

movlw   ‘R’

call    send

movlw   ‘O’

call    send

movlw   ‘L’

call    send

movlw   ‘J’

call    send

movlw   ‘I’

call    send

movlw   ‘G’

call    send

return

 

display_line2

bcf     porta,1

bcf     porta,2

call    del_125

movlw   0xC0

call    send

bsf     porta,2

call    del_125

movlw   ‘P’

call    send

movlw   ‘T’

call    send

movlw   ‘ ‘

call    send

movlw   ‘V’

call    send

movlw   ‘O’

call    send

movlw   ‘L’

call    send

movlw   ‘E’

call    send

movlw   ‘X’

call    send

movlw   ‘ ‘

call    send

movlw   ‘I’

call    send

movlw   ‘ ‘

call    send

movlw   ‘N’

call    send

movlw   ‘ ‘

call    send

movlw   ‘D’

call    send

movlw   ‘ ‘

call    send

return

 

display_line2a

bcf     porta,1

bcf     porta,2

call    del_125

movlw   0xC0

call    send

bsf     porta,2

call    del_125

movlw   ‘S’

call    send

movlw   ‘T’

call    send

movlw   ‘A’

call    send

movlw   ‘R’

call    send

movlw   ‘T’

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘S’

call    send

movlw   ‘T’

call    send

movlw   ‘O’

call    send

movlw   ‘P’

call    send

return

 

display_line2b

bcf     porta,1

bcf     porta,2

call    del_125

movlw   0xC0

call    send

bsf     porta,2

call    del_125

movlw   ‘M’

call    send

movlw   ‘E’

call    send

movlw   ‘S’

call    send

movlw   ‘I’

call    send

movlw   ‘N’

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘B’

call    send

movlw   ‘E’

call    send

movlw   ‘K’

call    send

movlw   ‘E’

call    send

movlw   ‘R’

call    send

movlw   ‘J’

call    send

movlw   ‘A’

call    send

return

 

display_line2c

bcf     porta,1

bcf     porta,2

call    del_125

movlw   0xC0

call    send

bsf     porta,2

call    del_125

movlw   ‘M’

call    send

movlw   ‘E’

call    send

movlw   ‘S’

call    send

movlw   ‘I’

call    send

movlw   ‘N’

call    send

movlw   ‘ ‘

call    send

movlw   ‘ ‘

call    send

movlw   ‘B’

call    send

movlw   ‘E’

call    send

movlw   ‘R’

call    send

movlw   ‘H’

call    send

movlw   ‘E’

call    send

movlw   ‘N’

call    send

movlw   ‘T’

call    send

movlw   ‘I’

call    send

return

 

;————————————————————

initlcd bcf porta,1     ;E line low

bcf   porta,2     ;RS line low, set up for control

call  del_125     ;delay 125 microseconds

movlw 0×38  ;8-bit, 5X7 mode

movwf bits  ;0011 1000

call  flipbit     ;output 4 MS bits (LS not used)

call  pulse ;send bits

call  del_125     ;delay

movlw 0×28  ;4-bit, 5×7 mode

movwf bits  ;0010 1000

call  flipbit     ;output 4 MS bits (LS not used)

call  pulse ;get into 4-bit mode

call  del_125

movlw 0×28  ;4-bit, 5×7 mode

call  send  ;send both nybbles

movlw 0x0c  ;display on, no cursor

call  send

movlw 0×01  ;clear display

call  send

call  del_5 ;delay 5 milliseconds

return

;————————————————————

send  movwf bits

call  flipbit

call  pulse

swapf bits,f      ;swap MS and LS nybbles

call  flipbit     ;output what was LS nybble

call  pulse

call  del_125

return

;————————————————————

 

flipbit     bcf   portb,4     ;default

btfsc bits,4      ;test bit in “bits”

bsf   portb,4     ;bit in “bits” set

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  ;approx 42×3 cycles (decimal)

movwf count1      ;load counter

repeat      decfsz      count1,f   ;decrement counter

goto  repeat      ;not 0

return            ;counter 0, ends delay

;————————————————————

del_5 movlw 0×29  ;decimal 40

movwf count2      ;to counter

delay call  del_125     ;delay 125 microseconds

decfsz      count2,f   ;do it 40 times = 5 milliseconds

goto  delay

return            ;counter 0, ends delay

;————————————————————

pulse bsf   porta,1     ;pulse E line

nop         ;delay

bcf   porta,1

return

 

 

delay2s

movlw     .167      ; 1 set number of repetitions (C)

movwf     PDel0     ; 1 |

PLoop0  movlw     .41       ; 1 set number of repetitions (B)

movwf     PDel1     ; 1 |

PLoop1  movlw     .72       ; 1 set number of repetitions (A)

movwf     PDel2     ; 1 |

PLoop2  clrwdt              ; 1 clear watchdog

decfsz    PDel2, 1  ; 1 + (1) is the time over? (A)

goto      PLoop2    ; 2 no, loop

decfsz    PDel1,  1 ; 1 + (1) is the time over? (B)

goto      PLoop1    ; 2 no, loop

decfsz    PDel0,  1 ; 1 + (1) is the time over? (C)

goto      PLoop0    ; 2 no, loop

PDelL1  goto PDelL2         ; 2 cycles delay

PDelL2  clrwdt              ; 1 cycle delay

return              ; 2+2 Done

;————————————————————

end

;————————————————–

 


  • Share/Bookmark
Categories: APLIKASI MIKROKONTROLER Tags:

MEMBUAT ALAT MATA-MATA DENGAN HP BEKAS

December 5th, 2011 3 comments

PENDAHULUAN

Yang dimaksud dengan alat mata-mata  ini adalah suatu alat yang dapat mendengarkan kondisi suatu ruangan. Namun karena alat ini menggunakan sarana hand phone, sehingga kita dapat mendengarkan kondisi suatu ruangan yang jaraknya jauh.

Sebagai contoh kita hendak mendengarkan kondisi suatu ruangan dirumah kita sendiri saat kita sedang bekerja di kantor. Caranya adalah kita menelepon alat yang kita buat ini.  Pangilan ini akan segera diterima oleh hand phone sehingga dengan demikian kita bisa mendengarkan keadaan ( suara ) di ruangan tersebut melalui microphone yang terpasang pada HP.

Secara normal saja, suatu HP yang dipanggil tidak akan dapat menjawab jika tidak ada orang yang mengangkat HP tersebut.  Oleh karena itu diperlukan alat tambahan yang dapat ‘mengangkat’ jika ada pangilan ke alat tersebut. Alat ini akan menggunakan sebuah mikrokontroler sebagai kontrolnya.

 

PIC16F84

            IC PIC16F84 merupakan sebuah komputer yang berukuran seperti layaknya ukuran IC.  Sebagaimana sebuah komputer, PIC16F84 terdiri dari sebuah CPU ( Central Processing Unit ), ROM ( Flash ROM ), RAM ( Random Access Memory ) dan I/O ( Input/Output ).

Dengan menggunakan IC ini, maka beragam alat dapat kita buat.  Adapun urutan untuk membuat alat menggunakan IC ini adalah sebagai berikut.  Pertama adalah membuat program sesuai dengan rancangan alat.  Program tersebut dapat ditulis  dengan bahasa assembly, bahasa C, maupun bahasa yang lain.

Setelah program ditulis menggunakan bahasa yang sesuai, lalu dilakukan proses kompilasi agar program tersebut menjadi kode-kode biner ( 1 atau 0 ) yang dimengerti oleh komputer.  Selanjutnya dengan menggunakan programmer, kode-kode tersebut dimasukkan ke dalam Flash memori.  Setelah IC tersebut diberi daya listrik, maka rancangan alat kita akan bekerja sebagaimana mestinya

ic pic16f84a

Gambar 1  IC PIC16F84

 

RANGKAIAN

            Berikut akan segera diberikan rangkaian untuk mengontrol HP ( second ) sehingga menjadi alat mata-mata.  Rangkaian ini cukup sederhana, hanya memerlukan beberapa komponen saja. Adapun komponen yang diperlukan adalah :

  1. IC PIC16F84 ( yang berisi program spionase.hex )
  2. Tiga ( 3 )  buah resistor
  3.  Resonator 4 MHz
  4. Opto Coupler PC817
  5. Regulator 5 Volt 7805 ( optional )
  6. Baterai 9 Volt

Adapun rangkaian lengkapnya adalah sebagai berikut.

 

Rangkaian Alat Mata Mata

 

Gambar 2  Rangkaian lengkap

            Pada bagian depan alat dilengkapi dengan Opto coupler ( PC817 ) yang dihubungkan dengan kaki LED pada HP bekas.  Sambungkan dua kabel pada suatu LED, jika kondisi HP hidup ukur kabel tersebut dengan menggunakan multimeter untuk  menentukan kabel mana yang + ( positif ) dan kabel mana yang – ( negatif ).

Opto coupler yang kedua pada outputnya dihubungkan dengan tombol untuk mengangkat HP jika ada panggilan.  Dalam contoh ini dipakai HP dengan tipe Nokia 3310.

 

Menghubungkan LED

 

Gambar 3  Menghubungkan dengan LED

 Menghubungkan Tombol Menu

Gambar 4  Menghubungkan dengan tombol ( Menu )

Rangkaian ini telah dicoba oleh penulis dan dapat bekerja dengan benar.  Adapun gambar berikut adalah gambar prototype dari alat yang dibuat penulis.

 

Prototype Alat Mata Mata

Gambar 5  Prototipe alat

            Selain sebagai fungsi diatas, masih ada kegunaan lain yang tentunya bermanfaat dari alat ini.  Misalnya untuk seorang ibu yang sedang meninggalkan bayinya, maka jika dia kangen dengan suara bayinya dapat tiap saat memantau menggunakan alat ini.

Adapun program untuk PIC16F84 adalah sebagai berikut.

;Program untuk memanfaatkan HP bekas

;sebagai alat penyadap suara jarak jauh

;Programmer : Moh.Ibnu Malik,ST

 

processor 16f84

 

status equ 0×03

trisa  equ 0×85

trisb  equ 0×86

porta  equ 0×05

portb  equ 0×06

rp0    equ 5

 

mulai

bsf status,rp0

movlw b’00000000′

movwf trisa        ; porta sebagai keluaran

movlw b’11111111′

movwf trisb        ; portb sebagai masukan

bcf status,rp0

bcf porta,1        ; port a1 rendah

 

cek

btfsc portb,0  ; cek rb0 rendah tidak

 

goto cek

 

execute

bcf porta,0   ; ra0 dibuat rendah

bsf porta,1   ; ra1 tinggi relay aktif

call delay

 

 

 

bsf porta,0 ; ra0 kembali tinggi

goto cek

 

delay

movlw d’255′

movwf 0x2e

loop1

movlw d’255′

movwf 0x2d

loop2

decfsz 0x2d

goto loop2

decfsz 0x2e

goto loop1

return

 

end

 

Saran  : Gunakan merk Nokia karena memiliki MIC yang lebih peka bila dibanding merk lain.

 

Berikut Beberapa Prototipe Alat yang pernah di buat :

Prototipe Alat Mata Mata

Prototipe Alat Mata Mata

 

Hp

Hp

Pcb

Pcb

 

 

 

 

Disain : Moh.Ibnu Malik,ST

Email : moh_ibnumalik@yahoo.com


  • Share/Bookmark
Categories: APLIKASI MIKROKONTROLER Tags:

MEMBUAT REMOTE CONTROLLED LINE FOLLOWER MOBILE ROBOT

December 5th, 2011 1 comment

Pendahuluan

Yang dimaksud dengan “Remote Controlled Line Follower Mobile Robot” adalah suatu robot mobil yang akan mengikuti garis ( garis hitam diatas lantai putih ) dimana dia memiliki fasilitas start  / stop yang dikontrol menggunakan remote kontrol. Untuk mengurangi kerumitan dari sisi program, maka remote kontrol disini tidak menggunakan fungsi decoding. Jadi semua tipe remote apapun dan tombol apapun dapat dipakai untuk mengaktifkan ( jalan ) atau melumpuhkan ( stop ) line follower robot tersebut.

Jadi untuk membuat robot line follower berjalan, maka kita harus menekan sebuah tombol ( apapun ) pada remote. Maka Robot Line Follower tersebut akan berjalan mengikuti garis hitam diatas dasar warna putih. Jika kita tekan kembali tombol ( apapun ) pada remote, maka robot akan berhenti demikian seterusnya.

 

Kontrol Robot

Untuk mengontrol robot, maka akan dipakai mikrokontroler PIC16F84 dengan pertimbangan faktor ukuran yang relatif kecil sehingga cocok untuk pengontrol robot  line follower ini. Mikrokontroler sendiri akan menerima data dari sensor remote dan Foto sensor. Foto sensor (merk Fotek ) adalah sensor untuk membedakan jalur hitam diatas dasar warna putih.

Sedangkan untuk keluaran, mikrokontroler akan dihubungkan dengan 2 buah motor servo ( merk Parallax atau sejenis dengan tipe Continous ) dan 2 buah LED. Adapun diagram dari robot yang akan dibuat adalah sebagai berikut.

 

Diagram Line Follower

Gambar 1  Diagram Blok Robot Line Follower

Sensor

            Seperti terlihat pada gambar 1 bahwa ada 2 sensor yang dibutuhkan untuk membuat robot ini. Yang pertama adalah sensor remote.  Sensor ini dapat kita ketemukan pada peralatan elektronik yang biasanya menggunakan remote control seperti TV, DVD Player, Audio Hi-FI dll. Sensor ini berkaki 3 dan berharga murah.

 

Sensor Remote

Gambar 2 Sensor Remote

Sensor kedua adalah sensor Foto merk Fotek ( atau sejenis : OMRON, Panasonic dll ). Sensor ini sering dipakai pada konveyor di pabrik-pabrik atau pada mesin-mesin seperti mesin Auto Insertion dll.  Sensor ini berharga agak mahal bagi hobbies, namun mudah untuk menggunakannya.

Sensor ini dipakai untuk mendeteksi warna hitam atau warna putih. Prinsip kerjanya adalah sederhana saja. Warna putih akan memantulkan cahaya yang dikirimkan dari sensor ini, sedangkan warna hitam akan menyerap cahaya. Berdasarkan hal ini,maka keluaran sensor ini dapat dibuat ( dengan tambahan antarmuka ) berlogika tinggi dan rendah sesuai dengan warna yang ada dibawahnya.

 

Sensor Fotek

Gambar 3  Sensor Foto Fotek

 

Penggerak Robot

Untuk menggerakkan Line Follower ini dapat dipakai 2 pilihan yaitu motor DC atau motor servo. Jika akan menggunakan motor DC maka harus dipakai motor DC yang sudah terpasang sistem gear ( Geared Motor DC ).  Nah motor seperti ini masih susah dicari, sehingga pilihan jatuh ke motor servo.  Disamping itu motor servo dapat dikontrol langsung dari mikrokontroler PIC16F84 tanpa tambahan IC-Driver lagi.

 

Motor Servo

 

Gambar 4  Motor Servo

Rangkaian Lengkap

Berikut diberikan rangkaian lengkap Remote Line Follower Mobile Robot.  Base robot ini dibuat dari acrylic warna merah dengan bentuk bulat. Diameter tidak kritis ( sesuai keinginan ). Servo motor dihubungkan dengan roda kayu ( atau dari material apapun dapat dipakai ).  LED dua buah ditempatkan didepan. Pada robot  ini dipakai 2 buah sistem baterai yaitu +9V dari baterai kotak untuk sistem mikrokontroler dan sensor foto fotek dan +6Volt untuk motor servo.

Adapun rangkaian lengkapnya adalah sebagai berikut.

 

Rangkaian Lengkap

Gambar 5  Rangkaian Lengkap Line Follower Robot

 

Cara Kerja dari Robot ini dapat dijelaskan sebagai berikut. Pada saat pertama kali robot diaktifkan, maka ia akan mengecek remote sensor. Jika ada penekanan tombol pada remote ( tombol apa saja ), maka bagian output dari sensor akan menjadi rendah ( low ). Hal ini akan menyebabkan terjadinya sela INT ( pada pena RB0/INT ).

Sela ini akan mengatur suatu bit On_Off untuk robot. Pada penekanan pertama, maka robot akan berjalan. Jika pada saat robot berjalan ditekan tombol remote, maka robot akan berhenti.

Pada saat robot berjalan, maka sensor Foto Fotex akan diambil datanya melalui pena RA0 apakah tinggi ( high ) atau rendah ( low ) hal ini akan mempengaruhi jalannya robot. Saat melewati garis hitam, robot akan berjalan lurus. Saat melewati warna putih ( keramik rumah ) maka robot akan belok ke kiri.

Line Follower

 

Gambar 6  Gambar Remote Controlled Line Follower Mobile Robot yang telah jadi

 

Hal-Hal yang perlu diperhatikan :

  1. Jika mobil robot jalannya mundur, disebabkan karena salah memasang servo ( servo 1 dan 2 harus dipertukarkan )
  2. Jarak antara Sensor Fotek dengan keramik kurang lebih 1cm. Atur sensitivitas pada sensor sehingga pada saat kena warna hitam sensor  off, jika kena warna putih sensor on ( led merah menyala pada sensor ).
  3. Untuk membuat line, gunakan “Daimaru Tape” yang banyak dijual di toko alat-alat tulis.
  4. Roda Caster dibuat menggunakan “roda” pada produk deodoran.

 

Program ( kode sumber ) dalam bentuk assembly dapat diminta kepada penulis melalui email.

 

Penulis :

Moh.Ibnu Malik,ST

Email  :  moh_ibnumalik@yahoo.com


  • Share/Bookmark
Categories: APLIKASI MIKROKONTROLER Tags:

MEMBUAT LCD BACKPACK BERBASIS MIKROKONTROLER PIC16F84

December 5th, 2011 1 comment

Pendahuluan

Dalam dunia elektronika maupun robotika, penggunaan LCD ( Liquid Crystal Display ) adalah sudah umum. Walaupun masih banyak yang menganggap bahwa menggunakan LCD adalah sudah.  Memang bagi yang belum pernah menggunakan LCD, akan merasakan sendiri betapa susahnya memprogram mikrokontroler untuk mengontrol LCD.

Namun kini sudah semakin banyak literatur-literatur cara menghubungkan suatu jenis mikrokontroler dengan LCD, sehingga penggunaan LCD sekarang sudah semakin biasa bagi kalangan mahasiswa ataupun hobbys elektronika. Ketersediaan LCD yang bersifat umum ( kompatibel satu sama lain ) tentu sangat menguntungkan. Hal ini menjadikan pemrogram,an ke LCD tidak tergantung kepada merk LCD itu sendiri.

 

Sekilas LCD 

            Sebelum menjelaskan tentang apa itu LCD Back Pack, penulis ingin membahas sedikit tentang dasar-dasar pemrograman LCD.  Hal ini mungkin diperlukan bagi adik-adik kita yang baru saja mengenal / belajar dunia mikrokontroler.

LCD merupakan alat untuk menampilkan angka atau tulisan sehingga alat yang menggunakan LCD ini akan terlihat professional. Penggunaan LCD ini tentu berbeda dengan penggunaan Seven Segment ( Peraga 7 ruas ).  Jika pada peraga 7 ruas adalah merupakan alat pasif, maka LCD dapat dianggap sebagai alat aktif.  Hal ini dikarenakan pada LCD telah dipasang sebuah prosesor Hitachi HD44780.

Oleh karena adanya prosesor tersebutlah, maka untuk menggunakan LCD harus menggunakan sistim mikrokontroler ataupun dapat menggunakan parallel port pada komputer. Hal ini tidak lain karena kita harus memberikan proses inisialisasi terlebih dahulu sebelum menggunakan LCD.

 

Pin Diagram LCD

Walaupun manufacture LCD sangat banyak ( Data Image, Densitron, Optrex,Hitachidll ) namun karena menggunakan prosesor yang sama, maka hal ini menjadikan masing-masing LCD saling kompatibel.  Jumlah pin LCD secara umum adalah 16 buah.  Ini khusus untuk LCD standard ( bukan LCD Graphic atau serial LCD ).  Adapun ke 16 pin LCD adalah sebagai berikut.

Tabel 1  Pin LCD

                                    Pin LCD                      Kegunaan

1                                                                     Ground

2                                                                     Vdd ( +5Volt )

3                                                                     V contrast

4                                                                     RS

5                                                                     R/W  ( Read / Write )

6                                                                     E     ( 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                                                                 Anoda  ( +  BackLight )

16                                                                 Katoda ( -  BackLight )

 

Adapun diagram blok  LCD adalah seperti pada gambar berikut.

 

 

Blok diagram LCD

Gambar 1  Diagram Blok Standard LCD

Pena Kontrol LCD

Secara umum pena kontrol untuk LCD hanya ada 3 saja yaitu : RS, R/W dan E.  Kegunaan masing-masing pena kontrol tersebut adalah sebagai berikut ini.

Pena kontrol RS ( Register Select ) digunakan untuk memberitahukan LCD apakah data yang dikirim merupakan Instruksi atau merupakan data. Oleh karena itu berlaku hal sebagai berikut.

Data sebagai                           Pena RS

Instruksi                                         0

Data                                            1

 

 

Pena kontrol R/W digunakan sebagai kontrol untuk proses membaca ( Read ) atau menulis ( Write ).  Umumnya prosesnya adalah menulis dari mikrokontroler ke LCD, oleh karena itu pena ini sering dihubungkan langsung dengan ground ( dengan asumsi tidak ada proses baca data dari LCD ke mikrokontroler ).

Sementara pena kontrol E ( Enable ) adalah untuk meng-enable ( memampukan ) proses penulisan register pada LCD jika pena ini berlogika tinggi  ( high ).

 

 

Kontrol Display

Kata instruksi dikirimkan ke LCD untuk memberitahukan mode operasi apa yang harus dijalankan.  Beberapa mode operasi dijelaskan dibawah ini.

 

Operasi                      Kata Instruksi                                  Kegunaan  

Function set                     0×38                               Memilih mode 8-bit, 5 x 7

Dipakai saat inisialisasi

Display On / Off              0x0C                               Display On tanpa Cursor

0x0F                                Display On,Cursor kedip di kiri

Clear Display                  0×01                                  Hapus Display = blanks

Entry Mode set               0×06                                   Increment Mode

 

Kata Instruksi diatas harus dikirimkan ke LCD, sebagai rutin inisialisasi.

 

 

 

Paralel LCD vs Serial LCD

Secara umum LCD yang banyak beredar diIndonesiaadalah parallel LCD, namun sebenarnya masih ada satu jenis LCD yang belum begitu banyak dipakai diIndonesiayaitu Serial LCD.  Jikalau menggunakan parallel LCD kita harus menggunakan lebih dari 8 jalur I/O, maka jika menggunakan serial LCD maka jumlah I/O yang dipakai jauh lebih sedikit, karena proses pengiriman data  menggunakan teknik serial.  Serial LCD banyak dibuat oleh Scott Edward Electronics Amerika.

 

LCD BackPack

Secara umum penggunaan LCD akan banyak menyita jalur I/O pada suatu sistim mikrokontroler.  Apabila mikrokontroler tersebut memiliki jumlah I/O yang banyak, tentu tidak menjadi masalah.  Masalah akan timbul jika kita menggunakan sistim mikrokontroler yang pena I/O-nya terbatas.  Jika  harus menggunakan mikrokontroler kecil ( dengan I/O terbatas ) dan harus menggunakan LCD apa yang harus kita lakukan agar dapat menghemat I/O ?

Jalan keluarnya adalah menggunakan LCD BackPack.  LCD BackPack adalah suatu PCB tambahan yang dipasang pada “punggung” LCD dimana pada PCB BackPack tersebut terdapat sebuat mikrokontroler PIC16F84 ( persamaan )  yang dipakai untuk mengontrol LCD tersebut.

Dengan adanya PCB BackPack tersebut, maka seluruh kontrol LCD diambil alih oleh mikrokontroler PIC16F84 yang ada pada BackPack.  Adapun komunikasi antara sistim minimum kita dengan LCD BackPack menggunakan 1 jalur saja. Total jalur yang dibutuhkan untuk berhubungan dengan LCD + BackPack adalah 2 jalur. Yaitu 1 jalur I/O dan Ground. Hal ini tentu merupakan penghematan jalur yang sangat berarti.

 

Micro dan LCD BackPack

 

Gambar 2  Hubungan antara LCD, PCB LCD BackPack

dan Sisitim Minimum Mikrokontroler

 

Dengan menggunakan LCD+BackPack ini maka sistim mikrokontroler kita hanya membutuhkan satu jalur I/O saja untuk berhubungan dengan LCD. Tentu hal ini menyebabkan jalur I/O masih banyak tersedia untuk keperluan lain.

 

Rangkaian LCD BackPack

            Rangkaian LCD BackPack merupakan rangkaian standard hubungan antara mikrokontroler dengan LCD.  Yang lebih berperan disini sebenarnya adalah bagian software-nya.  Karena hanya 1 jalur I/O saja yang akan dipakai untuk berhubungan dengan LCD, maka harus menggunakan sistim transfer data secara serial.

Rangkaian LCD BackPack

 

Gambar 3  Rangkaian LCD BackPack

Berikut contoh prototype LCD BackpPack yang sudah dibuat. PCB ini dipasang pada punggung LCD.

Prototype LCD BackPack

Gambar 4 Prototipe LCD BackPack

Kode sumber untuk  LCD BackPack ini aslinya dibuat oleh Mr.David Benson dan dimodifikasi sesuai kebutuhan. Pada saat pertama kali dinyalakan LCD akan menampilkan tulisan ELKOM pada pojok kiri.

 

Kode sumber untuk Sistim Mikrokontroler

Agar dapat berhubungan dengan LCD BackPack, maka pada sistim minimum mikrokontroler PIC16F84 yang akan berhubungan dengan LCD BackPack harus disertakan  rutin-rutin sbb.

;————————————————————

sndstf      movf  instr,w     ;get instruction

movwf sendreg     ;to be sent

call  ser_out     ;to serial out subroutine

movf  char,w      ;get character or hex byte

movwf sendreg     ;to be sent

call  ser_out     ;to serial out subroutine

movf  addr,w      ;get address

movwf sendreg     ;to be sent

call  ser_out     ;to serial out subroutine

return

;————————————————————

ser_out     bcf   intcon,5   ;disable tmr0 interrupts

bcf   intcon,7   ;disable global interrupts

clrf  tmr0  ;clear timer/counter

clrwdt            ;clear wdt prep prescaler assign

bsf   status,rp0   ;to page 1

movlw b’11011000′  ;set up timer/counter

movwf optreg

bcf   status,rp0   ;back to page 0

movlw 0×08  ;init shift counter

movwf count

bcf   porta,1     ;start bit

clrf  tmr0  ;start timer/counter

bcf   intcon,2   ;clear tmr0 overflow flag

time1 btfss intcon,2   ;timer overflow?

goto  time1 ;no

bcf   intcon,2   ;yes, clear overflow flag

nxtbit      rlf   sendreg,f  ;rotate msb into carry flag

bcf   porta,1     ;clear port A, bit 1

btfsc status,c   ;test carry flag

bsf   porta,1 ;bit is set

time2 btfss intcon,2   ;timer overflow?

goto  time2 ;no

bcf   intcon,2   ;clear overflow flag

decfsz      count,f     ;shifted 8?

goto  nxtbit      ;no

bsf   porta,1     ;yes, output mark

time3 btfss intcon,2   ;timer overflow?

goto  time3 ;no

return            ;done

;————————————————————

del_125     movlw 0x2a  ;approx 42×3 cycles (decimal)

movwf count1      ;load counter

repeat      decfsz      count1,f   ;decrement counter

goto  repeat      ;not 0

return            ;counter 0, ends delay

;————————————————————

 

 

Rutin-Rutin Penting

            Untuk dapat mengirimkan tulisan atau perintah ke LCD BackPack maka harus diingat beberapa hal berikut ini.

a. Menghapus layar LCD

Dilakukan dengan mengisi display RAM dengan blank ( kosong ) dan mengirimkan ke LCD.

movlw 0×00     ; mengisi blank ke display RAM

movwf instr

call sndstf

call del_125

movlw 0×01     ; kirim 16 karakter ke display

movwf instr

call sndstf

 

b. Menuliskan kata “TEST LCD”

 

movlw 0×02            ; tampilkan TEST LCD

movwf instr

call sndstf

c. Menuliskan huruf

movlw 0×00

movwf instr

call sndstf

call del_125

movlw 0×03     ; diikuti karakter ascii

movwf instr

movlw “A”      ; huruf A akan ditampilkan

movwf char

movlw 0×20     ; pada alamat 20 address RAM

movwf addr

call sndstf

movlw 0×01     ; kirim 16 karakter ke display

movwf instr

call sndstf

 

Contoh Progam Pada Sistim Minimum

Berikut diberikan contoh penggunaan dan pemrograman menggunakan LCD BackPack.  Misalkan rangkaian berikut adalah sebuah mobile robot yang dikontrol menggunakan mikrokontroler PIC16F84. Adadua buah saklar ( yang dimisalkan sebagai sensor ) yang terhubung dengan RA2 ( saklar maju ) dan RA3 ( saklar mundur ).

Jika saklar maju ditekan maka pada LCD harus tertampil tulisan :

Posisi :

MAJU

Jika saklar mundur ditekan maka pada LCD harus tertampil tulisan :

Posisi :

MUNDUR

 

 

Contoh Penggunaan LCD BackPack



Gambar 5  Contoh penggunaan LCD BackPack


Program secara utuh adalah sebagai berikut.

;=======test back pack =========================================

list    p=16c84

radix   hex

;————————————————————

 

tmr0        equ   0×01

status      equ   0×03

porta       equ     0×05

intcon      equ   0x0b

sendreg     equ   0x0c

count       equ   0x0d

instr       equ   0x0e

char        equ   0x0f

addr        equ   0×10

count1      equ   0×11

optreg      equ   0×81

trisa       equ   0×85

;————————————————————

 

c     equ   0

rp0   equ   5

;————————————————————

 

org     0×000

;

start

bsf     status,rp0  ; ke bank 1

movlw   b’00001100′ ; RA2,RA3 sebagai input

movwf   trisa

bcf     status,rp0  ; kembali ke bank 0

bsf     porta,1     ; RA1 dibuat tinggi ( = mark )

 

 

saklar_maju

btfsc   porta,2          ; saklar maju ditekan?

goto    saklar_maju      ; belum tuh..kembali ke saklar_maju

 

;—————————————————–

;rutin saklar_maju ditekan   ; ya,saklar_maju ditekan.

;—————————————————–

menulis_ke_lcd_maju          ; rutin menulis ke LCD ( MAJU )

 

call hapus_layar_lcd

movlw 0×03

movwf instr;

 

;tulisan posisi

movlw “P”

movwf char

movlw 0×20

movwf addr

call sndstf

 

movlw “o”

movwf char

movlw 0×21

movwf addr

call sndstf

 

movlw “s”

movwf char

movlw 0×22

movwf addr

call sndstf

 

movlw “i”

movwf char

movlw 0×23

movwf addr

call sndstf

 

movlw “s”

movwf char

movlw 0×24

movwf addr

call sndstf

 

movlw “i”

movwf char

movlw 0×25

movwf addr

call sndstf

movlw “:”

movwf char

movlw 0×26

movwf addr

call sndstf

 

 

;tulisan maju

 

movlw “M”

movwf char

movlw 0×28

movwf addr

call sndstf

movlw “A”

movwf char

movlw 0×29

movwf addr

call sndstf

 

movlw “J”

movwf char

movlw 0x2A

movwf addr

call sndstf

 

movlw “U”

movwf char

movlw 0x2B

movwf addr

call sndstf

 

movlw 0×01

movwf instr

call sndstf

saklar_mundur

btfsc porta,3

goto saklar_mundur

 

;—————————

;rutin saklar_mundur ditekan

;—————————

menulis_ke_lcd_mundur

 

call hapus_layar_lcd

movlw 0×03

movwf instr;

 

;tulisan Posisi:

movlw “P”

movwf char

movlw 0×20

movwf addr

call sndstf

 

movlw “o”

movwf char

movlw 0×21

movwf addr

call sndstf

 

movlw “s”

movwf char

movlw 0×22

movwf addr

call sndstf

 

movlw “i”

movwf char

movlw 0×23

movwf addr

call sndstf

 

movlw “s”

movwf char

movlw 0×24

movwf addr

call sndstf

 

movlw “i”

movwf char

movlw 0×25

movwf addr

call sndstf

 

movlw “:”

movwf char

movlw 0×26

movwf addr

call sndstf

 

;tulisan MUNDUR

movlw “M”

movwf char

movlw 0×28

movwf addr

call sndstf

 

movlw “U”

movwf char

movlw 0×29

movwf addr

call sndstf

 

movlw “N”

movwf char

movlw 0x2A

movwf addr

call sndstf

 

movlw “D”

movwf char

movlw 0x2B

movwf addr

call sndstf

 

movlw “U”

movwf char

movlw 0x2C

movwf addr

call sndstf

 

movlw “R”

movwf char

movlw 0x2D

movwf addr

call sndstf

 

movlw 0×01

movwf instr

call sndstf

 

goto saklar_maju

;—————

hapus_layar_lcd  ; rutin untuk menghapus lcd

;—————-

movlw 0×00     ; rutin ini untuk menghapus LCD

movwf instr    ;

call sndstf    ;

call del_125   ;

call del_125   ;

return

 

;————————————————————

display_test_lcd  ;rutin untuk menampilkan tulisan TEST LCD

;————————————————————

movlw 0×00      ; blank ke display RAM

movwf instr

call sndstf

call del_125

 

movlw   0×02    ;display “TEST LCD”

movwf   instr

call    sndstf  ;call send stuff

call del_125

call del_125

return

;——————————————–

 

 

;————————————————————

sndstf      movf  instr,w     ; ambil instruksi

movwf sendreg     ; yang akan dikirim

call  ser_out     ; ke rutin serial out

movf  char,w      ; dapatkan karakter atau hex byte

movwf sendreg     ; yang akan dikirim

call  ser_out     ; ke rutin  serial out

movf  addr,w      ; dapatkan alamat

movwf sendreg     ; yang akan dikirim

call  ser_out     ; ke rutin  serial out

return

;————————————————————

ser_out

bcf   intcon,5   ; lumpuhkan sela tmr0

bcf   intcon,7   ; lumpuhkan sela global

clrf  tmr0       ; hapus  timer/counter

clrwdt           ; hapus  wdt prep prescaler assign

bsf   status,rp0 ; ke hal  1

movlw b’11011000′; set up timer/counter

movwf optreg

bcf   status,rp0 ; kembali ke hal 0

movlw 0×08       ; inisialisasi shift counter

movwf count

bcf   porta,1    ; start bit

clrf  tmr0       ; start timer/counter

bcf   intcon,2   ; clear tmr0 overflow flag

time1 btfss intcon,2   ; timer melimpah ?

goto  time1      ; tidak

bcf   intcon,2   ; ya, clear overflow flag

nxtbit      rlf   sendreg,f  ; rotate msb into carry flag

bcf   porta,1        ; clear port A, bit 1

btfsc status,c   ; test carry flag

bsf   porta,1    ; bit is set

time2 btfss intcon,2   ; timer overflow?

goto  time2      ; no

bcf   intcon,2        ; clear overflow flag

decfsz      count,f   ; shifted 8?

goto  nxtbit          ; no

bsf   porta,1         ; yes, output mark

time3 btfss intcon,2        ; timer overflow?

goto  time3           ; no

return                ; done

;————————————————————

del_125

movlw 0x2a            ; approx 42×3 cycles (decimal)

movwf count1          ; load counter

repeat

decfsz      count1,f  ; decrement counter

goto  repeat          ; not 0

return                ; counter 0, ends delay

;————————————————————

end

 

Note : kode sumber untuk LCD BackPack dapat diminta via email ke penulis.

 

Gambar 6 Contoh Tampilan pada LCD

Penulis

Moh.Ibnu Malik,ST

Email : moh_ibnumalik@yahoo.com

HP : 081 293 295 12


  • Share/Bookmark
Categories: APLIKASI MIKROKONTROLER Tags:

BELAJAR MIKROKONTROLER PIC16F84 MENGGUNAKAN PIC TO BREADBOARD

December 5th, 2011 1 comment

Pendahuluan

Pada saat ini banyak jenis mikrokontroler yang beredar dipasaran. Hal ini memang sangat mengembirakan karena teknologi mikrokontroler telah berkembang dengan pesat. Tentu masih dapat diingat bahwa pada awal kemunculan mikrokontroler, teknologi ini masih susah untuk dipelajari.  Selain kurangnya buku-buku bacaan, juga diperlukan software maupun hardware yang harus dibeli dengan harga yang cukup mahal.

Masih juga ingat bagaimana kita harus memprogram EPROM untuk dapat menggunakan mikrokontroler yang mana hal ini dikarenakan pada mikrokontroler tersebut belum terdapat ROM internal. Dan apabila ternyata program yang kita masukkan kedalam EPROM tersebut salah, maka kita harus menghapus EPROM tersebut menggunakan sinar Ultra Violet.  Benar-benar tidak nyaman.

Namun untunglah saat ini telah banyak beredar mikrokontroler canggih yang telah lengkap. Hal ini memungkinkan kita untuk benar-benar menggunakan 1 chip tunggal untuk membentuk sistim. Hal ini didorong oleh berkembangnya teknologi memori sehingga kini telah dapat dibuat jenis memori yang dapat dihapus dengan menggunakan arus listrik.

 

Mikrokontroler PIC16F84 

            Salah satu jenis mikrokontroler yang beredar saat ini adalah mikrokontroler yang dikeluarakan oleh Microchip Inc, yaitu PIC16F84. Walaupun bukan yang terlengkap, namun mikrokontroler ini sangat pas dipakai untuk pemula yang ingin mempelajari mikrokontroler PIC.

Beragam kelengkapan fitur terdapat pada mikrokontroler ini. Wujud fisik yang cukup kecil yakni 18 pena, menjadikan mikrokontroler ini dapat ditempatkan pada tempat yang kecil sekalipun.  Tegangan kerja sampai serendah 2 Volt, memungkinkan rancangan alat yang didayai dengan menggunakan baterai.

 

ic pic16f84a

Gambar 1 Mikrokontroler PIC16F84

Fitur Mikrokontroler PIC16F84

            Berikut akan disebutkan beberapa fitur-fitur yang terdapat pada mikrokontroler PIC16F84.

  1. Hanya memerlukan 35 set instruksi
  2. Semua instruksi berukuran 14-bit
  3. Data berukuran 8-bit
  4. Memiliki memori program berukuran 1024 x  14 pada Flash memori
  5. RAM berukuran 68 byte
  6. Data memori berukuran 64 x 8 pada EEPROM
  7. Memiliki 4 sumber sela
  8. Total memiliki 13 jalur I/O ( Input / Output )
  9. Timer 8 bit dengan pre-scaller
  10. Dapat menggunakan beragam jenis osilator
  11. Dll

Selain fitur-fitur yang telah disebutkan diatas, masih banyak fitur yang menyenangkan seperti dapat langsung mendayai LED, kemampuan pemrograman didalam sistim ( In Circuit Serial Programming )  dan kemudahan membuat alat programmernya.  Berikut akan diberikan susunan pena mikrokontroler PIC16F84.

 

pin diagram

Gambar 2 Susunan pena mikrokontroler PIC16F84

Pena / kaki mikrokontroler PIC16F84 dapat dibagi menurut fungsinya sebagai berikut.

 

Tabel  1 Fungsi pena mikrokontroler PIC16F84

Tipe Pena                    Nama               Kegunaan

                              Power                           VDD                Sumber tegangan +2 ~ +6 Volt

 Power                           Vss                   Sebagai ground

     Osilator                         Osc1                Masukan Osilator

      Osilator                         Osc2                 Keluaran Osilator

               Kontrol                          MCLR             Master Clear ( Reset )

                                    I/O                                 RA0 ~ RA4      Jalur Input / Output ( Port A )

                                                                                            I/O                                 RB0 ~ RB7       Jalar Input / Output ( Port B )

 

 

 

Memprogram Mikrokontroler PIC16F84

            Diatas telah disebutkan bahwa salah satu kelebihan mikrokontroler buatan Microchip Inc ini adalah kemudahan dalam memprogramnya. Ya, selain rangkaian untuk programmernya relatif sederhana, juga terdapat puluhan software yang dikembangkan oleh penggemar PIC untuk memprogram mikrokontroler ini.

Oleh karena itu, penulis akan mengetengahkan salah satu rangkaian yang dapat dipakai untuk memprogram mikrokontroler ini.  Alat ini diberi nama “PIC to Breadboard” karena alat ini didisain untuk dipasang pada breadboard ( papan tancap ) agar memudahkan kita untuk mencoba rangkaian. Bagi yang ingin belajar mikrokontroler PIC16F84 disarankan untuk mencoba alat ini, karena dengan alat ini akan sangat memudahkan kita dalam mempelajari mikrokontroler PIC16F84.

 

Rangkaian PIC to Breadboard

            Rangkaian PIC to Breadboard tidaklah rumit, hanya diperlukan beberapa komponen yang mudah didapat.Komponen yang dipakai termasuk penurun tegangan, resistor, kapasitor, saklar, terminal dan resonator.  Adapun rangkaian lengkap alat PIC to Breadboard adalah sebagai berikut.

 

PIC to BreadBoard

 

Gambar 3  Rangkaian PIC to Breadboard

            Alat ini harus dihubungkan dengan komputer ( PC ) lewat serial port ( COM port ) untuk dapat mendownload program  kedalam mikrokontroler PIC16F84.  Sebuah saklar “Prog/Run” digunakan untuk mengubah mode “Program” ( saklar tertutup ) atau “Run” ( saklar terbuka ). Pada saat mode program, maka akan terdapat tegangan sebesar +14 Volt pada pena MCLR, tegangan sebesar ini tidak boleh sampai Vdd.  Oleh karena itulah dipasang Dioda 1N4148. Pada saat mode “Run” tegangan pada MCLR haruslah + 5 Volt.

Untuk memprogram mikrokontroler ini diperlukan 2 jalur yaitu untuk data dan untuk clock ( detak ).  Dalam hal ini dipakaialah pena RB6 dan RB7.  Oleh karena pena ini telah dipakai untuk jalur pemrograman, maka pena ini tidak boleh digunakan. Sehingga PortB yang masih dapat dipakai adalah RB0 sampai RB5. ( Dengan teknik menggunakan DIP switch, RB6 dan RB7 masih dapat dipakai sebagai general I/O – akan dijelaskan pada tulisan mendatang ). 

            Prototipe alat ini telah penulis buat menggunakan PCB lubang. Dan setelah dicoba, alat dapat bekerja dengan baik. Alat ini dapat dipasangkan langsung ke suatu Breadboard.  Dengan menggunakan breadboard, akan memudahkan kita mencoba-coba membuat program dengan mikrokontroler.

PIC to Breadboard Prototype

Gambar 4  Prototipe Alat PIC to Breadboard

tata letak

Gambar 5 Tata letak pena PIC to Breadboard

 

Adapun pena-pena pada PIC to Breadboard adalah sebagai berikut.

 

Tabel 2  Daftar Nama pena

                                                No Pena                                               Nama Pena

1                                                        Input +9 Volt dari baterai

2                                                         Output + 5 Volt

3                                                        Ground

4                                                          RB0

5                                                           RB1

6                                                           RB2

7                                                           RB3

8                                                           RB4

9                                                           RB5

10                                                        –

11                                                        RA0

12                                                        RA1

13                                                        RA2

14                                                        RA3

15                                                        RA4

 

Menggunakan PIC to Breadboard

            Untuk menggunakan PIC to Breadoard, maka kita memerlukan sebuah papan tancap ( breadboard ).  Alangkah lebih baik jika kita telah memiliki breadboard tipe lebar.  Hal ini karena pada breadboard tipe ini telah dilengkapi dengan tiga buah terminal. Terminal-terminal itu dapat kita hubungkan masing-masing dengan GND dan +9 Volt dari sebuah baterai kotak yang kita sisipkan pada bagian bawah breadboard.

Breadboard dan Baterai

Gambar 6  Breadboard & Penempatan Baterai 9 Volt

            Untuk menggunakan PIC to Breadboard pertama kita harus menghubungkan kabel data dari PIC to Breadboard ke Komputer ( PC ) melalui serial port. Pasang / tancapkan PIC to Breadboard ke papan tancap. Atur saklar “Prog/Run” sehingga tertutup ( mode Program ). Sambungkan catu daya +9 Volt dari baterai ke alat PIC to Breadboard.

Bukalah program PICprog. Sehingga tampilan berikut akan kita dapatkan.

 

PIC16F84 Programmer Software

 

Gambar 7  Software untuk PIC to Breadboard

Persiapkan terlebih dahulu file yang akan dimasukkan kedalam PIC to Breadboard.  File tersebut harus memiliki ektensi *.hex .  Untuk mendapatkan file tersebut dilakukan dengan cara mengkompilasi file *.asm dengan kompiler MPASM maka akan didapatkan file dengan ektensi *.hex.

Tekan tombol “Open” dan carilah file yang akan dimasukkan kedalam PIC to Breadboard.  Pilih menu osilator dengan cara memilih radio button “XT”. Pada menu Configuration beri tanda centang pada kolom “Power Up Timer”.  Setelah itu baru tekan tombol “Program” ( tanda Petir ).  Maka proses download program dari komputer ke PIC to Breadboard akan segera berlangsung.  Jika download telah selesai, maka atur saklar “Prog/Run” buat agar terbuka ( Mode Run ), maka program yang baru saja didownload tadi akan segera dilaksanakan ( dieksekusi )  oleh mikrokontroler PIC16F84 yang ada dalam alat PIC to Breadboard.

Selamat mencoba !

 

Moh.Ibnu Malik,ST

Email :  moh_ibnumalik@yahoo.com

Web :    http://microrobotics.blogspot.com

Perum Taman Aster Blok G2 No.35

Cikarang Barat Bekasi 17520

HP : 081 293 295 12


  • Share/Bookmark
Categories: APLIKASI MIKROKONTROLER Tags:

MIKROKONTROLER SEBAGAI PENGONTROL SELEKTOR SUARA

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.

 

diagram alat

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 :

 

programmer pic16f84a

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.

contoh programmer

 

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.

 

Contoh LCD

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           Fungsi

1                        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                     Kegunaan

Set 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

  1. 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.

  1. Sistim minimum mikrokontroler PIC16F84

 

 

Sistim Min Mikrokontroler

 

Gambar 5  Sistim minimum PIC16F84

Contoh Sis Min

Gambar 6  Foto sistim minimum PIC16F84

 

  1. Rangkaian bagian LCD

Rangkaian 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.

 

  1. Rangkaian Relay

Rangkaian relay merupkan rangkaian sederhana saja yaitu hanya untuk mengaktifkan relay menggunakan penguat transistor.  Rangkaiannya adalah sebagai berikut.

Rangkaian Relay

 

Gambar 7  Rangkaian Relay

Terakhir diberikan foto alat secara keseluruhan.

Gambar Alat

 

 

Gambar 8 Alat secara keseluruhan

 

Moh.Ibnu Malik,ST

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


  • Share/Bookmark
Categories: APLIKASI MIKROKONTROLER Tags:

MEMPROGRAM MIKROKONTROLER

December 3rd, 2011 1 comment

Pendahuluan

Setelah melakukan proses kompilasi dan telah dihasilkan file hex, maka kini saatnya untuk memasukkan file tersebut ke dalam Flash  Memory mikrokontroler. Untuk melakukan proses tersebut diperlukan alat yang disebut programmer. Contoh programmer adalah PICStart buatan Microchip.

Selain menggunakan Programmer kita dapat juga menggunakan ICSP Programmer. Keuntungannya adalah bahwa dengan menggunakan alat ini, maka mikrokontroler tidak perlu dicabut pada saat memprogram. Kita cukup menancapkan konektor ICSP saja. Salah satu alat ICSP ini adalah DT-HiQ ICSP Programmer buatan Innovative Electronics.

 

DT Proto Programmer

DT Proto Programmer

 

Gambar   DT-HiQ ICSP Programmer

Software Downloader

            Agar dapat memprogram mikrokontroler, alat tersebut diatas harus dikontrol oleh software khusus seperti IC-Prog 1.05D seperi pada gambar berikut ini.

ic prog

Gambar  IC-Prog

            Software ini diberikan dalam bentuk CD pada saat pembelian DT-HiQ ICSP Programmer. Pasanglah alat ini padaParalelPortkomputer anda. Alat ini akan mengambil catu daya dari tangkaian target.

Namun sebelum itu lakukan setting terlebih dahulu. Buka “Setting” pilih “Hardware.

 

setting hardware

 

Gambar  Cara setting hardware

 

Kemudian pilihlah “AN589 Programmer” dan lainya seperti pada gambar dibawah ini.

AN Programmer

 

 

Gambar   Pilih “AN389 Programmer”

 

Kemudian pilihlah jenis mikrokontroler PIC16F84A, Osillator pilih ke XT, Fuses pilih PWRT seperti pada gambar.

 

osilator dan fuses

Gambar  Pemilihan osilator dan fuses

            Terakhir tekan tombol “Program All” maka proses download ke mikrokontroler akan berlangsung.

 

program all

 

Gambar  Tombol program all


  • Share/Bookmark
Categories: MEMPROGRAM MIKROKONTROLER Tags:

TIMER / COUNTER

December 3rd, 2011 1 comment

Pendahuluan

            Tidak semua mikrokonteroler dilengkapi dengan Timer / Counter, namun pada PIC16F84 ini telah terdapat sebuah Timer/Counter yang berukuran 8-bit. Dengan adanya Timer/Counter maka kita dapat memanfaatkannya misalnya untuk membuat tundaan, atau untuk menghitung kejadian ( fungsi counter ).

Sifat dari Timer/Counter pada PIC16F84 adalah sebagai berikut.

  1. Timer/Counter berukuran 8-bit
  2. Dapat dibaca atau ditulisi ( Alamat 01H )
  3. Terdapat prescaller berukuran 8-bit yang dapat diprogram
  4.  Sumber detak dapat dipilih ( internal atau eksternal )
  5. Terjadi sela ( interupsi ) pada saat terjadi limpahan ( overflow )
  6. Terdapat pemilihan tebing ( edge ) untuk detak luar

 

Berikut adalah diagram dari Modul Timer/Counter.

modul timer counter

Gambar  Modul Timer / Counter

Menggunakan Timer

Karena Timer/Counter merupakan modul yang sama, maka dia dapat dijadikan Timer ataupun dijadikan Counter. Nah berikut adalah syarat untuk menjadikannya sebagai Timer.

Clear ( membuat nol ) bit TOCS

Bit TOCS ( TMR0 Clock Source Select bit ) jika di clear akan terpilih fungsi Timer. Sebaliknya jika di set ( “1” ) maka akan menjadi Counter. Pada mode timer, modul akan dinaikkan hitungannya tiap siklus instruksi ( Fosc/4 ).

Perhatikan gambar berikut ini.

 

1111 1111b    = FFH

Modul TMR0                    0000 0000b     = 00H

Kita misalkan modul TMR0 ( beralamat di 01H ) berisi 0000 0000b maka setiap satu siklus instruksi atau Fosc/4 maka hitunganya akan bertambah satu menjadi 0000 00001b demikian seterusnya sampai hitungan maksimum yaitu 1111 1111b.

Setelah terjadi hitungan maksimum ( 1111 1111b ) dan clock masih masuk ke modul TMR0, maka hitungan akan menjadi 0000 0000b hal ini dikatakan telah terjadi limpahan ( overflow ). Pada saat terjadi limpahan ini bit TOIF akan diset ( logika 1 ). Bit ini dapat dicek untuk mengetahui Timer sudah melimpah / belum.

Berikut ini adalah contoh pemakaian timer untuk membuat tundaan ( delay ).

 

 

 

;——————————————————————

;Nama Progam : coba6.asm

;Tanggal           : 22 Maret 2008

; Keterangan    :  Tundaan menggunakan timer

; Revisi            :

;——————————————————————-

processor 16f84

 

STATUS          EQU 03h

TRISA             EQU 85h

TRISB             EQU 86h

PORTA           EQU 05h

PORTB            EQU 06h

OPTION_REG EQU 81h

TMR0              EQU 01h          ;Timer/Counter

INTCON         EQU 8Bh

RP0                 EQU 5

 

 

org 00h

 

;————————————————————

inisialisasi

bsf STATUS,RP0    ; ke bank 1

movlw b’11111′       ; isi W-reg dengan 11111b

movwf TRISA         ; copy isi W ke TRISA à PORTA sbg input

 

movlw b’00000000′ ; isi W-reg dengan 00H

movwf TRISB         ; copy isi W ke TRISB à PORTB sbg output

 

movlw b’10000110′  ; RBPU dilulumpuhkan, timer 1:128

movwf OPTION_REG

bcf STATUS,RP0    ; ke bank 0

 

;—————akhir inisialisasi———————-

clrf PORTB

tugas

bsf PORTB,0   ; nyalakan LED di RB0

call delay

call delay

call delay

bcf PORTB,0   ; matikan LED di RB0

call delay

call delay

call delay

goto tugas

 

delay

clrf TMR0            ; bersihkan reg.timer (00h)

bcf INTCON,2     ; bersihkan bendera sela timer overflow (TOIF)

bsf INTCON,5     ; set pengaktif sela  ( TOIE )

cek_overflow

btfss INTCON,2   ; terjadi overflow?

goto cek_overflow

bcf INTCON,5      ; clear bit TOIE

bcf INTCON,2      ;  clear bit TOIF

return                     ; kembali dari subrutin delay

end;

 

 

 

Menggunakan Counter

Konsep penggunaan counter sebenarnya masih sama dengan penggunaan timer, hanya saja yang berbeda adalah sumber detaknya. Kalau pada timer sumber detaknya berasal dari internal ( Fosc/4 ), namun pada pemakaian counter sumber detaknya adalah dari luar ( eksternal ) yaitu pada pena RA4 (TOCKI).

 

penggunaan counter

Gambar  Penggunaan Counter

 

Untuk membuat sebagai fungsi Counter, maka bit TOCS ( TMR0 Clock Source Select Bit ) harus di set ( diberi logika 1 ). Setelah itu baru diatur bit TOSE ( TMR0 Source Edge Select Bit ). Jika bit TOSE = 1 maka hitungan counter terjadi pada sisi turun (            )  , namun jika bit TOSE = 0 hitungan counter terjadi pada sisi naik (              )  .

Berikut contoh program untuk menunjukkan kerja dari counter. Counter akan dinaikkan hitungannya dengan cara menekan tombol yang terhubung dengan pena RA4. Adapun gambar alatnya adalah sbb.

 

percobaan counter

 

Gambar  Percobaan untuk counter

 

Pada gambar diatas sebuah saklar dihubungkan dengan pena RA4/TOCKI yang merupakan masukan detak luar untuk counter.  Terlihat bahwa jika saklar tidak ditekan maka akan berlogika tinggi dan akan berubah menjadi logika rendah jika saklar ditekan. Sehingga kita pilih bit TOSE=1. Dan karena kita akan fungsi-kan sebagai counter, maka bit TOCS=1.

Jika kita tekan tombol, maka hitungan counter akan naik dan diperlihatkan sebagai nyala-padamnya LED sebagai visualisasinya. Adapun program lengkapnya adalah sebagai  berikut ini.

 

;——————————————————————

;Nama Progam : coba7.asm

;Tanggal           : 22 Maret 2008

; Keterangan    :  Visualisasi fungsi Counter

; Revisi            :

;——————————————————————-

 

processor 16f84

 

STATUS          EQU 03h

TRISA             EQU 85h

TRISB             EQU 86h

PORTA           EQU 05h

PORTB            EQU 06h

OPTION_REG EQU 81h

TMR0              EQU 01h   ;Timer/Counter

RP0                 EQU 5

PDel0               EQU 0Ch     ; alamat RAM

PDel1               EQU 0Dh     ; alamat RAM

PDel2               EQU 0Eh     ; alamat RAM

 

 

org 00h

 

;————————————————————

inisialisasi_port

bsf STATUS,RP0    ; ke bank 1

movlw b’11111′       ; isi W-reg dengan 11111b

movwf TRISA        ; copy isi W ke TRISA

 

movlw b’00000000′ ; isi W dengan 00H

movwf TRISB        ;  copy isi W ke TRISB

 

bcf STATUS,RP0    ; ke bank 0

 

;—————akhir inisialisasi_port———————-

 

inisialisasi_counter

bsf STATUS,RP0       ; ke bank 1 lagi

movlw b’10110000′     ; TOSE=1 TOCS=1

movwf OPTION_REG

bcf STATUS,RP0       ; ke bank  0 lagi

clrf TMR0                   ; hapus isi timer/counter

loop

movf TMR0,0             ; copy isi reg-TMR0 ke W-register

movwf PORTB           ; isi W-reg dicopy ke PORTB

goto loop                ; menuju label loop

 

end                         ;  akhir program

 


  • Share/Bookmark
Categories: TIMER / COUNTER Tags: