isi laporan mikro kelompok
TRANSCRIPT
PERCOBAAN I
MENGHIDUPKAN LED MELALUI KANAL PARAREL
1.1 TUJUAN
Memahami bagaimana menghidupkan (sekaligus mengendalikan)
beberapa LED melalui Port Pararel dengan berbagai macam kombinasi.
1.2 PERALATAN YANG DIGUNAKAN
1. Kit Modul Praktikum
2. Komputer
3. Kabel Penghubung Ke Komputer
1.3 TEORI
Rangkaian minimum untuk menghidupkan 8 LED melalui Port 1
ditunjukkan pada gambar 1.1. Yang perlu diperhatikan adalah konfigurasi
rangkaian LED itu sendiri yaitu Common Anode (CA), artinya untuk
menghidupkan LED pada Port 1 yang bersangkutan harus dikirim atau ditulis
logika ‘0’, jika ‘0’ kita tulis ke Port ‘0’ maka keluaran dari lacth yang akan
menghidupkan LED sehingga baik kaki Port ‘0’ maupun resistor Pullup internal
akan di Pulled-Low (secara internal juga), sehingga LED yang terhubung secara
Common Chatode (CC), maka untuk menyalakan LED butuh penulisan ‘1’namun
penulisan ‘1’ini menyebabkan port 0 menjadi masukan berimpedansi (karena
adanya resistor Pullup internal) dan hanya cocok untuk masukan bukan keluaran
(arus dari Pullup internal tidak kuat untuk menyalakan LED karena ordenya µA,
sedangkan keluarannya bisa mencapai sekitar 3,8 mA). Hal ini berlaku juga untuk
Port 2 dan Port 3. penggunaan resistor 330 Ohm sebagai pembatas arus, dengan
tegangan Vcc 5 Volt maka arusnya sekitar 15 mA dan ini cukup untuk
menghidupkan LED (biasanya sekitar 10 mA).
Pengendalian LED dengan Mikrokontroller pada dasarnya adalah
mengatur variasi bilangan biner pada port yang digunakan sebagai output
pengendali LED. Pada modul ini LED dihubungkan dengan port 1 dengan alamat
80H, sehingga jika kita ingin menyalakan semua LED maka kita harus
1
mengirimkan data 0FFH ke alamat 80H dan jika kita ingin mematikan semua
LED maka kita harus mengirimkan data 00H ke alamat 80H.
Untuk menyalakan LED dengan variasi tertentu maka kita harus
mengirimkan data ke alamat 80H sesuai dengan bobot LED yang akan
dinyalakan. Misalnya LED yang akan dinyalakan adalah LED paling kiri
(bobotnya adalah 80H) dan LED paling kanan (bobotnya adalah 01H) maka data
yang harus dikirim adalah 80H + 01H = 81H.
Gambar 2.1. Rangkaian Aplikasi Menghidupkan LED Melalui Kanal Pararel
2
80H 40H 20H 10H 08H 04H 02H 01H
Gambar Susunan LED dan nilai dalam Hexa
1.4 PROGRAM-PROGRAM
1.4.1 Program Empat LED mati Hidup Secara Bergantian
$include(reg51.inc)
; ------------------------------------
; Lampu Flip Flop Pada Port 1
; ------------------------------------
Org 0h
Mulai : Mov P1,#00001111B ; LED P1.4 s/d P1.7 Nyala
Call Delay ; Panggil subrutine Delay
Mov P1,#11110000B ; LED P1.1 s/d P1.3 Nyala
Call Delay
Sjmp Mulai
; -------------------------
; Sub Runtine Delay
; -------------------------
Delay :
Mov R0,#5 ; Isi register R0 dengan 5
Delay1 : Mov R1,#255
Delay2 : Mov R2,#0
Djnz R2,$
Djnz R1, Delay2 ; Kurangi R1 dengan 1, bila hasil
Belum sama dengan 0 maka lompat
Ke Delay2
Djnz R0, Delay1 ; Kurangi R1 dengan 1, bila hasil
Belum sama dengan 0 maka
lompat
ke Delay1
Ret ; Kembali ke alamat setelah perintah
‘ACALL DELAY’
End
3
Tabel Kebenaran
LED D7 D6 D5 D4 D3 D2 D1 D0
Kondisi
0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0
Keterangan :
0 = Lampu Kondisi Nyala
1 = Lampu Kondisi Padam
1.4.2. Program Untuk Membuat LED Menyala Bergantian (Bergeser)
Dari P1.0 Ke P1.7
$include(reg51.inc)
; ----------------------------------------------------------
; Lampu Flip Flop Geser satu per satu
; ----------------------------------------------------------
Org 0HIni: Mov a,#11111110BLagi: Mov P1,a
Call DelayR1 aCjne a,#0feh,Lagi
Mula: rr aMov P1,aCall DelayDjne a,#0feh,MulaSjmp ini
Delay: Mov r0,#5Delay1: Mov r1,#155Delay2: Mov r2,#0
Djnz r2,$Djnz r1,Delay2Djnz r0,Delay1RetEnd
4
Tabel Kebenaran
LED D7 D6 D5 D4 D3 D2 D1 D0
Kondisi
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 1
1 1 1 1 1 0 1 1
1 1 1 1 0 1 1 1
1 1 1 0 1 1 1 1
1 1 0 1 1 1 1 1
1 0 1 1 1 1 1 1
0 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 0
Keterangan :
0 = Lampu Kondisi Nyala
1 = Lampu Kondisi Padam
1.4.3. Menghidupkan Lampu LED secara serempak
$include(reg51.inc)
; ----------------------------------------------------------
; Lampu Flip Flop nyala serempak
; ----------------------------------------------------------
Org 0HIni: Mov a,#11111111BLagi: Mov P1,a
Call Delaydec aCjne a,#0,Lagi
5
Mulai: mov p1,aCall Delayinc aDjne a,#11111111B,Mulai 1Sjmp mulai
Delay: Mov r0,#5Delay1: Mov r1,#20Delay2: Mov r2,#0
Djnz r2,$Djnz r1,Delay2Djnz r0,Delay1RetEnd
Tabel Kebenaran
LED D7 D6 D5 D4 D3 D2 D1 D0
Kondisi 0 0 0 0 0 0 0 0
Keterangan :
0 = Lampu Kondisi Nyala
1 = Lampu Kondisi Padam
Tugas
Buat program nyala lampu bergerak ketengah kembali ke posisi awal
Jawab :
Program Menyalakan LED Agar Bergerak Ke Tengah atau Kembali
Ke Posisi Awal
$include(reg51.inc)
; ----------------------------------------
; Lampu dari Tengah ke Port 1
; ----------------------------------------
Org 0h
Mulai : Mov P1,#11100111B ; LED P1.3 dan P1.4 Nyala
Call Delay ; Panggil subrutine Delay
Mov P1,#11011011B ; LED P1.2 dan P1.5 Nyala
6
Call Delay
Mov P1,#10111101B
Call Delay
Mov P1,#01111110B
Call Delay
Mov P1,#10111101B
Call Delay
Mov P1,#11011011B
Call Delay
Sjmp Mulai ; Lompat ke alamat dengan label
mulai
-------------------------
; Sub Runtine Delay
; -------------------------
Delay :
Mov R0,#5 ; Isi register R0 dengan 5
Delay1 : Mov R1,#0FFh ; Isi register R1 dengan FF ( Hex)
Delay2 : Mov R2,#0
Djnz R2,$
Djnz R1, Delay2 ; Kurangi R1 dengan 1, bila hasil
Belum sama dengan 0 maka lompat
Ke Delay2
Djnz R0, Delay1 ; Kurangi R1 dengan 1, bila hasil
Belum sama dengan 0 maka
lompat ke Delay1
Ret ; Kembali ke alamat setelah perintah
‘ACALL DELAY’
End
7
Tabel KebenaranLED D7 D6 D5 D4 D3 D2 D1 D0
Kondisi
1 1 1 0 0 1 1 1
1 1 0 1 1 0 1 1
1 0 1 1 1 1 0 1
0 1 1 1 1 1 1 0
1 0 1 1 1 1 0 1
1 1 0 1 1 0 1 1
1 1 1 0 0 1 1 1
Keterangan :
0 = Lampu Kondisi Nyala
1 = Lampu Kondisi Padam
8
PERCOBAAN II
MENAMPILKAN HURUF DENGAN SEVEN SEGMENT
2.1 TUJUAN
Memahami bagaimana membuat suatu huruf menggunakan seven segmen
dengan berbagai macam kombinasi tampilan.
2.2 PERALATAN YANG DIGUNAKAN
1. Kit Modul Praktikum
2. Komputer
3. Kabel Penghubung Ke Komputer
4. Seven segment
2.3 TEORI
2.3.1. DISPLAY ( SEVENT SEGMENT )
Display / tampilan merupakan sarana hubungan antara MCU dengan user,
layaknya sebuah layer monitor pada sebuah PC, dengan display dapat ditampilkan
hasil kerja dari MCU, status dari sensor atau actuator atau bentuk-bentuk tampilan
yang menarik, seperti huruf berjalan dan sebagainya.
1. Seven Segment antar muka parallel
Display paling sederhana adalah LED, hanya dapat ditampilkan state hi
atau lo dalam bentuk lampu LED yang hidup atau mati. Untuk menampilkan
numeris dikenal adanya 7 segment display, yang sebenarnya adalah 7 buah LED
yang disusun sedemikian rupa sehingga membentuk angka 8, ditambahkan 1 LED
bulat kecil untuk dot(titik), untuk menghidupkan ruas-ruas LED tersebut sama
dengan led tunggal yaitu memberi arus sekitar 10-20mA dari anoda ke katoda,
untuk membentuk angka, diperlukan kombinasi penyalaan LED sesuai dengan
angka yang akan ditampilkan.untuk7 segment dikenal adanya common anoda
semua anoda(anoda bersama) atau common cathode, dimana pada commonanoda
semua anoda LED dijadikan satu, sehingga untuk menghidupkan satu ruas LED
diperlukan tegangan yang negative. Tiap segment diberi notasi huruf a,b,c,d,e,f
dan g, serta dt untuk dot. untuk mentest atau mengetahui kaki-kaki pin mana yang
9
sesuai dengan ruas a,b,c,… dapat digunakan multitester yang diset pada posisi
ohmmeter jangkauan terendah,atau pada posisi test dioda. Multitester analog arus
dari probe hitam ke probe merah, sedangkan multimeter digital sebaliknya, aliri
arus dari anoda ke katoda,segemen LED akan menyala. Dalam perkembangannya
dua atau tiga segment dijadikan satu kemasa sudah dapat diperoleh dipasaran.
Gambar3.1 Display 7 Segment
Gambar dibawah memperlihatkan koneksi MCU AT89C2051 dengan satu
7 segment, dimana digunakan tambahan IC 74LS48 yang merupakan konvektor
BCD ke segment. Data pada P1;00d hingga 09d akan menyalakan display angka 0
hingga 9, sedangkan setelah 9, apa yang ditampilkan di 7 segment dapat dilihat
pada datasheet IC TTL 74LS48.
10
Gambar3.2 Koneksi Segment melalui IC 74LS48N
Untuk menghemat komponen, IC 74LS48 dapat dihilangkan, tetapi akan
ada kerugian yaitu pengurangan jumlah pin I/O yang tersedia untuk keperluan lain
dan software akan sedikit lebih rumit. Rutin software harus digunakan cara
lookup table atau melihat tabel, karena tidak ada rumusan yang tepat yang dapat
digunakan untuk mengkonversi BCD ke 7 segment.
Gambar Koneksi 7 Segment tanpa IC decorder 74LS48
;Program 12.5 : rutin ubah biner A ke 7 SegmentAto7S:
INC A ;Dibawah RET lokasi loopup tablenya.MOVC A,@A+PC ;A dirubah dengan data 7 SegmentRETgfedcbaDB 11000000b ;0DB 11111001b ;1
11
DB 10100100b ;2DB 10110000b ;3DB 10011001b ;4DB 10010010b ;5DB 10000010b ;6DB 11111000b ;7DB 10000000b ;8DB 10010000b ;9
Rutin 12.5 adalah mengubah nilai di A menjadi tampilan 7 segment,
sebagai contohnya; apabila A berisi 05d,maka melalui rutin 1A to7S akan menjadi
10010010b, bila nilai A dikirim ke P1, maka yang menyala adalah segment
a,b,c,d,f dan g (perhatikan segment yang menyala adalah yang diberi state to) Bila
dikehendaki lebih dari satu digit, mislanya diperlukan 3 digit untuk
bisamenunjukkan hingga 999, maka koneksi masing-masing segment ke MCU
secara langsung menjadi tidak efektif lagi, lagipula jumlah pin bisa tidak
mencukupi untuk keperluan tersbut. Cara yang biasa dipakai untuk solusi kasus
ini dengan multiplexing. Multiplexing display mirip multiplexing keyboard, untuk
jelasnya diperlihatkan pada gambar 3.3.
Gambar3.3 Multiplexing display
dan seterusnya kendali digit mana yang diaktifkan dilakukan oleh
transistor Q1 sd Q3 yang berfunsi sebagai saklar yang mengalirkan arus common
anoda. Bila Q1 yang aktif (dengan membuat P3.4 lo) dan yang lain tidak, maka
hanya digit 1 saja yang menyala, demikian juga untuk digit 2 dan 3.
12
Pengaktifan digit dilakukan bergantian, tidak boleh dalam waktu yang bersamaan,
dua atau lebih digit yang aktif, digit 1, digit 2, digit 3 dan kembali ke digit 1 lagi
dan seterusnya, berputar.
Dengan waktu pergantian pengaktifan (scanning) digit yang besar, akan
terlihat pengaktifan digit berjalan bergantian, seperti lampu berjalan bila waktu
dipersingkat pergantian menjadi semakin cepat dan pada waktu yang tepat, akan
kelihatan sepertnya semua digit menyala, seakan-akan tidak ada proses scanning
lagi. Ini terjadi karena adanya soifat remanensi dari mata manusia yang tetap
dapat mengimajinasikan bayangan suatu benda dalam waktu singkat etelah benda
tersebut tidak ada dan juga bahwa LED yang tidak diberi arus, masih
memancarkan cahaya dalam waktu singkat. Waktu scanning dapat ditentukan
dengan menunda pengaktifan antar digit, dengan program tunda.pentapan waktu
scanning yang terlalu cepat justru akan mengurangi intensitas dari 7 segment.
Jika dibandingkan dengan koneksi langsung tanpa multiplexing, intensitas
cahaya LED lebih redup, karena sebenarnya LED-LED tersebut berkedip, cara
seperti inilah yang digunakan pada system tampilan huruf berjalan, yang
digunakan untuk iklan-iklan ditoko-toko. System display 7 segment multiplexing
juga memerlukan software yang relative lebih rumit.
;Program 12.6, menghidupkan 123 pada segment dengan cara mux $mod51;8051 module
ORG 0000HAJMP STARTORG 0100H
START:mov a,#01 ;angka 1, pada digit 3acall Ato7S ;konversi ke 7 segmentsetb P3.4 ;aktifkan digit 3, lainnya tidaksetb P3.5clr P3.7mov P1,a ;data a ke p1acall delay ;penundaan antar digit (waktu scan)
mov a,#02 ;angka 2, pada digit 2acall Ato7Ssetb P3.4setb P3.5clr P3.7mov P1,aacall delay
13
mov a,#03 ;angka 3, pada digit 3acall Ato7Ssetb P3.4setb P3.5clr P3.7mov P1,aacall delay
ajmp start ;berputar kembalidelay: MOV R2,#0FH ;penundaan dapat ditunda atauDell: Mov R1, #0FFH ;dikurangi dengan merubah nilai R@ danR!DJNZ R1, $ ;disini....DJNZ R2,Dell RETAto7S: ;listing seperti P12.5ret
END
Suatu system MCU tentunya buanhanya menampilkan hasil olahan atau
menampilkan 123 seperti program diatas saja.menampilkan data hanyalah
sebagian dari rutin system MCU, kerja utama adalah mengambil data, melakukan
proses dan menampilkan hasil,misalnya membaca ADC, membandingkan dengan
referensi, menampilkan hasil atau melakukan tindakan tertentu, ini adalah
program utamanya.
Jika ‘program utama’ digunakan untuk tampilan, maka program utama yang
sebenarnya dapat diletakan pada rutin interupsi, misalnya interupsi timer
diaktifkan, setiap setengah detik akan diinterupsi, rutin interupsi membaca data
dan membandingkan atau mengolahnya, selesai interupsi, kembali ke program
utama, yaitu menampilkan hasil dengan cara multileksing.
System pemrograman juga dapat dibalik, program utama melakukan pembacaan
ADC dan mengolahnya, sedangkan system interupsi menggunakan timer, setiap
sekian milidetik diinterupsi untuk menyalakan digit ke 1, interupsi berikut
menyalakan digit ke 2 dan seterusnya. Penggunaan system interupsi harus
memperhatikan stack pointer.
14
2. Seven Segment antar muka Serial
Antar muka parallel, minimal memerlukan 7 saluran IO, untuk menghemat
IO, dapat dilakukan cara serial, beberapa metode dijelaskan berikut ini.
IC CMOS 4553 (Three-digit BCD Counter) adalah counter BCD 3 digit, dapat
mencacah pilsa dari 0 hingga 999, kemudian kembali ke 0 lagi dengan
memberikan sinyal OF (Over Flow, pin 14), hasil cacah iniditampilkan secara
multiplexer dalam format BCD, melalui 4511BCD tersebut dapat diubah menjadi
format 7 segment, seperti yang diperlihatkan pada gambar dibawah ini. Dengan
demikian hasil cacah dapat ditampilkan secara langsung sudah dalam format BCD
di 7 segment. Dengan koneksi 3 pin saja ke sistem MCU, rangkaian ini sudah
dapat menampilkan 3 digit BCD display, tanpa harus MCU melakukan scaning
display seperti yang telah dijelaskan sebelumnya.
Gambar3.4 Display 3 digit dengan 4553
Rangkain ini dapat dikaskadekan dengan rangkaian serupa, dengan clock pada
tingkat berikutnya yang berasal dari pinOF.dengan demikian dapat menjadi 6
digit, 9 digit dan seterusnya. Begitu dreset (aktif hi), counter akan menjadi 000.
setiap ada pulsa masuk (negative edge) counter akan meningkat 1, agar proses
pencacahan tidak terlihat di display, sebaliknya pada proses pencacahan LATCH
diaktifkan (aktif hi), baru setelah selesai mencacah, LATCH di non aktifkan.
Jika ingin menampilkan isi register A dalam display tipe ini, maka harus
dibuat program untuk membangkatkan pulsa clock sejumlah isi register A, atau
dengan logaritma sebagai berikut :
15
Latch aktif
Berikan sinyal reset sebentar (lo –hi- lo)
Beri clock sejumlah isi register A.
Latch tidak aktif (data ditransfer ke display) sebentar (hi-lo-hi).
Jika dikehendaki untuk menampilkan data yang lebih dari 255 diperlukan
register pasangan A dan B menggunakan register DPTR. Perhatikan bahwa
system MCU tidak perlu untuk melakukan scanning display,begitu data ini
ditampilkan, cukup sekali mengirim data melalui prosedur tersebut. Program 15.7
contoh rutin menampilkan isi register A pada 3 digit display.
;p12.7 rutin menampilkan isi register A;CLOCK, LATCH dan RESET harus didefinisikan dahulu didepan;pada IO yang mana.
TDDISPL:setb LATCHsetb CLOCKCLR RESETsetb RESETClr RESET
CLLOOP:DJNZ Acc,USAICLR CLOCKSETB CLOCKSJMP CLLOP
USAI:CLR LATCHSETB LATCHRET
Untuk kota – kota besar mencari IC CMOS 4553, relative lebih mudah dan
murah, untuk kota-kota kecil, kemungkinan sulit, atau jika ada harganya mahal.
Rangkaian display alternative yang lain diperlihatkan pada gambar dibawah ini,
dimana jenis komponenya lebih mudah dicari dipasaran
16
Gambar3.5 Display 3 digit dengan 4094
IC 4094 adalah 8 stage shift register, data diisikan secara serial dan
didorong oleh clock (positif edge), outputnya parallel. Dalam contoh nible rendah
dari data digunakan untuk pemilihan digit, ssedangkan nible tinggi digunakan
untuk data binernya. Jika register Ahendak ditampilkan pada display, data perlu
diramu lebih dahulu untuk dapat ditampilkan secara benar pada digit tertentu.
Program P12.8 adalah contoh program menampilkan 1234 pada display.MCU
perlu melakukan scanning display untuk menampilkan seluruh digit.
;p12.8 test scanning 7 segment dg shift register.sdata equ 96h ;P1.6 dataclock equ 97h ;P1.7PStart equ 0000h ;program start
$mod51 ;8051 moduleORG PstartAJMP STARTORG Pstart+30
START:mov SP,#30Hmov P1,#0
START1: mov a,#00001000b ;angka 0 pada digit 4acall trasferacall delay
mov a,#00010100b ;angka 1 pada digit 3acall trasferacall delay
17
mov a,#00100010b ;angka 2 pada digit 2acall trasferacall delay
mov a,#00110001b ;angka 1 pada digit 1acall trasferacall delayAJMP START1
transfer: mov R7,#8trloop: RRC a
mov sdata,Csetb clockclr clockdjnz r7,trloopret
Delay: MOV R2,#08Dell: MOV R1,#250
DJNZ R1,$DJNZ R2,DellRET
END
Intersil (sekarang bagian dari Harris Semiconductor), terkenal dengan
produk-produk driver untuk display, banyak IC digunakan pada multitester digital
3.5 digit yang berupa ADC yang langsung dapat dikoneksikan dengan LCD atau
LED. Salah produk driver untuk LED adalah ICM7218D,yang mungkin agak sulit
untuk mendapatkan dipasaran di Indonesia.
ICM7218D adalah multiplexed display driver yang dapat mengemudikan hingga
8 digit secara multiplexing secara otomatis (jadi MCU tidak perlu melakukan
multiplexing display). 7 segment yang digunakan adalah type Common Cathoda,
dimanatiap katodanyadihubungkan langsung dengan kendali digit pada IC7218D
(D1 sd D8).tiap-tiap segmen pada semua digit diparalel, temasuk decimal point
dp(titik)dan dihubungkan dengan kendali segmen pada IC7218D. tiap digit dapat
dicatu rata-rata 25 mA,tetapi apabila semua segment menyala (angka 8 +DPt),
arus total yang diperlukan adalah 150 mA.
18
Gambar3.6 Display 3 digit dengan 7218
Kendali input adalah Id3…ID0 berupa digit biner yang akan ditampilkan pada
digit yang dikendalikan oleh DA2…DA0, misalnya akan menampilkan angka 3
pada digit 1, maka ID3…ID0 = 0011b dan DA2 … DA0 = 000b. jika dp ingin
dihidupkan, maka ID7 = 1b. penulisan data diberikan algoritma sebagai berikut.
1. Siapkan data yang akan ditampilkan pada ID3…Id0
2. Siapkan alamat digit mana yang akan diaktifkan pada DA2…DA0
3. Berikan pulsa write (aktif lo) selama minimal 400 nS.
4. Setelah pulsa write kembali hi, berikan tunda minimal 125 nS untuk
penulisan pada digit yang lain.
Pin 9 digunakan untuk MODE dari IC7218D dimana, mode tersebut adalah :
1. Hi untuk mode HEX (0123456789ABCDEF)
2. Hi-z untuk mode CODE B (0123456789-EHLP)
3. Lo untuk mode OFF
Koneksi ke MCU bisa digunakan P10…P1.7 untuk ID0 …ID3,ID7 dan DA0…
DA2. P3.7 untuk HEXA/CODE dan P3.5 untuk write. Penggunaan I/O lain juga
dimungkinkan dan apabila tidak digunakan, seperti DP dan mode, pin dapat
dihubungkan dengan logika lo atau hi langsung, sesuai kebutuhan, dengan
demikian menghemat I/O pada MCU.
19
2.4 PROGRAM - PROGRAM
2.4.1 Program 7-segmen menampilkan huruf – HALINE- secara bergantian :
$include(reg51.inc)
; --------------------------------------------------------------
; Menampilkan huruf –HaLine- secara bergantian
; -------------------------------------------------------------
Org 0
Mu: Mov p3,#0fdh
Mov p0,#7fh
Call delay
Mov p3,#70h
Mov p0,#0bfh
Call delay
Mov p3,#24h
Mov p0,#0dfh
Call delay
Mov p3,#0bah
Mov p0,#0efh
Call delay
Mov p3,#77h
Mov p0,#0f7h
Call delay
Mov p3,#62h
Mov p0,#0fbh
Call delay
20
Mov p3,#0a0h
Mov p0,#0fdh
Call delay
Mov p3,#0fdh
Mov p0,#0feh
Call delay
Sjmp mu
Delay: mov r0,#5
Delay1: mov r1,#225
Delay2: mov r2,#0
Djnz r2,$
Djnz r1,delay2
Djnz r0,Delay1
Ret
End
Tabel Konversi Hexa ke Biner untuk tampilan 7 segmen
HURUF
8 4 2 1 8 4 2 1 BIL
HEXAC D P A B F G E
- 1 1 1 1 1 1 0 1 0FDH
H 0 1 1 1 0 0 0 0 70H
A 0 1 1 0 0 0 0 0 24H
L 1 0 1 1 1 0 1 0 0BAH
I 0 0 1 0 0 0 0 0 77H
N 0 1 1 0 0 0 1 0 62H
E 1 0 1 0 1 0 0 0 0A0H
- 1 1 1 1 1 1 0 1 0FDH
21
Tabel konversi Hexa ke Biner untuk Common 7 segmen
SEGMEN
8 4 2 1 8 4 2 1 BIL
HEXAD D D D D D D D
- 0 1 1 1 1 1 1 1 7FH
H 1 0 1 1 1 1 1 1 0BFH
A 1 1 0 1 1 1 1 1 0DFH
L 1 1 1 0 1 1 1 1 0EFH
I 1 1 1 1 0 1 1 1 0F7H
N 1 1 1 1 1 0 1 1 0FBH
E 1 1 1 1 1 1 0 1 0FDH
- 1 1 1 1 1 1 1 0 0FEH
2.4.2 Program 7-segmen menampilkan huruf – HALINE- secara serempak
:$include(reg51.inc)
; --------------------------------------------------------------
; Menampilkan huruf –HALINE- secara serempak
; -------------------------------------------------------------
Org 0h
Mulai: Mov DPTR,#Haline
Mov R6,#08h
Mov R1,#7Fh
Ulang: Clr A
Movc A,@A+DPTR
Inc DPTR
Mov P3,A
Mov A,R1
Mov P0,A
RR A
Mov R1,A
Mov R2,#0FFh
Delay: Djnz R2,delay
Mov R0,#0FFh
22
Djnz R6,Ulang
Jmp Mulai
; ==========================
;DATA AREA
; ==========================
Haline
DB 0FDH,70H,24H,0BAh,77H,62H,0A0H,0FDh
End
Tugas
Buat program membuat nama sendiri dengan seven segmen
Jawab :
$include(reg51.inc)
; --------------------------------------------------------------
; Menampilkan huruf – FEbrIan - secara bergantian
; -------------------------------------------------------------
Org 0
Mu: Mov p3,#0FDh
Mov p0,#E8h
Call delay
Mov p3,#70h
Mov p0,#OBFh
Call delay
Mov p3,#60h
Mov p0,#0A8h
Call delay
Mov p3,#38h
Mov p0,#38h
Call delay
23
Mov p3,#31h
Mov p0,#OEAh
Call delay
Call delay
Mov p3,#0FDh
Mov p0,#0FAh
Call delay
Mov p3,#0A0h
Mov p0,#24h
Call delay
Mov p3,#0fdh
Mov p0,#62h
Call delay
Sjmp mu
Delay: mov r0,#5
Delay1: mov r1,#225
Delay2: mov r2,#0
Djnz r2,$
Djnz r1,delay2
Djnz r0,Delay1
Ret
End
24
Tabel Konversi Hexa ke Biner untuk tampilan 7 segmen
HURUF
8 4 2 1 8 4 2 1 BIL
C D P A B F G E HEXA
F 1 1 1 0 1 0 0 0 0E8H
E 1 0 1 0 1 0 0 0 0A8H
b 0 0 1 1 1 0 0 0 38H
r 1 1 1 0 1 0 1 0 0EAH
I 1 1 1 1 1 0 1 0 0FAH
a 0 0 1 0 0 1 0 0 24H
n 0 1 1 0 0 0 1 0 62H
- 1 1 1 1 1 1 0 1 0FDH
Tabel konversi Hexa ke Biner untuk Common 7 segmen
SEGMEN
8 4 2 1 8 4 2 1 BIL
HEXAD D D D D D D D
F 0 1 1 1 1 1 1 1 0FDH
E 1 0 1 1 1 1 1 1 70H
b 1 1 0 1 1 1 1 1 0A0H
r 1 1 1 0 1 1 1 1 62H
I 1 1 1 1 0 1 1 1 34H
a 1 1 1 1 1 0 1 1 0FCH
n 1 1 1 1 1 1 0 1 77H
- 1 1 1 1 1 1 1 0 0FDH
25
PERCOBAAN III
MENAMPILKAN TULISAN PADA LCD
3.1 TUJUAN
Memahami bagaimana membuat suatu huruf menggunakan seven segmen
dengan berbagai macam kombinasi tampilan.
3.2 PERALATAN YANG DIGUNAKAN
1. Kit Modul Praktikum
2. Komputer
3. Kabel Penghubung Ke Komputer
4. LCD
3.3 TEORI
Sebagai tampilan data yang telah diproses oleh mikrokontroller maka
dibutuhkan suatu perangkat display yang berfungsi sebagai alat penampil data.
Diharapkan dengan adanya display ini pengguna dapat mengetahui data – data
hasil proses sesuai dengan yang dikehendaki.
Suatu perangkat display yang siap pakai dan mudah didapat serta banyak dipakai
adalah LCD dot matrik 2 x 16 karakter, jenis LCD ini mudah dalam
penggunaanya. Dalam perencanaan dan pembuatan alat ini digunakan LCD tipe
M1632 dari Seiko Instument.
Struktur pin – pin dan cara pengaksesannya pada LCD M1632 dijelaskan pada
table berikut ini :
Tabel 2-3 Definisi Pin LCD Modul M1632
Pin No Simbol Level Keterangan
1 Vss Power Supplay
2 Vcc
3 Vee
4 RS H/L H : Data Input L : Instruction Input
5 R/W H/L H : Read
L : Write
6 E H/L H : Enable
26
L : Disable
7 DB0 H/L
DATA BUS
8 DB1 H/L
9 DB2 H/L
10 DB3 H/L
11 DB4 H/L
12 DB5 H/L
13 DB6 H/L
14 DB7 H/L
15 V + BL Back Light supplay
16 V - BL
Instruksi – instruksi untuk dapat mengakses LCD tipe M 1632 dijelaskan pada
table dibawah ini :
Tabel Perintah Dalam Pengaksesan LCD
Instruksi
Code
FungsiRS R
/
W
D
B
7
D
B
6
D
B
5
D
B
4
D
B
3
D
B
2
D
B
1
D
B
0
Disply clear 0 0 0 0 0 0 0 0 0 1 Clear display dan cursor pada Add 0
Cursor home 0 0 0 0 0 0 0 0 1 X Kursor ke add 0
Entry mode set 0 0 0 0 0 0 0 1 I/D S Pemakai mode pada LCD
Display
ON/OFF
0 0 0 0 0 0 1 D C B Menset tampilan display
Cursor/Display
Shift
0 0 0 0 0 1 S/
C
R/
L
X X Gerakan kursor tanpa merubah DD RAM
Function Set 0 0 0 0 1 DL 1 X X X Untuk
27
menset lebar data yang akan digunakan
CG RAM
Address set
0 0 0 1
ACG
Digunakan untuk pengisian CG Ram
DD RAM
Address set
0 0 1
ADD
UntukPengisian DD Ram
Tulis data ke
CG Ram
1 0
Data
Perintah untuk penulisan data ke DD atau ke CG RAM
Baca data dari
CG atau DD
Ram
1 1
Data
Perintah untuk membaca data dari CG Aatau DD Ram
ACG : CG RAM Address B = 1 : Blink On
ADD : DD RAM Address B = 0 : Blink Off
I/D = 1 : Increment S/C = 1 : Display shift
I/D = 0 : Decrement S/C = 0 : Cursor Movement
S = 1 : Display Shift R/L = 1 : Right Shift
S = 0 : No Display Shift R/L = 0 : Left Shift
D = 1 : Display On DL = 1 : 8 bit data
D = 0 : Display Off DL = 0 : 4 bit data
C = 1 : Cursor On
C = 0 : Cursor Off
28
3.4 PROGRAM - PROGRAM
Program Demo untuk menjalankan LCD :
$include(reg51.inc)
;---------------------------------------------------------
;Program Demo untuk menjalankan LCD 16 x 2
;Character FN ; HL 18.H51
;---------------------------------------------------------
;
org 0h
nop
ljmp mulai
;
write_inst.
mov P1,#0h
mov P0,R1
setb P1.0
clr P1.0
acall delay
ret
;
write_data:
mov P1,#01
mov P0,R1
setb P1.0
clr P1.0
acall delay
ret
;
delay: mov R0,#02
delay1: mov R5,#50H
djnz R5,$
DJNZ R0,delay1
ret
29
;
Ldelay: mov R2,#030h
Ld1: acall delay
djnz R2,Ld1
ret
;
tulis: mov R4,#3
mov DPTR,#Haline
barisa;mov R3,#16
mov R1,#80h
acall write_inst
tulis1: clr A
mov A,@A+DPTR
mov R1,A
Inc DPTR
acall write_data
djnz R3,Tulis1
;
barisb;mov R3,#16
mov R1,#0C0h
acall write_inst
tulis2: clr A
mov A,@A+DPTR
mov R1,A
Inc DPTR
acall write_data
djnz R3,Tulis2
acall Ldelay
djnz R4barisa
ret
;
mulai:
mov R1,#03Fh
acall write_inst
30
acall write_inst
mov R1,#0Dh
acall write_inst
mov R1,#06h
acall write_inst
mov R1,#01h
acall write_inst
mov R1,#0Ch
acall write_inst
acall tulis
sjmp mulai
;
Haline: DB 'SELAMAT DATANG'
DB 'Sdr Teguh dkk'
DB 'di.D.Maninjau'
DB 'Mo.58 Sawojajar'
DB 'MALANG INDONESIA'
DB 'Phone/Fax 719418'
End
Tugas
Membuat Identitas diri kedalam LCD
Jawab :
;---------------------------------------------------------
;Program Demo untuk menjalankan LCD 16 x 2
;Character FN ; HL 18.H51
;---------------------------------------------------------
;
org 0h
nop
ljmp mulai
;
write_inst.
31
mov P1,#0h
mov P0,R1
setb P1.0
clr P1.0
acall delay
ret
;
write_data:
mov P1,#01
mov P0,R1
setb P1.0
clr P1.0
acall delay
ret
;
delay: mov R0,#02
delay1: mov R5,#50H
djnz R5,$
DJNZ R0,delay1
ret
;
Ldelay: mov R2,#030h
Ld1: acall delay
djnz R2,Ld1
ret
;
tulis: mov R4,#4
mov DPTR,#Haline
barisa;mov R3,#16
mov R1,#80h
acall write_inst
tulis1: clr A
mov A,@A+DPTR
mov R1,A
32
Inc DPTR
acall write_data
djnz R3,Tulis1
;
barisb;mov R3,#16
mov R1,#0C0h
acall write_inst
tulis2: clr A
mov A,@A+DPTR
mov R1,A
Inc DPTR
acall write_data
djnz R3,Tulis2
acall Ldelay
djnz R4barisa
ret
;
mulai:
mov R1,#03Fh
acall write_inst
acall write_inst
mov R1,#0Dh
acall write_inst
mov R1,#06h
acall write_inst
mov R1,#01h
acall write_inst
mov R1,#0Ch
acall write_inst
acall tulis
sjmp mulai
;
Haline: DB 'SELAMAT DATANG'
33
DB ’Teknik Elektro’
DB 'Febrian Dwi Cahyo'
DB '081020100020’
DB 'Universitas'
DB ‘Muhammadiyah’
end
PERCOBAAN IV
34
PENGENDALIAN MOTOR
4.1 TUJUAN
Memahami dan menguasai teknik-teknik dasar perancangan rangkaian
driver dan penggunaan stepper motor sebagai alat penggerak/pemutar dalam suatu
sistem peralatan kontrol yang diatur oleh sistem mikrosessor atau mikrokontroller
serta dapat membuat atau memanipulasi program untuk memutar stepper motor.
4.2 PERALATAN YANG DIPERLUKAN
Kit Modul Praktikum
Komputer
Kabel Penghubung ke Komputer
4.3 TEORI
Stepper motor adalah salah satu type motor yang sangat populer
digunakan sebagai penggerak/ pemutar peralatan – peralatan industri, misalnya
instrumentasi, komputer (disk drive & hard disk), printer, kontrol posisi pada
mesin / robot dan lain-lain untuk kebutuhan daya yang relatif rendah. Tetapi
keunggulan dibanding type motor yang lain ialah ia dapat memutar sampai pada
taraf derajat pada putaran rotornya. Prinsip kerja stepper motor ini dengan DC
motor, yaitu dicatu dengan tegangan DC untuk memperoleh medan magnet pada
lilitan-lilitan atau kutub statornya. Bila DC motor memiliki magnet tetap pada
rotor.
Suatu stepper motor biasanya cukup dinyatakan dengan
spesifikasi :”berapa phasa”,”berapa derajat per step”,”berapavolt tegangan catu
untuk lilitan dan “berapa ampere meter/mili meter untuk tiap liliotan”. Suatu
contoh stepper motor: 4 phasa, 1 S derajat / step, 12 V, 1 A. stepper motor ini
memiliki 4 buah lilitan pada kumparan stator. Masing-masing bila dicatu dengan
tegangan akan menghasilkan medan magnet dengan kutub yang sama pada sisi
yang menghadap ke rotor. Untuk dapat memutar rotor maka lilitan tersebut harus
dicatu dengan tegangan secara bergantian. Medan magnet yang searah akan
bertolakan, medan magnet yang berlawanan arah akan tarik menarik. Rotor akan
35
berputar mengikuti arah penggantian medan magnet yang dihasilkan oleh lilitan-
lilitan tersebut.
Pada prinsipnya ada dua macam cara kerja stepper motor, yaitu full step
dan half step. Lihat tabel dibawah ini.
TABEL 4.1
PEMBERIAN TEGANGAN UNTUK BEKERJA FULL STEP
FULL STEP
TEGANGAN YANG DIBERIKAN PADA LILITAN
ARAH PUTAR
SEARAH JARUM JAM
ARAH PUTAR
MELAWAN JARUM JAM
STEP L3 L2 L1 L0 L3 L2 L1 L0
1
2
3
4
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
1
0
0
1
0
0
1
0
0
1
0
0
0
TABEL 4.2
PEMBERIAN TEGANGAN UNTUK BEKERJA HALF STEP
FULL STEP
TEGANGAN YANG DIBERIKAN PADA LILITAN
ARAH PUTAR
SEARAH JARUM JAM
ARAH PUTAR
MELAWAN JARUM JAM
STEP L3 L2 L1 L0 L3 L2 L1 L0
1
2
3
4
5
6
7
8
1
0
0
0
0
0
0
1
0
1
1
1
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
1
1
1
0
0
0
1
1
1
0
0
0
1
1
1
0
0
0
0
1
1
0
0
0
0
0
1
36
Pada full step, suatu titik pada sebuah kutub magnet di rotor akan kembali
mendapat tarikan medan magnet stator pada lilitan yang sama setelah step ke-4
berikutnya dapat diberikan lagi mulai dari step 1. setiap step rotor bergerak baik
searah atau berlawanan jarum jam sebesar ¼ dari 360 derajat dibagi dengan
jumlah kutub magnet (batangan besi magnet) yang berada di sisi rotor (setiap step
hanya menarik sebuah kutub saja). Tegangan ‘1’ adalah menunjukkan logika
dalam level TTL. Besar tegangan sesungguhnya diatur sesuai spesifikasi stepper
motor yang dipakai. Misalnya dengan menggunakan buser.
Untuk half step, setiap kutub magnet di rotor akan kembali mendapat
tarikan dari medan magnet lilitan yang sama setelah step ke 8 berikutnya dapat
diberikan lagi mulai dari step 1. setiap step posisi rotor berubah sebesar 360/8
derajat dibagi dengan jumlah magnet batang di rotor.
Melihat bahwa pergerakan stepper motor adalah berdasarkan perubahan
logika pada input lilitannya maka menjadi mudah bagi programmer untuk
mengubah arah gerakan dan kedudukan rotor pad aposisi yang akurat. Ini adalah
salah satu keuntungan dari penggunaan stepper motor. Untuk dapat membuat
gerakan yang lebih presisi, biasanya jumlah batang magnet di rotor diperbanyak
dan lilitan dibuat berpasang-pasangan sesuai dengan posisi kutub magnet rotor.
Cara lain adalah dengan menggunakan sistem gear pada poros rotor tanpa
mengubah karakteristik stepper motornya.
4.4 PROGRAM-PROGRAM
4.4.1 Percobaan Motor Putar Kanan
$include(reg51.inc)
;------------------------------------------
Percobaan Motor Putar Kanan
;------------------------------------------
ORG 0H
MOV A,#0fehB
MULAI: MOV P0,a
CALL DELAY
Rl A
37
Sjmp MULAI
Delay : Mov R0,#2
Delay1: Mov R1,10
Delay2: Mov R2,#0
Djnz R2,$
Djnz R1,Delay2
Djnz R0,Delay1
Ret
End
4.4.2 Percobaan Motor Putar ke kiri
$include(reg51.inc)
;------------------------------------------
; Percobaan Motor Putar Kiri
;------------------------------------------
ORG 0H
MOV A,#0fehB
MULAI: MOV P0,a
CALL DELAY
Rr A
Sjmp MULAI
Delay : Mov R0,#2
Delay1: Mov R1,10
Delay2: Mov R2,#0
Djnz R2,$
Djnz R1,Delay2
Djnz R0,Delay1
Ret
End
38
4.4.3 Percobaan Motor Putar Kiri Kanan
$include(reg51.inc)
;------------------------------------------
; Percobaan Motor Putar Kiri Kanan
;------------------------------------------
Org 0H
Mulaki :Mov R3,#200
Mov A,#0feh
Mulai :Mov P1,A
ACALL DELAY
RL A
CJNE A,#7fh,Mulai
DJNZ R7,mulai
Mov R7,#200
Mulia: Mov P0,A
CALL Delay
RR A
CJNE A,#0FEh,Mulia
DJNZ R7,Mulia
Sjmp mula
Delay :Mov R0,#2
Delay1: Mov R1,#10
Delay2: Mov R2,#0
DJNZ R2,$
DJNZ R1,Delay2
DJNZ R0,Delay1
Ret
End
39
Tugas
Menjalankan motor putar kanan 5 kali dan putar kiri 5 kali
selanjutnya motor berhenti.
Jawab :
$include(reg51.inc)
;------------------------------------------
; Percobaan Motor Putar Kiri Kanan
;------------------------------------------
Org 0h
Mulaki :Mov R3,#65
Mov A,#0feh
Mulai :Mov P1,A
ACALL DELAY
RL A
CJNE A,#7fh,Mulai
DJNZ R7,mulai
Mov R7,#65
Mulia: Mov P0,A
CALL Delay
RR A
CJNE A,#0FEh,Mulia
DJNZ R7,Mulia
Sjmp mula
Stop: sjmp stop
Delay :Mov R0,#2
Delay1: Mov R1,#10
Delay2: Mov R2,#0
DJNZ R2,$
DJNZ R1,Delay2
DJNZ R0,Delay1
Ret
End
40
PERCOBAAN V
AD/DA CONVERTER
5.1 Tujuan
Memahami dan menguasai prinsip kerja dan teknik-teknik perancangan
rangkaian ADC/DAC Converter dan penggunaan dalam suatu sistem peralatan
kontrol atau instrumentasi serta dapat membuat dan memanipulasi program untuk
mengoperasikan ADC/DAC Converter.
5.2 Peralatan yang diperlukan
Kit Modul Praktikum
Komputer
Kabel Penghubung ke Komputer
Avo Meter
5.3 Teori
5.3.1 Analog to Digital Converter
Sinyal-sinyal digital secara ideal digambarkan sebagai bentuk gelombang
yang terjadi akibat perubahan antara nilai /parameter yang tertentu. Sinyal-sinyal
yang selalu mempunyai nilai tertentu dalam suatu interval yang kontinyu disebut
sinyal analog. Dalam pemrosesan sinyal-sinyal analog seringkali akan banyak
keuntungan yang didapat dengan mengubah terlebih dahulu ke bentuk digital.
Sebagai contoh misalnya kita melakukan proses untuk menentukan harga dari
tegangan analog yang berupa tegangan DC. Sebuah Voltmeter analog akan
menunjukkan harga dari tegangan tersebut dari sebuah jarum penunjuk pada
skala, sebuah Voltmeter digital akan langsung menunjukkan harga tersebut dalam
bentuk bilangan display. Atau suatu sinyal analog M(t) misalnya output dari
sebuah mikrophon yang berupa sinyal tegangan fungsi dari waktu. Memerlukan
proses untuk ditransmisikan ke sebuah loadspeaker di tempat lain agar noise
(gangguan yang tidak diinginkan) yang selalu menumpang pada sinyal yang
ditransmisikan dapat dikurangi. Cara yang efektif menekan noise adalah
mentransmisikan secara digital. Cara komunikasi yang menggunakan cara seperti
diatas yaitu mengubah sinyal analog ke bentuk digital kemudian
41
mengembalikannya sebagai sinyal analog disebut pulse modulation. Dalam proses
mengubah sinyal analog ke bentuk digital tercakup empat proses yang berurutan
yaitu sampling, holding, quantising dan encoding. Proses-proses ini tidak harus
merupakan operasi yang terpisah. Sampling dan holding dikerjakan secara
bersamaan dalam rangkaian yang disebut S/H circuit (Sample & Hold).
Quantising dan encoding dilaksanakan oleh rangkaian yang disebut analog to
digital (A/D) Converter.
Ketepatan dari keseluruhan proses pada dasarnya tergantung dari
sampling. Teori sampling erat kaitannya dengan teori komunikasi dan analisa
system. Misalnya diketahui suatu sinyal M (t) yang mempunyai frekuensi
tertinggi Fm. Selang waktu yang digunakan untuk mensampling sinyal tersebut
diijinkan pada interval yang tetap, yaitu Ts < ½ fm. Jadi sinyal diatas disampel
(diambil untuk diterjemahkan ke bobot biner) secara teratur setiap Ts atau bisa
lebih sering lagi. Sample-sampel ini akan mempunyai karakteristik atau contoh
sinyal pada suatu saat dari sinyal tersebut, sehingga dengan suatu proses tertentu
akan dapat dibentuk kembali tanpa kesalahan. Sinyal M (t) dapat dibentuk
kembali dengan melewatkan sample-sampelnya pada sebuah low-pas ideal yang
responsinya datar paling sedikit sampai frekuensi Fm dan frekuensi cut-off kurang
atau sama dengan fs-fm, dimana fs = 1/Ts disebut sampling time.sampling rate fs
harus cukup paling sedikit diambil dua sample selama periode yang bersesuaian
dengan komponen frekuensi tertinggi sinyal M (t).
Uraian tentang teori sampling diatas dapat dimengerti dari gambar 5.1
pada gambar (a) terlihat sinyal sampling yang dilakukan dengan menggunakan
sebuah FET sebagai pengontrol gate, terdiri dari deretan pulsa-pulsa.
Gambar 5.1 (a)
42
Gambar 5.1 (b)
Gambar 5.1 (c)
Gambar 5.1
(a) Sinyal sampel Dan Pengolahan Kembali
(b) Sinyal M (t)
(c) Transfer Karakteristik Filter Yang Diinginkan
Transmisi hanya terjadi selama ineterval diberikan dan sinyal akan
dibentuk kembali pada output low-pass filter. Gambar (b) memperlihatkan
sebagian sinyal. Gambar (c) menunjukkan bentuk gelombang sample Ms(t) yang
terdiri dari pulsa-pulsa. Lama tiap pulsa sama dengan interval waktu saat swich
FET tertutup. Selama selang waktu Ms (t) puncak dari tiap pulsa akan mengikuti
kontur M (t), diluar interval sampling Ms (t) akan sama dengan nol.
43
Karakteristik filter yang dibutuhkan agar M (t) dapat dibentuk kembali
tanpa kesalahan ditunjukkan pada gambar (c ). H (f) / Vi (f) adalah transfer
function dari filter. H (f) harus flat, paling sedikit sampai frekuensi fim, yaitu
komponen frekuensi tertinggi dari M (t), dan H (f) haruslah jatuh ke nol sebelum
fs-fm. Misalnya fm = 1 Khz maka minimum frekuensi sampling adalah fs = 2fm =
2 Khz. Kita ambil fs = 2,5 Khz maka fs – fm = 2,5 – 1 =1,5 , jadi diinginkan H (f)
konstan = Ho dari 0 sampai paling sedikit 1 Khz kemudian menurun sampai nol
pada frekuensi < 1,5 Khz. Bila kita ambil fs = 2fm, fs dikurangi fm = 2fs-fm,
maka H (f) = Ho. Sampai fm baru menurun ke nol tentu saja karakteristik dari
bandpass filter sehingga tidak terjadi distorsi.
Perbandingan sinyal asli dengan sampelnya ditunjukkan sebagai
communication channel yang biasa berupa kawat atau hubungan radio. Fasilitas
communication channel sangat berharga, oleh sebab itu penggunaannya harus
semaksimal mungkin. Kita laihat pada transmisi sinyal M (t) channel yang
digunakan hanya / Ts dari waktu yang tersedia, jadi selama channel tidak
digunakan dapat dimanfaatkan untuk menyalurkan sinyal lain.
Dalam percobaan ini saudara akan berexperimen dengan IC analog to
digital converter (ADC 0804) yang data pin-pinnya seperti gambar 3.2 di bawah
ini :
Gambar 5.2
5.3.2 Digital to Analog Converter
Digital to Analog (D/A) Converter adalah suatu rangkaian pengubah
informasi dari digital ke analog. Rangkaian ini diperlukan pada saat suatu
44
rangkaian digital digunakan sebagai alat kontrol pada suatu sistem rangkaian yang
mengoperasikan parameter tegangan / arusnya dalam analog. Misalnya peralatan
pemanas (heater), pengatur putaran DC motor, sistem rekaman digital dan lain-
lain. D/A Converter akan mengubah setiap konfigurasi logika pada input-inputnya
kedalam tegangan analog pada outputnya dengan perbandingan yang tertentu.
Lihat gambar 5.3. Input Output pada D/A Converter
Pada contoh diatas D/A Converter memiliki 8 bit input port. Maka ketelitian
gelombang tangga (starcase) pada output adalah (1/256) dari tegangan output
maksimum bila tegangan output minimum diset pada 0 volt.
Misalnya Vout (max) = 5,12 Volt dan Vout (min) = 0,00 Volt. Maka
hubungan tegangan input dan output adalah sebagai berikut:
Tegangan
Output / Vout
(Volt)
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 0 0,00
0 0 0 0 0 0 0 1 0,02
45
Digital input
DigitalTo
AnalogConverte
r
1V (satu tangga) = ------- x Vout (max)
256 Vout (min) = 0 Volt
0 0 0 0 0 0 1 0 0,04
0 0 0 0 0 0 1 1 0,06
0 0 0 0 0 1 0 0 0,08
0 0 0 0 0 1 0 1 0,10
0 0 0 0 0 1 1 0 0,12
.
.
.
X,xx
1 1 1 1 1 1 0 0 5,06
1 1 1 1 1 1 0 1 5,08
1 1 1 1 1 1 1 0 5,10
1 1 1 1 1 1 1 1 5,12
Catatan : ‘0’ dan ‘1’ pada input adalah level TTL
Bentuk dasar D/A Converter terdiri dari dua macam, yaitu Weight
Resistor DAC dan R-2R Ladder DAC. Bentuk yang paling sederhana
menggunakan Weight resistor. Resistansi dalam rangkaian dari cara ini
mempunyai nilai yang sebanding dengan kebaikan nilai numeric digit yang
ditunjukkannya. Struktur dasarnya adalah seperti gambar dibawah ini.
46
Output dari DAC ini tergantung dari nilai resistansi resistor yang
mempunyai urutan kelipatan-kelipatan untuk tiap dua bit berurutan yang
ditunjukkannya. Dengan demikian nilai parameter R dapat dipilih dengan bebas.
Anggaplah V (1) = Vr, yaitu sumber tegangan referensi dan V (0) = 0. Bila posisi
switch berada pada ‘0’ maka berarti diketanahkan, atau berlogika ‘0’.
Arus keluaran IL dapat dihitung tergantung dari posisi switch. Misalnya
digunakan variable Sk, sedang bila pada posisi ‘0’ maka Sk = 0. Arus short circuit
pada output dapat dihitung sebagai berikut.
SN-1 S N-2 S 0
ILS = VR (------- + -------- + ……………. + -------- ) ……………( 4–1 ) R N-1 R N-2 R 0
I LS = V / R ( SN-1 2 N-1 + S N-2 2N-2 + ………..S 0 20 ………… ( 4–2 )
S = SN-1 + S N-2 + SN-3 + ……………. + S0
Dengan faktor pembanding sebesar VR : R, perbandingan ini akan tetap
meskipun factor pembandingnya berbeda. Asal RL tidak sama dengan nol.
47
S0 R/2
S1 R/4 RL
S2
R/2n-1
Sn MSB
_ _Gambar 5.4.
Analogi sebuah Weight Resistor DAC
Kesulitan yang timbul bila kita menggunakan D/A Converter dari jenis
weight resistor ini adalah “Range” dari resistor yang dibutuhkan cukup besar.
Misalnya pada MSB digunakan resistor 2 Kohm dan Converter diperlukan untuk
input digital sebanyak 13 bit. Maka harga tahanan pada LSB adalah sebesar 212 x
2 Kohm = 8192 Kohm atau 8,2 Mohm. Dengan resistor bertoleransi 1% maka
toleransi tahanan pada LSB adalah 82 Kohm. Hal ini sulit dicapai terutama pada
pembuatan IC (Integrated Circuit)-nya. Untuk memperoleh nilai resistansi dengan
ketelitian tinggi pada resistor yang bernilai besar adalah masih sulit dilaksanakan.
Oleh karena itu jenis DAC ini terbatas jumlah bitnya.
Untuk mengatasi kekurangan yang terdapat pada DAC jenis Weight
Resistor tersebut dapat dicapai dengan penggunaan metode kedua, yaitu R-2R
Ladder DAC. Dalam DAC jenis ini hanya digunakan nua buah nilai resistor saja,
yaitu R dan 2R. Lihat gambar dibawah ini.
Gb5.5 (a) Analog sebuah R-2R Ladder D/A Converter
Gb5.5 (b) Analisa Output V0 menggunakan Rangkaian Thevenin
48
R +
vo
VR/2 - -
__ VR D
Gb5.5 (c) Penyederhanaan Rangkaian Gambar 8-3 (b)
R R R R +
vo
--- A’ 2R 2R 2R -VR/2
Gb5.5 (d)Ekivalen Rangkaian Dilihat dari Output
Rangkaian pada gambar 4.3 diatas adalah DAC untuk digital input
sebanyak 4 bit. R-2R Ladder DAC ini memerlukan resistor dua kali lebih banyak
dari Weight Resistor DAC. Prinsip kerjanya adalah sebagai berikut. Anggaplah
S0=1 dan S1=S2=S3=0. Sumber tegangan VR dihubungkan seri dengan tahanan
seri 2R (lihat gambar 4-3 (a)).
Dengan menggunakan teori Thevenin A-A’ diperoleh gambar (b). Lihat
sumber tegangan VR/2 seri. Dengan cara yang sama pada BB’, CC’, dan DD’,
maka diperoleh bahwa sumber tegangan akan terbagi menjadi dua dengan
ipedansi output Thevenin sama dengan R. Rangkaian ekuivalennya ditunjukkan
pada gambar (d), dengan sumber tegangan menjadi VR/2R. Dengan demikian tiap
posisi switch menunjukkan bobot biner yang sesuai.
49
Persamaan tegangan outputnya adalah :
S3 S2 S1 S0
Vo = VR ( ---- + ---- + ---- + ---- ) ……………………… ( 4–3 ) 21 22 23 24
Vo = VR / 24 ( S3 . 23 + S2 . 22 + S1 . 21 + S0 . 20 )……. ( 4–4 ) Secara umum dapat ditulis :
Vo = VR / 24 ( SN-1 . 2N-1 + SN-2 . 2N-2 + …. + S0 . 20 ) …. ( 4–5 )
Bila dipasang beban RL maka tegangan output akan menjadi :
Vo = VR / 24 . RL / R + RL ………………………….…… ( 4–6 )
Agar pembagian antara tegangan beban Ladder dengan RL dapat
dilakukan secara aman (secara relatif tidak mempengaruhi nilai output) maka
diusahakan RL >> R Ladder. Dalam aplikasi biasanya ditambahkan sebesar 2R
setelah switch MSB sehingga impedansi yang dilihat tiap cabang akan sama yaitu
3R.
Dalam percobaan ini saudara akan berksperimen dengan IC analog to digital
converter (IC DAC 0808) yang data pin-pinnya seperti gambar 4-4 dibawah ini.
50
Vcc -- 1 16 -- A8 LSB
VREF -- 2 15 -- A7
VREF -- 3 14 -- A6
COMPENSATION -- 4 13 -- A5
NC (NOTE 2) -- 5 12 -- A4
GND -- 6 11 -- A3
VEE -- 7 10 -- A2
10 -- 8 9 -- A1 MSB
Gambar 5.6
5.4 PROGRAM-PROGRAM
5.4.1. PROGRAM DAC / ADC ( LED )
$include(reg51.inc)
;--------------------------------
;Program DAC/ADC (Led)
;--------------------------------
;===============================================
;Program demo HA0804 + HB200
;konektor pada port 3 + port 2
;output nilai biner oleh nyala LED di port 1
;===============================================
ADC_CS bit P2.0
ADC_RD bit P2.1
ADC_WR bit P2.2
ADC_INT bit P2.3
;
org 0h
next_sampling:
clr ADC_CS
clr ADC_WR
setb ADC_WR
not_EOC:
jb ADC_INT,not_EOC
delay: djnz r2,$
djnz r3,delay
clr ADC_RD
djnz r3,$
mov a,p3
setb ADC_RD
setb ADC_CS
cpl a
mov p1,a
51
sjmp next_sampling
end
TABEL HUBUNGAN TEGANGAN INPUT – OUTPUT
VOut (Max) = 5,10 dan Vout (Min) = 0,00
D7 D6 D5 D4 D3 D2 D1 D0 Desimal Hexa Tegangan 0 0 0 0 0 0 0 0 0 0 0,000 0 0 0 0 0 0 1 1 1 0.040 0 0 0 0 0 1 0 2 2 0,060 0 0 0 0 0 1 1 3 3 0,070 0 0 0 0 1 0 0 4 4 0,090 0 0 0 0 1 0 1 5 5 0,110 0 0 0 0 1 1 0 6 6 0,130 0 0 0 0 1 1 1 7 7 0,150 0 0 0 1 0 0 0 8 8 0,170 0 0 0 1 0 0 1 9 9 0,180 0 0 0 1 0 1 0 10 A 0,200 0 0 0 1 0 1 1 11 B 0,220 0 0 0 1 1 0 0 12 C 0,230 0 0 0 1 1 0 1 13 D 0,250 0 0 0 1 1 1 0 14 E 0,280 0 0 0 1 1 1 1 15 F 0,300 0 0 1 0 0 0 0 16 10 0,31. . . . . . . . . . .0 0 1 0 0 0 1 0 34 22 0,69. . . . . . . . . . .0 1 1 0 0 1 1 0 102 66 1,98. . . . . . . . . . .1 1 0 0 1 1 0 0 204 CC 3,94. . . . . . . . . . .1 1 0 1 1 1 0 1 221 DD 4,26. . . . . . . . . . .1 1 1 1 1 1 0 0 252 FC 4,85. . . . . . . . . . .1 1 1 1 1 1 1 1 255 FF 4,90
52
53
5.4.2 PROGRAM ADC LCD
$Include(reg51.inc);======================================; measure voltage with ADC + LCD; file name : ADCM.H51;======================================; Definisi pemakaian port;--------------------------LCD_RS bit P1.1LCD_CS bit P1.0;ADC_CS bit P2.0ADC_RD bit P2.1ADC_WR bit P2.2ADC_INT bit P2.3;--------------------------------; Definisi variable pemakaian RAM;--------------------------------Temp equ 50hTmp_0 equ 51hTmp_1 equ 52hTmp_2 equ 53hTmp_3 equ 54hDiv_0 equ 55hDiv_1 equ 56hDiv_2 equ 57hDiv_3 equ 58hNum_Lo equ 59hNum_Hi equ 5AhMul_Lo equ 5BhMul_Hi equ 5ChADC_data equ 5Dhhexval equ 5EhDecL equ 60hDecH equ 61hkeydata equ 62hdataiL equ 63hdataiH equ 64hcounti equ 65hkeybounc equ 66hhexL equ 67hhexH equ 68hHex_0 EQU 69hHex_1 EQU 6AhHex_2 EQU 6BhHex_3 EQU 6ChDec_0 EQU 6DhDec_1 EQU 6Eh
54
Dec_2 EQU 6FhDec_3 EQU 70hDec_4 EQU 71hADCL equ 72hADCH equ 73hBatas equ 74hOld_data equ 75h;
Org 0h;===================================; Awal dari program; Inisialisasi dan pengisian nilai; awal dari beberapa variable;===================================mulai_0:;==================; Inisialisasi LCD;==================
call Ldelaymov R1,#03Fhacall write_instacall write_instmov R1,#0Dhacall write_instmov R1,#06hacall write_instmov R1,#0Chacall write_instmov R1,#01hacall write_inst
;===========================; Menunggu tombol ditekan ; untuk pemilihan MENU;===========================Mulai:
mov R1,#0Chacall write_instmov dptr,#judulcall Tulis_LCD_2_baris_w_o_delay
run:call ADC0808call Ldelay
; tampilkan nilai hexmov R1,#8Chcall write_instmov A,ADC_Dataswap Aanl A,#0Fhorl A,#30Hcjne A,#3Ah,cek01
55
cek01: jc terus1add A,#7H
terus1: mov R1,Acall write_data
; nilai nible rendahmov A,ADC_Dataanl A,#0Fhorl A,#30Hcjne A,#3Ah,cek02
cek02: jc terus2add A,#7H
terus2: mov R1,Acall write_data
;; hitung dan tampilkan nilai desimal
mov A,ADC_data;
mov Num_Hi,#03H ; ADC_data X 1000mov Num_Lo,#0E8hmov mul_Hi,#0mov mul_Lo,ADC_data ; ADC datacall mul_16mov div_3,mul_Himov div_2,mul_Lomov div_1,Num_Himov div_0,Num_Lomov mul_Hi,#0mov mul_Lo,#0mov Num_Hi,#0mov Num_Lo,#8 ; ADC_data = ADC_data * 1000 / 8call div_16mov hex_3,div_3mov hex_2,div_2mov hex_1,div_1mov hex_0,div_0mov ADCH,div_1mov ADCL,div_0mov tmp_0,#8call hex2des
; display hasil mov R1,#0C4h
call write_instmov A,DEC_2anl A,#0Fhadd A,#30hmov R1,Acall write_datamov A,DEC_1swap Aanl A,#0Fh
56
add A,#30hmov R1,Acall write_data
;mov R1,#'.' ; desimal pointcall write_data
;mov A,DEC_1anl A,#0Fhadd A,#30hmov R1,Acall write_data
;mov A,DEC_0swap Aanl A,#0Fhadd A,#30hmov R1,Acall write_data
;mov A,DEC_0anl A,#0Fhadd A,#30hmov R1,Acall write_datajmp run
;========================================; Routine untuk menulis instruksi ke LCD;========================================write_inst:
clr LCD_RSsetb LCD_CSmov P0,R1 ;intruksi ke LCDclr LCD_CS ;modulesetb LCD_CSacall delay ret
;========================================; Routine untuk menulis data ke LCD;========================================write_data:
setb LCD_RSsetb LCD_CSmov P0,R1 ;data ke LCDclr LCD_CS ;modulesetb LCD_CSacall delayret
;=========================; Routine penghasil delay
57
;=========================delay: mov R5,#0
djnz R5,$ret
;=================================; Routine penghasil delay panjang;=================================Ldelay: mov R2,#100Ld1: acall delay
djnz R2,LD1ret
;=================================; Routine menulis character ; sebanyak 16 di baris LCD atas;=================================tulis_LCD_atas:
mov R3,#16mov R1,#80hacall write_inst
tulis1: clr Amovc A,@A+DPTRmov R1,Aacall write_datainc DPTRdjnz R3,Tulis1ret
;=================================; Routine menulis character ; sebanyak 16 di baris LCD bawah;=================================tulis_LCD_bawah:
mov R3,#16mov R1,#0C0hacall write_inst
tulis3: clr Amovc A,@A+DPTRmov R1,Aacall write_datainc DPTRdjnz R3,Tulis3ret
;===================================; Routine menulis character sebanyak; 32 di baris LCD atas dan bawah;===================================Tulis_LCD_2_baris:
Lcall tulis_LCD_atasLcall tulis_LCD_bawahLcall Ldelaydjnz R7,Tulis_LCD_2_baris
58
; Lcall Ldelayret
;===========================================; Routine menulis character sebanyak; 32 di baris LCD atas dan bawah tanpa delay;===========================================Tulis_LCD_2_baris_w_o_delay:
Lcall tulis_LCD_atasLcall tulis_LCD_bawahret
;----------------------------------------; Div_32 : Routine untuk pembagian 32 bit; 32 bit / 32 bit -> 32 bit ; MSB LSB ; Pembagi -> Mul_Hi Mul_Lo Num_Hi Num_Lo ; Bilangan -> Div_3 Div_2 Div_1 Div_0 ; Hasil -> Div_3 Div_2 Div_1 Div_0 ; Sisa -> Tmp_3 Tmp_2 Tmp_1 Tmp_0;----------------------------------------Div_32:
MOV Tmp_0,#0MOV Tmp_1,#0MOV Tmp_2,#0MOV Tmp_3,#0
D_32_J4:MOV a,Div_3MOV b,Mul_HiCJNE a,b,D_32_J1MOV a,Div_2MOV b,Mul_LoCJNE a,b,D_32_J1MOV a,Div_1MOV b,Num_HiCJNE a,b,D_32_J1MOV a,Div_0MOV b,Num_LoCJNE a,b,D_32_J1AJMP D_32_J2
D_32_J1:JNC D_32_J2PUSH Tmp_3PUSH Tmp_2PUSH Tmp_1PUSH Tmp_0MOV Tmp_3,Div_3MOV Tmp_2,Div_2MOV Tmp_1,Div_1MOV Tmp_0,Div_0POP Div_0POP Div_1
59
POP Div_2POP Div_3AJMP D_32_J3
D_32_J2:CLR cMOV a,Div_0MOV b,Num_LoSUBB a,bMOV Div_0,aMOV a,Div_1MOV b,Num_HiSUBB a,bMOV Div_1,aMOV a,Div_2MOV b,Mul_LoSUBB a,bMOV Div_2,aMOV a,Div_3MOV b,Mul_HiSUBB a,bMOV Div_3,aMOV a,Tmp_0ADD a,#1MOV Tmp_0,aJNC D_32_J4MOV a,Tmp_1ADD a,#1MOV Tmp_1,aJNC D_32_J4MOV a,Tmp_2ADD a,#1MOV Tmp_2,aMOV a,Tmp_3ADD a,#1MOV Tmp_3,aAJMP D_32_J4
D_32_J3:RET
;;-----------------------------------------------; Hex2Des : Routine untuk mengubah bilangan; hexa 32 bit menjadi desimal; (membutuhkan routine Div_32 dan ; code Tabel);; MSB LSB Digit; Bil hexa : Hex_3 Hex_2 Hex_1 Hex_0 Tmp_0; Desimal : Dec_4 Dec_3 Dec_2 Dec_1 Dec_0 ;-----------------------------------------------Hex2Des:
60
MOV Dec_0,#0MOV Dec_1,#0MOV Dec_2,#0MOV Dec_3,#0MOV Dec_4,#0MOV dptr,#TabelMOV a,Tmp_0MOV b,#2DIV abPUSH ACCMOV a,bCJNE a,#1,H_D_J1POP ACCINC aINC Tmp_0AJMP H_D_J2
H_D_J1: POP ACCH_D_J2:
MOV r7,aMOV r0,#Dec_0ADD a,r0DEC aMOV r0,aMOV a,Tmp_0DEC aMOV b,#4MUL abMOV r6,a
H_D_J10:MOV r1,#Num_LoMOV r5,#4
H_D_J3: MOV a,r6MOVC a,@a+dptrMOV @r1,aINC r1INC r6DJNZ r5,H_D_J3MOV Div_0,Hex_0MOV Div_1,Hex_1MOV Div_2,Hex_2MOV Div_3,Hex_3LCALLDiv_32MOV a,Div_0MOV b,aMOV r5,#4
H_D_J4: DEC r6DEC r6RL aDJNZ r5,H_D_J4MOV @r0,a
61
MOV Hex_0,Tmp_0MOV Hex_1,Tmp_1MOV Hex_2,Tmp_2MOV Hex_3,Tmp_3MOV r1,#Num_LoMOV r5,#4
H_D_J6: MOV a,r6MOVC a,@a+dptrMOV @r1,aINC r1INC r6DJNZ r5,H_D_J6MOV Div_0,Hex_0MOV Div_1,Hex_1MOV Div_2,Hex_2MOV Div_3,Hex_3LCALLDiv_32MOV b,Div_0MOV a,@r0ORL a,bMOV @r0,aMOV Hex_0,Tmp_0MOV Hex_1,Tmp_1MOV Hex_2,Tmp_2MOV Hex_3,Tmp_3DEC r0MOV r5,#8
H_D_J11:DEC r6DJNZ r5,H_D_J11DJNZ r7,H_D_J9RET
H_D_J9: LJMP H_D_J10;;----------------------------------------; Div_16 : Routine untuk pembagian ; 32 bit : 16 bit -> 32 bit ; MSB LSB ; Pembagi -> Num_Hi Num_Lo ; Bilangan -> Div_3 Div_2 Div_1 Div_0 ; Hasil -> Div_3 Div_2 Div_1 Div_0 ;----------------------------------------Div_16: MOV R7,#0 MOV R6,#0 ;zero out partial remainder MOV Tmp_0,#0 MOV Tmp_1,#0 MOV Tmp_2,#0 MOV Tmp_3,#0
62
MOV R1,Num_Hi ;load divisor MOV R0,Num_Lo MOV R5,#32 ;loop count
;This begins the loopDiv_loop: ACALL Shift_D ;shift the dividend and return MSB in C MOV A,R6 ;shift carry into LSB of partial remainder RLC A MOV R6,A MOV A,R7 RLC A MOV R7,A JC can_sub ; Revisi tgl 20 okt 1998
;---------------- now test to see if R7:R6 >= R1:R0 CLR C MOV A,R7 ;subtract R1 from R7 to see if R1 < R7 SUBB A,R1 ; A = R7 - R1, carry set if R7 < R1 JC Cant_sub
;--------------- at this point R7>R1 or R7=R1 JNZ Can_sub ;jump if R7>R1
;--------------- if R7 = R1, test for R6>=R0 CLR C MOV A,R6 SUBB A,R0 ; A = R6 - R0, carry set if R6 < R0 JC Cant_subCan_sub:;--------------- subtract the divisor from the partial remainder CLR C MOV A,R6 SUBB A,R0 ; A = R6 - R0 MOV R6,A MOV A,R7 SUBB A,R1 ; A = R7 - R1 - Borrow MOV R7,A SETB C ; shift a 1 into the quotient AJMP QuotCant_sub:;--------------- shift a 0 into the quotient CLR CQuot:;--------------- shift the carry bit into the quotient ACALL Shift_Q
;--------------- Test for competion DJNZ R5,Div_loop
63
;-- Now we are all done, move the TMP values back into OP MOV Div_0,Tmp_0 MOV Div_1,Tmp_1 MOV Div_2,Tmp_2 MOV Div_3,Tmp_3 RETShift_D:;-- shift the dividend one bit to the left and return the MSB in C CLR C MOV A,Div_0 RLC A MOV Div_0,A MOV A,Div_1 RLC A MOV Div_1,A MOV A,Div_2 RLC A MOV Div_2,A MOV A,Div_3 RLC A MOV Div_3,A RETShift_Q:;-- shift the quotent one bit to the left and shift the C into LSB MOV A,Tmp_0 RLC A MOV Tmp_0,A MOV A,Tmp_1 RLC A MOV Tmp_1,A MOV A,Tmp_2 RLC A MOV Tmp_2,A MOV A,Tmp_3 RLC A MOV Tmp_3,A RET;----------------------------------------; Mul_16 : Routine untuk perkalian ; 16 bit x 16 bit -> 32 bit ; MSB LSB ; Pengali -> Mul_Hi Mul_Lo ; Bilangan -> Num_Hi Num_Lo ; Hasil -> Mul_Hi Mul_Lo Num_Hi Num_lo ;----------------------------------------Mul_16:
MOV Tmp_3,#0MOV Tmp_2,#0MOV Tmp_1,#0MOV Tmp_0,#0
64
MOV a,Mul_LoMOV b,Num_LoMUL abMOV Tmp_0,aMOV Tmp_1,bMOV a,Mul_LoMOV b,Num_HiMUL abADD a,Tmp_1MOV Tmp_1,aJNC Mul_J1INC b
Mul_J1: MOV Tmp_2,bMOV a,Mul_HiMOV b,Num_LoMUL abADD a,Tmp_1MOV Tmp_1,aJNC Mul_J2INC b
Mul_J2: MOV a,bADD a,Tmp_2MOV Tmp_2,aJNC Mul_J3INC Tmp_3
Mul_J3: MOV a,Num_HiMOV b,Mul_HiMUL abADD a,Tmp_2MOV Tmp_2,aJNC Mul_J4INC Tmp_3
Mul_J4: MOV a,bADD a,Tmp_3MOV Tmp_3,aMOV Num_Lo,Tmp_0MOV Num_Hi,Tmp_1MOV Mul_Lo,Tmp_2MOV Mul_Hi,Tmp_3RET
;===================; ADC 0808/9 Routine;===================ADC0808: ;ADC channel 0 ABC = 000 / input 1
clr ADC_Aclr ADC_Bclr ADC_C
; kondisi awal clr ADC_OEclr ADC_START
65
next_sampling:setb ADC_START ; start of conversionnopclr ADC_START
not_EOC:jnb ADC_EOC,not_EOC
delaya: djnz R2,$djnz R3,delayasetb ADC_OE ; Baca Data melalui P3djnz R3,$mov A,P3clr ADC_OEmov ADC_data,Asetb ADC_OEret
;===================; Definition of DATA;===================Judul: DB ' ADC DATA = H '
DB 'V = VOLT ';Tabel:
DB 001h,000h,000h,000h ; 1DB 00Ah,000h,000h,000h ; 10DB 064h,000h,000h,000h ; 100DB 0E8h,003h,000h,000h ; 1kDB 010h,027h,000h,000h ; 10kDB 0A0h,086h,001h,000h ; 100kDB 040h,042h,00Fh,000h ; 1MDB 080h,096h,098h,000h ; 10MDB 000h,0E1h,0F5h,005h; 100MDB 000h,0CAh,09Ah,03Bh ; 1G
;End ; Akhir dari progam
TABEL HEXA dengan VOLTNo. DATA HEX VOLT No. DATA HEX VOLT1 FFH 0,187 129 7FH 0,5872 FEH 0,175 130 7EH 0,5753 FDH 0,162 131 7DH 0,5624 FCH 0,150 132 7CH 0,5505 FBH 0,137 133 7BH 0,5376 FAH 0,125 134 7AH 0,5257 F9H 0,112 135 79H 0,5128 F8H 0,100 136 78H 0,5009 F7H 0,087 137 77H 0,48710 F6H 0,075 138 76H 0,47511 F5H 0,062 139 75H 0,462
66
12 F4H 0,050 140 74H 0,45013 F3H 0,037 141 73H 0,43714 F2H 0,025 142 72H 0,42515 F1H 0,012 143 71H 0,41216 F0H 0,000 144 70H 0,40017 EFH 0,987 145 6FH 0,38718 EEH 0,975 146 6EH 0,37519 EDH 0,962 147 6DH 0,36220 ECH 0,950 148 6CH 0,35021 EBH 0,937 149 6BH 0,33722 EAH 0,925 150 6AH 0,32523 E9H 0,912 151 69H 0,31224 E8H 0,900 152 68H 0,30025 E7H 0,887 153 67H 0,28726 E6H 0,875 154 66H 0,27527 E5H 0,862 155 65H 0,26228 E4H 0,850 156 64H 0,25029 E3H 0,837 157 63H 0,23730 E2H 0,825 158 62H 0,22531 E1H 0,812 159 61H 0,21232 E0H 0,800 160 60H 0,20033 DFH 0,787 161 5FH 0,18734 DEH 0,775 162 5EH 0,17535 DDH 0,762 163 5DH 0,16236 DCH 0,750 164 5CH 0,15037 DBH 0,737 165 5BH 0,13738 DAH 0,725 166 5AH 0,12539 D9H 0,712 167 59H 0,11240 D8H 0,700 168 58H 0,10041 D7H 0,687 169 57H 0,08742 D6H 0,675 170 56H 0,07543 D5H 0,662 171 55H 0,06244 D4H 0,650 172 54H 0,05045 D3H 0,637 173 53H 0,03746 D2H 0,625 174 52H 0,02547 D1H 0,612 175 51H 0,01248 D0H 0,600 176 50H 0,00049 CFH 0,587 177 4FH 0,98750 CEH 0,575 178 4EH 0,97551 CDH 0,562 179 4DH 0,96252 CCH 0,550 180 4CH 0,95053 CBH 0,537 181 4BH 0,93754 CAH 0,525 182 4AH 0,92555 C9H 0,512 183 49H 0,91256 C8H 0,500 184 48H 0,90057 C7H 0,487 185 47H 0,88758 C6H 0,475 186 46H 0,875
67
59 C5H 0,462 187 45H 0,86260 C4H 0,450 188 44H 0,85061 C3H 0,437 189 43H 0,83762 C2H 0,425 190 42H 0,82563 C1H 0,412 191 41H 0,81264 C0H 0,400 192 40H 0,80065 BFH 0,387 193 3FH 0,78766 BEH 0,375 194 3EH 0,77567 BDH 0,362 195 3DH 0,76268 BCH 0,350 196 3CH 0,75069 BBH 0,337 197 3BH 0,73770 BAH 0,325 198 3AH 0,72571 B9H 0,312 199 39H 0,71272 B8H 0,300 200 38H 0,70073 B7H 0,287 201 37H 0,68774 B6H 0,275 202 36H 0,67575 B5H 0,262 203 35H 0,66276 B4H 0,250 204 34H 0,65077 B3H 0,237 205 33H 0,63778 B2H 0,225 206 32H 0,62579 B1H 0,212 207 31H 0,61280 B0H 0,200 208 30H 0,60081 AFH 0,187 209 2FH 0,58782 AEH 0,175 210 2EH 0,57583 ADH 0,162 211 2DH 0,56284 ACH 0,150 212 2CH 0,55085 ABH 0,137 213 2BH 0,53786 AAH 0,125 214 2AH 0,52587 A9H 0,112 215 29H 0,51288 A8H 0,100 216 28H 0,50089 A7H 0,087 217 27H 0,48790 A6H 0,075 218 26H 0,47591 A5H 0,062 219 25H 0,46292 A4H 0,050 220 24H 0,45093 A3H 0,037 221 23H 0,43794 A2H 0,025 222 22H 0,42595 A1H 0,012 223 21H 0,41296 A0H 0,000 224 20H 0,40097 9FH 0,987 225 1FH 0,38798 9EH 0,975 226 1EH 0,37599 9DH 0,962 227 1DH 0,362100 9CH 0,950 228 1CH 0,350101 9BH 0,937 229 1BH 0,337102 9AH 0,925 230 1AH 0,325103 99H 0,912 231 19H 0,312104 98H 0,900 232 18H 0,300105 97H 0,887 233 17H 0,287
68
106 96H 0,875 234 16H 0,275107 95H 0,862 235 15H 0,262108 94H 0,850 236 14H 0,250109 93H 0,837 237 13H 0,237110 92H 0,825 238 12H 0,225111 91H 0,812 239 11H 0,212112 90H 0,800 240 10H 0,200113 8FH 0,787 241 0FH 0,187114 8EH 0,775 242 0EH 0,175115 8DH 0,762 243 0DH 0,162116 8CH 0,750 244 0CH 0,150117 8BH 0,737 245 0BH 0,137118 8AH 0,725 246 0AH 0,125119 89H 0,712 247 09H 0,112120 88H 0,700 248 08H 0,100121 87H 0,687 249 07H 0,087122 86H 0,675 250 06H 0,075123 85H 0,662 251 05H 0,062124 84H 0,650 252 04H 0,050125 83H 0,637 253 03H 0,037126 82H 0,625 254 02H 0,025127 81H 0,612 255 01H 0,012128 80H 0,600 256 00H 0,000
69
TUGAS PENDAHULUHAN
PRAKTIKUM MIKROPROSESSOR
1. a. Jelaskan perbedaan Mikroprosessor dan Mikrokontroller ? b. Gambarkan serta jelaskan fungsi Pin pada mikroprosessor 8088 dan 8086 ?
2. Jelaskan perbedaan pengiriman data melalui port serial dan port parallel ?
3. Jelaskan perbedaan ADC dan DAC (serta aplikasinya) ?
4. a. Jelaskan yang dimaksud Motor Stepper ? b. Jelaskan yang dimaksud port ?
5. Jelaskan kode instruksi bahasa assembler dibawah ini :a. Mov A,#Datab. DJNZ A,Labelc. CJNE A,#Data Labeld. INC Ae. DEC Af. Callg. RL Ah. RR A
6. Ubah bilangan-bilangan dibawah ini menjadi desimal :a. 7AD5 Hexab. 625 Oktalc. 101110110110 Biner
Penyelesaian :1. a. Perbedaan mikrokontroller dengan mikroprocesor :
a. Mikrokontroller
Adalah sejenis mikroprocessor yang dikhususkan untuk
instrumentasi dan kendali, sebagai contoh aplikasi pada kendali motor,
berperan seperti PLC, pengaturan pengapian dan injeksi bahan bakar
kendaraan bermotor serta alat untuk mengukur suatu besaran, seperti suhu,
tekenan, kelembaban, dll.
Hanya terdiri dari 1 IC saja dan memory sudah ada dalam mikrokonkroler.
Beberapa keuntungan pemakaian mikrokontroler dibandingkan
mikroprosesor adalah mikrokrontroler sudah terdapat RAM dan peralatan
I/O pendukung sehingga tidak perlu menambahnya.
70
b. Mikroprocessor
Adalah rangkaian terpadu tunggal yang mengandung ribuan
gerbang digital yang dapat melakukan operasi aritmatika, logika dan
control dari computer general purpose. Merupakan komponen chip untuk
aritmatika dan logika (AW) yang memiliki kemampuan untuk melakukan
fungsi aritmatika dan logika biasa dengan operand 4 bit yang memiliki
kemampuan pemrosesan yang sama dengan minicomputer, tetapi ukuran
dan kecepatannya tidak sama.
b. Gambar dan jelaskan fungsi Pin pada 8088
71
2. Port Serial :Port serial pada AT 89C54/S2 bersifat duplex – penuh atau full duplex artinya port serial bisa menerima dan mengirim secara bersamaan.
Port ParallelPort paralel dipakai untuk menerima masukan sinyal digital dari luar mikrokontroler.
72
3. ADC (ANALOG TO DIGITAL CONVERTER)adalah suatu rangkaian pengubah informasi dari analog ke digital. Dalam pemrosesan sinyal-sinyal analog seringkali akan banyak keuntungan yang dapat dengan mengubah terlebih dahulu ke bentuk digital sehingga proses dapat dilakukan secara digital. Dengan menggunakan ADC, maka dapat mengamati sinyal-sinyal dari perubahan-perubahan sinyal analog seperti perubahan temperature, kepekatan asap, tekanan udara, kecepatan angina, berat benda, kadar asam (pH) dan lain-lain yang semuanya dapat diamati melalui sensornya masing-masing. Aplikasi ADC (Analog To Digital) Converter
PPI_PA equ 8000h
PPI_PB equ 8001h
PPI_PC equ 8002h
PPI_INI equ 8003h
PPI_CW equ 8Ah ; P_C Upper, P_B : Input
; P_C Lower, P_A : Output
Org 8h
tPA DS 1
tPB DS 1
tPC DS 1
Org 0
Call PPI_Init
Mov Dptr,#PPI_PC
Mov A,#00001111B
Movx @Dptr,A
L1 :
;-----start ADC
Mov Dptr,#PPI_PC
Mov A,#00001010B
Movx @Dptr,A
Mov A,#00001110B
Movx @Dptr,A
L2 :
;-----Tunggu INTR
Movx @Dptr,A
Jb Acc.4,L2
;-----Baca ADC
73
Mov Dptr,#PPI_PC
Mov A,#00001100B
Movx @Dptr,A
Mov A,#00001110B
Movx @Dptr,A
Mov Dptr,#PPI_PC
Movx A,@Dptr
;-----Tulis Ke Port A
Mov Dptr,#PPI_PA
Movx @Dptr,A
PPI_Init
Mov A,#PPI_CW
Mov Dptr,#PPI_INI
Movx @Dptr,A
Ret
DAC (DIGITAL TO ANALOG CONVERTER)adalah suatu rangkaian pengubah informasi dari Digital ke Analog. Rangkaian ini diperlukan pada saat suatu rangkaian digital digunakan sebagai alat Kontrol pada suatu system rangkaian yang mengoperasikan parameter tegangan/arusnya dalam analog. Misalnya peralatan pemanas (heater), pengantar putaran DC motor, system rekaman digital dan lain-lain.Aplikasi DAC (Digital To Analog) Converter
PPI_PA equ 8000h
PPI_PB equ 8001h
PPI_PC equ 8002h
PPI_INI equ 8003h
PPI_CW equ 8Ah ; P_C Upper, P_B : Input
; P_C Lower, P_A : Output
Org 8h
tPA DS 1
tPB DS 1
tPC DS 1
Org 0
Call PPI_Init
74
Mov Dptr,#PPI_PC
Mov A,#00001111B
Movx @Dptr,A
L1 :
;-----start ADC
Mov Dptr,#PPI_PC
Mov A,#00001010B
Movx @Dptr,A
Mov A,#00001110B
Movx @Dptr,A
L2 :
;-----Tunggu INTR
Movx @Dptr,A
Jb Acc.4,L2
;-----Baca ADC
Mov Dptr,#PPI_PC
Mov A,#00001100B
Movx @Dptr,A
Mov A,#00001110B
Movx @Dptr,A
Mov Dptr,#PPI_PB
Movx A,@Dptr
4. a. Motor Stepper
Adalah salah satu type motor yang sangat popular digunakan sebagai
penggerak atau pemutar dalam system kontrol misalnya instrumentasi,
computer (diskdrive dan hard disk), printer, kontrol posisi pada
mesin/robot dan lain-lain untuk kebutuhan daya yang relative rendah.
jenis motor yang mempunyai putaran berstep sesuai dengan namanya
stepper, motor ini mempunyai kutub magnet yang saling tarik antar rotor
dan statornya.
Motor stepper ini mempunyai sudut putar yang berbeda – beda, semakin
pendek jarak sudut putarnya maka motor stepper ini semakin presisi
75
b. Port
Port adalah suatu lubang kecil/penghubung antara computer dengan alat
dalam mengirim atau menerima data yang mempunyai dua jenis yaitu
serial dan parallel.
Terminal masukkan atau terminal keluaran pada sebuah perangkat keras,
dimana port ini berfungsi untuk komunikasi dengan perangkat yang lain.
Pada komputer terdapat port serial dan port parallel.
5. a. Mov A, #Data yaitu masukan data ke awal akumulator
b. DJNZ A, Label yaitu kurangi A dengan 1, bila hasil belum sama
dengan 0 maka lompat ke label.
c. CJNE A,#Data Label yaitu untuk membandingkan nilai data label dengan
akumulator jika nilainya tidak sama maka lompat.
d. INC A yaitu tambah isi akumulator (A)
e. DEC A yaitu kurangi isi akumulator (A)
f. Call yaitu panggil subrutine dan kembali ke alamat distack
g. RL A yaitu putar isi akumulator ke kiri 1 bit di dalam suatu register
h. RR A yaitu putar isi akumulator ke kanan 1 bit di dalam suatu register
6. a. 7AD5 Hexa = 31445
b. 625 Oktal = 405
c. 101110110110 Biner = 2998
76
PENUTUP
1. Kesimpulan
1.1. Percobaan/modul 1 membahas percobaan serta penerapan microprocessor
pada parallel port 1 byte. Pada percobaan ini pengaturan delay akan
mempengaruhi tampilan led. Penggunaan perintah Djnz dan Cjnz sangat
dominan dinama kedua perintah ini mempunyai sendiri–sendiri, Djnz
berfungsi untuk mengulangi perintah sesuai jika data/nilai yang dibaca
tidak sama dengan 0; serta perintah pembanding.
1.2. Percobaan modul 2 membahas penerapan microprocessor pada tampilan
7-segment, dimana pada percobaan ini penggunaan penggunaan konversi
hexa pada biner sangat diperlukan untuk merancang program tampilan
sebelum program dirancang. Serta penggunaan DB sebagai perintah
untuk memindahkan data 8 bit.
1.3. Percobaan modul 3 membahas tampilan LCD, penggunaan perintah-
perintahnya lebih komplek disbanding program untuk tampilan 7-
segment. Penggunaan DPTR sangat dominan sebagai data pointer
pengidentifikasian untuk memanggil label pada program berinisial DB.
1.4. Percobaan modul 4 membahas penggunaan mikroproscessor untuk
memproses penggunaan motor stepper, dimana pada percobaan ini
penggunaan RR dan RL sangat kelihatan sekali dimana kedua perintah ini
untuk memproses putaran motor CW dan CCW.
1.5. Percobaan modul 5 membahas aplikasi mikroprocessor sebagai media
untuk mengkonversi atau menjalankan konversi analog to digital dan
digital to analog dimana hasilnya ditampilkan pada LCD serta
penggunaan led sebagi pengganti outputan.
2. Kritik dan Saran
2.1 Untuk jadwal praktikum yang akan datang mohon disesuaikan dengan
kartu heregistrasi agar pelaksanaan tidak menumpuk dibelakang.
2.2 Mohon untuk activity plan praktikum dilaksanakan dengan jadwal dan
jika ada perubahan mendadak supaya dilakukan konfirmasi lebih dahulu,
minimal 1 hari sebelum pelaksanaan.
77
2.3 Mohon pada waktu mengikuti praktikum instruktur agar mendampingi
praktikan jadi bila ada yang kurang jelas dapat segera selesaikan.
78
DAFTAR PUSTAKA
Panduan praktikum mikroprocessor, Universitas Muhammadiyah Sidoarjo, 2004.
Agfianto Eko Putra, Belajar Mikrokontroller, Teori dan Aplikasi, Gava Media,
Yogyakarta, 2003.
Belajar sendiri pemograman dengan bahasa Assembly ( PDF ).
79