BAB 1
PRAKTIKUM DASAR MIKROKONTROLER MENGGUNAKAN
TOP VIEW SIMULATOR DAN MODUL LAROS-ELECTOR V2.1
1. Pada awalnya buka program TopViewSimulator dan akan muncul form
seperti pada gambar 1.1, disini pilih pada menu dropdown ”Select
Device”, pilih AT89C51.
Gambar 1.1 Tampilan Top View Simulator Select Device
2. Langkah berikutnya klik data memory pada form yang sama dan pilihlah
besar memory sesuai dengan Device misalnya 4 Kbyte, seperti pada
gambar 1.2, dan klik OK.
Gambar 1.2. Data memory Setting
3. Buka program notepad / tex teditor dan ketik listing program kemudian
simpan dalam satu folder dengan program ASM51, pada gambar 1.3.
merupakan contoh program untuk menghidupkan Led di port 1.
Gambar 1.3. Contoh Penulisan Program Dalam Text Editor
Penulisan program harus sesuai dengan port yang ditunjuk pada mikrokontroler
seperti pada gambar 1.4.
Gambar 1.4. Gambar Rangkaian Flash Point LED
4. Buka command prompt dan masuk direktori folder asm 51 misal pada
contoh di folder
àD: \Praktikum\asm51\asm51
5. Langkah selanjutnya ketik nama file yang sudah berisi program
assesmbler misal Job.asm. perhatikan pada gambar 1.5. bila tidak ada
Gambar 1.5. Tampilan program compiler ASM51 pada command promt
6. Selanjutnya buka program TopViewSimualator dan pilih menu
File
àLoad Program, tampilan seperti pada gambar 1.6. dan pilihlah file
hexa yaitu file assembler yang sudah ter-compile.
Gambar 1.6. Tampilan Load Program File
7. Kemudian muncul form bentang alamat memori seperti pada gambar
1.7. kemudian klik OK.
8. Pilih menu FileàExternal Modules SettingàLed dan akan muncul
form seperti pada gambar 1.8. pilih port yang akan diaktifkan misal port
1, centanglah masing-masing bit pada port1. selnjutnya klik OK.
Gambar 1.8. Form Pengaturan Module Led
9. Langkah berikutnya pilih menu ViewàExternal ModulesàLed dan
muncul form seperti gambar 1.9
Gambar 1.9. Form Led Modules Yang Belum Dijalankan
10. Selanjutnya pilih menu RunàGo untuk menjalankan program dan
tampilan hasil eksekusi seperti pada gambar 1.10.
Gambar 1.10. Form Led Module Yang Sudah Dijalankan
BAB 2
PENGGUNAAN TOMBOL
Penggunaan tombol pada port parallel mikrokontroler umumnya
difungsikan seolah-olah sebuah sensor yang akan dikondisikan sebagai sinyal
masukan mikrokontroler. Perhatikan gambar 2.1.
Gambar 2.1. Rangkaian Penggunaan Tombol pada Mikrokontroler
Dalam program TopView Simulator Anda harus mengatur konfigurasi port untuk
tombol dan port untuk Led, berikut langkah-langkahnya:
1. Pilih Menu FileàExternal Modules SettingàLed, dan centanglah port
yang anda gunakan untuk Led, perhatikan gambar 2.2.
Gambar 2.2. Form Pengaturan Module Led
2. Dan untuk konfigurasi Tombol Tekan Pilih Menu Fileà External
digunakan untuk tombol dan pada Kotak Matrix KeyPad pilihàNone, bila
sudah sesuai tekan tombol OK.
Gambar 2.3. Form Pengaturan Pemilihan Tombol
3. Untuk menampilkan led, Pilih menu ViewàExsternal ModulesàLed,
dan untuk menampilkan modul Tombol, Pilih menu ViewàExsternal
ModulesàKeyBoard perhatikan gambar 2.4.
Gambar 2.4. Tampilan modul Led dan Tombol
4. Cobalah menuliskan listing program seperti pada gambar 2.5 dibawah ini
dan amati hasilnya.
Gambar 2.5. Contoh Listing Program Pembacaan Tombol Pada Port 3
5. Bila dijalankan akan tampak seperti gambar 2.6. penekanan tombol
pada port 3 akan diterjemahkan dengan tampilan perbit pada port 1.
Gambar 2.6. Tampilan simulasi Pembacaan Tombol
6. Untuk pengembangan tombol tekan dapat digunakan sebagai tombol
SET dan RESET, yaitu menghidupkan led pada P1.0 dengan menekan
tombol P3.0, dan untuk memadamkan nyala led P1.0 dengan menekan
tombol P3.1. Perhatikan algoritma pada gambar 2.7.
Gambar 2.7. Algoritma tombol SET RESET
y
t
y
t
P3.0=1 P3.1=1 start P1.0=1 P1.0=0 Baca Tombol P3Berikut contoh programnya :
$mod51org 0h
;set reset dua tombol ;ibnu budi rahardjo padam: jb p3.0,nyala setb p1.0 nyala: jb p3.1,padam clr p1.0 sjmp padam end
contoh program dengan satu tombol SET RESET pada P3.0 dengan nyala led
pada port 1.
$MOD51
ORG 0H
MULAI:
MOV A,P3 ; Baca tombol P3 dan simpan di akumulator
CJNE A,#0FEH,MULAI ; Apakah tombol P3.0 ditekan? (=11111110) ; Tidak! Ulangi lagi dari awal
CJNE R0,#0,TERUS ; Ya! Apakah R0=0 (artinya lampu sedang mati)? ; Tidak! loncat ke proses mematikan lampu LED (TERUS) MOV R0,#1 ; Ya! ubah status R0=1 (lampu menyala)
MOV P1,#0 ; dan hidupkan lampu LED di port 1 TUNGGU: ; Untuk menghindari bouncing
MOV A,P3 ; Tunggu hingga tombol P3.0 dilepas CJNE A,#0FFH,TUNGGU ;
SJMP MULAI ; Ulangi lagi dari awal TERUS:
MOV R0,#0 ; Ubah status R0=0 (lampu mati) MOV P1,#0FFH ; dan matikan lampu LED di port 1
SJMP TUNGGU ; untuk menghindari bouncing, lompat ke TUNGGU ;
BAB 3.
PENGGAKSESAN SEVEN SEGMENT
Seven segment merupakan komponen elektronika yang dapat digunakan
untuk menampilkan karakter angka, didesain dari 7 led dan 1 dot point dengan
ukuran bermacam-macam. Perhatikan gambar 3.1. Merupakan konfigurasi pin
seven segment (Common Anoda).
Gambar3.1. Konfigurasi Seven Segment
Dari gambar 3.1. Tampak 7 pin yang digunakan untuk membentuk karakter
angkadan Anda harus membuatkan tabel pengaksesan pin seven segment
tersebut. Sebagai contoh seven segment dihubungkan dengan port 1 seperti
terlihat pada gambar 3.2.
Tabel 3.1. Konfigurasi Data Karakter 7 Segment
Setelah ditabelkan konfigurasi data karakter 7 segment maka didapatkan
data hexa dari masing-masing karakter angka 0-9, seperti pada tabel 3.1.
Sebagai contoh untuk menampilkan karakter 4 maka dikirim data 71h.
Bila Anda ingin mencoba pada program top View Simulator lakukan pengaturan
port seven segment dengan memilih menu
File
àExsternal Module
Settings
àLed, aturlah pada frame Interface Selection pilih Non-Multiflexed
serta pilihlah Selection of Port Lines Number of Digits , setelah itu tampil
konfigurasi port terhadap pin seven segment tampak seperti pada gambar 3.4.
Gambar 3.4. Form Port Line Selection
Lakukan pengaturannya sesuai rangkaian yang anda buat dan sesuaikan juga
dengan tabel 3.1, setelah seluruh bit diatur klik OK.
Selanjutnya lakukan penulisan listing program sebagai contoh program pada
gambar 3.5. dibawah ini adalah pengaksesan seven segment dengan
pengiriman data secara langsung.
Gambar 3.5. Program Pengaksesan 7 Segmen dengan Perieriman data Secara Langsung
Anda dapat mencoba dengan teknik menggunakan Data Pointer agar
listing program lebih pendek algoritma penggunaan data pointer tampak pada
gambar 3.6. Lakukan eksekusi dan Load-lah hasilnya dengan TopView
Simulator, bila belum paham diskusikan dengan Instruktur Anda.
Gambar 3.6. Algoritma Pengaksesan 7 Segmen mengunakan Data Pointer (Non-MultiPlexer)
Dibawah ini listing program pengaksesan seven segment menggunakan Data
pointer :
DPTR=DPTR+1 R0=R0-1
DPTR=alamat data numeric R0=10
A=data pada alamat DPTR
P1
ßA
start
R0=0 ?
tdk
ya
BAB 4
PEMBACAAN TOMBOL KEYPAD MATRIK
Didalam program salah satu lajur difungsikan sebagai input (masukan)
dan lainnya sebagai output (keluaran). Lajur yang berfungsi sebagai output,
dalam satu waktu yang sama hanya terdapat satu lajur saja yang berlogika nol
‘0’ dan sisanya berlogika satu ‘1’. Perhatikan gambar 4.1
Gambar 4.1. Rangkaian Tombol KeyPad Matrik
Seperti pada gambar 4.1. tombol keypad matrik sebagai contoh
dipasang pada port 2, untuk konfigurasi baris P2.0, P2.1,P2.2,P2.3 dan untuk
kolom P2.4,P2.5,P2.6. Pola pembacaannya adalah jika tombol nol ‘0’ ditekan
maka bit P2.0 dan P2.4 terhubung, tombol empat ‘4’ ditekan maka P2.1 dan
P2.5 terhubung. Pengaturan konfigurasi keypad matrik pada Program TopView
Simulator dapat dipilih menu FileàExternal Modules SettingàKeyBoard,
kemudian pilih frame ‘Matrik KeyPad’ dan pilih ‘3x4’ (sesuaikan dengan
perangkat yang akan digunakan), selanjutnya aturlah konfigurasi keypad matrik
sesuai dengan skema tombol keypad matrik, perhatikan gambar 4.2.
Gambar 4.2. Pemilihan KeyPad Matrik
Contoh program pembacaan Keypad Matrik
;======================================= ; Program demo keypad 3x4 dipasang
; pada port 3, output pada port 1
;======================================= kolom1 bit p3.0 ; kiri (1,4,7,redial) kolom2 bit p3.1
kolom3 bit p3.2
baris1 bit p3.3 ; atas (1,2,3) baris2 bit p3.4 baris3 bit p3.5 baris4 bit p3.6 keyport equ P3 keydata equ 50h keybounc equ 51H org 0h
ulang: call Keypad3x4 mov A,keydata cjne A,#0FFH,ditekan jmp ulang ditekan: cpl A mov P1,A
; output pd keydata(0-9,E=redial,F=#) ;==================================== Keypad3x4: mov keybounc,#50 mov keyport,#0FFh clr kolom1 ul1: jb baris1,key1 djnz keybounc,ul1 mov keydata,#1 ret key1: jb baris2,key2 djnz keybounc,key1 mov keydata,#4 ret key2: jb baris3,key3 djnz keybounc,key2 mov keydata,#7 ret key3: jb baris4,key4 djnz keybounc,key3 mov keydata,#0Eh ret
key4: setb kolom1 clr kolom2 jb baris1,key5 djnz keybounc,key4 mov keydata,#2 ret key5: jb baris2,key6 djnz keybounc,key5 mov keydata,#5 ret key6: jb baris3,key7 djnz keybounc,key6 mov keydata,#8 ret key7: jb baris4,key8 djnz keybounc,key7 mov keydata,#0 ret
key8: setb kolom2 clr kolom3 jb baris1,key9 djnz keybounc,key8 mov keydata,#3 ret key9: jb baris2,key10 djnz keybounc,key9 mov keydata,#6 ret key10: jb baris3,key11 djnz keybounc,key10 mov keydata,#9 ret key11: jb baris4,key12 djnz keybounc,key11 mov keydata,#0Fh ret
key12: mov keydata,#0FFh ret
BAB 5
INTERFACE LCD
Dalam memprogram pengaksesan LCD harus diperhatikan konfigurasi
dari LCD tersebut, berbagai merek LCD yang ada dipasaran namun semuanya
hampir sama, hanya saja jumlah kolom dan barisnya yang membedakan.
Dalam artikel ini dibahas tehnik pemrograman LCD menggunakan
mikrokontroler seri ATMEL AT89Sxx. Perhatikan gambar 5.2. Blok rangkaian
internal LCD 16x2.
Gambar 5.1.
Gambar 5.2. Blok Diagram LCD
Pada gambar 5.3. Konfigurasi pin LCD double pin, dan gambar 5.4.
Konfigurasi single pin. Interface LCD menggunakan mikrokontroler dapat
dilakukan dengan lebar data 8 bit dan 4 bit. Untuk pengaksesan lebar data 4 bit
digunakan untuk efisiensi pemakaian port (sisa port dipakai keperluan yang
lain).
Untuk menuliskan karakter ke layar LCD, harus memenuhi aturan yang
telah ditetapkan oleh pabrikan modul LCD. Hampir semua modul LCD
mempunyai konfigurasi yang sama yaitu setiap baris dan kolom karakter pada
LCD memupnyai alamat sendiri-sendiri, seperti pada gambar 5.5. Merupakan
pengalamatan karakter pada layer LCD.
Gambar 5.5.
Gambar 5.4 Gambar 5.3
(Register Select) berlogika satu “1” (high) maka data yang diterima LCD adalah
data karakter. Bila pin RS (Register Select) berlogika nol “0” (low) maka data
yang diterima LCD adalah data instruksi bagi LCD tersebut. Instruksi diperlukan
antara lain untuk inisialisasi LCD, meletakkan kursor pada baris dan kolom
tertentu, hapus layar dan lainnya (dapat dilihat pada datasheet LCD).
Gambar 5.6. Contoh Rangkaian Interface LCD 8 bit
Untuk menggunakan software TopView Simulator dapat diatur
konfigurasi layar LCD dengan memilih menu
FileàExternal Modul
SettingsàLCD. Pilih banyak baris LCD misalnya 2x16, sperti terlihat pada
gambar 5.7, lebar databus 8 bit. Selanjutnya pilih tombol “Port Line Selection”
untuk mengatur konfigurasi pin mikrokontroler dengan pin LCD, dalam hal ini
harus disesuaikan dengan konfigurasi dalam listing program.
Gambar 5.7. Pengaturan Modul LCD
Dibawah ini adalah algoritma pemrograman interface LCD menggunakan
mikrokontroler.
Operasi Interface lebar data 4 bit :
;---;Program Demo untuk menjalankan LCD 16 x 2 ;OPERASI 8 BIT
org 0h
nop
ljmp mulai write_inst:
mov P1,#0h ;untuk memuliskan mov P0,R1 ;intruksi ke LCD setb P1.1 ;module
clr P1.1
acall delay ret
;
write_data:
mov P1,#01 ;untuk menuliskan mov P0,R1 ;data ke LCD setb P1.1 ;module clr P1.1 acall delay ret delay: mov R0,#0 delay1: mov R5,#50h djnz R5,$ djnz R0,delay1 ret Ldelay: mov R2,#030h Ld1: acall delay djnz R2,Ld1 ret tulis: mov R4,#3 mov DPTR,#Huruf
barisa: mov R3,#16 ;jumlah kolom baris atas mov R1,#80h ;karakter pertama di alamat 80 acall write_inst tulis1: clr A movc 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 movc A,@A+DPTR mov R1,A Inc DPTR acall write_data djnz R3,Tulis2 acall Ldelay djnz R4,barisa ret
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
Huruf: DB 'SELAMAT DATANG ' DB ‘ibnu budi r. ' DB 'di. Smkn 1glagah' DB ‘banyuwangi’ DB 'jawa – timur’ DB ‘elektronika’ End
Untuk mengetahui proses penulisan data dan pengiriman instruksi ke
layar LCD dapat dilihat menggunakan Software TopView Simulator dengan
memilih menu ViewàSFR Bit Status Window, perhatikan 5.8. “Kondisi bit SFR
(Special Function Register)” , setelah Anda load programnya dan cobalah
untuk menganalisa proses penulisan karakter dan pengiriman instruksi dengan
menekan tombol keyboard “F8” atau pilih menu Singgle StepàStep Over.
Dibawah ini contoh program untuk penulisan kakrakter menggunakan Keypad
matrik.
LCD_RS bit P1.0 LCD_CS bit P1.1
kolom1 bit p2.4 ; kiri (1,4,7,redial) kolom2 bit p2.5 ; atas (1,2,3) kolom3 bit p2.6
baris1 bit p2.0 ; 1 2 3 baris2 bit p2.1 ; ABC DEF baris3 bit p2.2 ;
baris4 bit p2.3 ; 4 5 6 keyport equ P2 ; GHI JKL MNO old_key equ 40h ;
count_key equ 41h ; 7 8 9 keydata equ 42h ; PQR STU VWX alphacode equ 43h ;
n equ 44h ; REDIAL 0 # lama equ 45h ; YZ[ ;<= space]-
;---; scanning tombol untuk alpha numerik org 0h ;================== ; Inisialisasi LCD ;================== call Ldelay mov A,#03Fh call write_inst call write_inst mov A,#0Dh call write_inst mov A,#06h call write_inst mov A,#01h call write_inst
mov old_key,#0 mov count_key,#0 scan_alpha_numerik: call keypad3x4 mov A,keydata cjne A,#0FFh,key_pressed_1 sjmp scan_alpha_numerik key_pressed_1: orl A,#30h cjne A,Old_key,new_char mov Old_key,A inc count_key anl A,#0Fh mov B,#3 mul AB add A,#3Ah add A,count_key cjne A,#5Eh,space mov A,#2Dh
space: cjne A,#5Ch,not_space mov A,#20h not_space: mov alphacode,A call tampil mov lama,keydata call tunggu_tombol_dilepas mov A,count_key cjne A,#3,scan_alpha_numerik mov old_key,#0 mov count_key,#0 jmp scan_alpha_numerik new_char: mov Old_key,A mov alphacode,A mov count_key,#0 call tampil mov lama,keydata call tunggu_tombol_dilepas jmp scan_alpha_numerik ;
tunggu_tombol_dilepas: jnb baris1,$ jnb baris2,$ jnb baris3,$ jnb baris4,$ ret ;================================= tampil: mov A,keydata
cjne A,lama,naik tterus: mov A,ALPHACODE call write_data
mov A,n call write_inst ret
naik: cjne A,#0Fh,cek_BS mov ALPHACODE,#20H mov old_key,#0 mov lama,#0 mov keydata,#0FFh mov count_key,#0 naik1: inc n mov A,n call write_inst sjmp tterus
cek_BS: cjne A,#0Eh,naik1 mov A,#20H call write_data dec n mov A,n cjne A,#80h,cekbkb cekbkb: jnc terus9 mov A,#80h mov n,#7Fh terus9: call write_inst mov old_key,#3Eh mov count_key,#0 mov keydata,#0FFh
; routine u/ baca keypad 3x4 ; output pd keydata(0-9,E=redial,F=#) ;==================================== Keypad3x4: mov keyport,#0FFh clr kolom1 ul1: jb baris1,key1 mov keydata,#1 ret key1: jb baris2,key2 mov keydata,#4 ret key2: jb baris3,key3 mov keydata,#7 ret key3: jb baris4,key4 mov keydata,#0Eh ret
key4: setb kolom1 clr kolom2 jb baris1,key5 mov keydata,#2 ret key5: jb baris2,key6 mov keydata,#5 ret key6: jb baris3,key7 mov keydata,#8 ret key7: jb baris4,key8 mov keydata,#0 ret
key8: setb kolom2 clr kolom3 jb baris1,key9 mov keydata,#3 ret key9: jb baris2,key10 mov keydata,#6 ret
key10: jb baris3,key11 mov keydata,#9 ret key11: jb baris4,key12 mov keydata,#0Fh ret
key12: mov keydata,#0FFh ret
;======================================== ; Routine untuk menulis instruksi ke LCD
;======================================== write_inst:
clr LCD_RS setb LCD_CS
mov P0,A ;intruksi ke LCD clr LCD_CS ;module setb LCD_CS
call delay ret
;======================================== ; Routine untuk menulis data ke LCD
;======================================== write_data:
setb LCD_RS setb LCD_CS
mov P0,A ;data ke LCD clr LCD_CS ;module setb LCD_CS
call delay ret
;========================= ; Routine penghasil delay
;========================= delay: mov R0,#50
delay1: mov R5,#0 djnz R5,$ djnz R0,delay1
djnz R2,Ld1 ret
end
latihan :
a. Cobalah untuk mengembangkan program password menggunakan
Keypad Matrik dan LCD dengan ketentuan bila passwordnya cocok led
pada port yang ditunjuk aktif dan pada LCD tampil tulisan “Password
Cocok”.
b. Kembangkan program interface LCD dengan model pengiriman lebar
databus 4 bit, dengan konfigurasi sebagai berikut:
• Databus (4) dihubungkan dengan P1.4
• Databus (5) dihubungkan dengan P1.
• Databus (6) dihubungkan dengan P1.
• Databus (7) dihubungkan dengan P1.
• Enable dihubungkan dengan P1.2
• RS dihubungkan dengan P1.3
BAB 6
INTERFACE ADC (Analog to Digital Converter)
Pengkonversi tegangan Analog menjadi data Digital banyak
digunakan diberbagai peralatan misalnya : spedometer (rpm) pada mobil,
spedometer untuk digital feul system pada mobil, rpm meter/ tacho meter digital
dan lainnya.
Gambar 6.1.Blok diagram ADC
Dalam pemrograman mikrokontroler AT89XX untuk interface dengan
ADC dalam hal buku ini digunakan IC ADC0808, karena IC tersebut
mempunyai 8 buah masukan dengan 3 buah address / pengalamatan data yaitu
A0,A1,A2. perhatikan gambar 6.2. konfigurasi IC ADC0808, IC ini dengan 28
ADC
Input Analog
Mikrokontroler
Data
Digital
0
00h
FFh
5 v
Tegangan masukan
Analog
Data keluaran berupa
Digital
Gambar 6.2. Konfigurasi IC ADC0808
Pada gambar 6.2. dilihat pada pin 23,24,25 merupakan pin Address A0,A1,A2
pin ini merupakan pin pemilihan input tegangan analog, perhatikan tabel 6.1.
Tabel 6.1. Pemilihan Chanel Input
Untuk menggunakan pin input chnael 0 mmaka Address A0 diberi
logika ’0’, A1 diberi logika ’0’, dan A2 diberi logika ’0’. Begitu juga bila ingin
memberikan masukan tegangan analog pada Input 1 maka A0=1,A1=0,A2=0.
pemberian logika ini diatur pada mikrokontroler agar pin penghubung pada
masing-masing Address berlogika sesuai dengan tabel pengalamatannya.
Urutan pengiriman datanya harus sesuai dengan Timing Diagram seperti pada
datasheet IC0808, perhatikan gambar 6.3. dibawah ini.
Gambar 6.3. Timing Diagram Pengiriman Data ADC 0808
Contoh program interface mikrokontroler dengan ADC 08008
ADC_A bit P2.7 ADC_B bit P2.6 ADC_C bit P2.5 ADC_OE bit P2.4
ADC_START bit P2.3 ;pin start dan ALE dihubungkan ADC_EOC bit P2.2
;
org 0h
; ADC channel 0 ABC = 000 / input 1 clr ADC_A
clr ADC_B clr ADC_C ; kondisi awal
nop clr ADC_START not_EOC: jnb ADC_EOC,not_EOC delay: djnz R2,$ djnz R3,delay
setb ADC_OE ; Baca Data melalui P3 djnz R3,$
mov A,P3 ;pin untuk pembacaan data digital clr ADC_OE
cpl A mov P1,A
sjmp next_sampling end