buku panduan trainer mikrontroler mcs-51
TRANSCRIPT
Buku Panduan
TRAINER MIKROKONTROLERATMEL SERI AT89S51/52
Disusun Oleh :
CAHAYA TEKNIK Konsultan Teknik Elektro dan MikrokontrolerPerumahan Queen Garden III, Blok F, no. 26
Waru, Baki, SukoharjoTelp : 08121528437, 0271-7916479
DAFTAR ISI
BAGIAN I. PEMBUATAN PROGRAM …………………………………………………… 4
1.1. Pembuatan Program Bahasa Assembly ……………………………………………….. 4
1.2. Pengisian Program Ke Mikrokontroler ……………………………………………….. 5
BAGIAN II. SKEMA RANGKAIAN TIAP MODUL ……………………………………… 8
2.1. Power Supply 5 volt …………………………………………………………………… 8
2.2. Modul Mikrokontroler AT89S51 ……………………………………………………… 8
2.3. Modul Keluaran Led ……………………………………………………………..…… 9
2.4. Modul Keluaran LCD ………………………..………………………………..………. 9
2.5. Modul Keluaran Motor Stepper ……………………………………….…………..…… 9
2.6. Modul Keluaran Seven Seqment ……………………………………….………..……. 10
2.7. Modul Masukan Sakelar Logika ………………………………………………………. 11
2.8. Modul Masukan Keypad ……………………………………………………………… 11
BAGIAN III. APLIKASI MIKROKONTROLER ……………………………………….… 12
3.1. Aplikasi Led ……………………………………………………………………..……. 12
3.1.1. Menyalakan Led Secara Port Penuh ………………………………………..….……… 12
Program menyalakan led secara satu port penuh (nama file : Prog_11a.ASM) ……… 12
Program menyalakan led secara per-Bit (nama file : Prog_11b.ASM) ………………. 12
Program menyalakan led secara berkedip (nama file : Prog_11c.ASM) ……………... 13
Program menyalakan led secara berjalan (nama file : Prog_11d.ASM) ……………… 13
3.1.2. Sakelar Masukan Sebagai Pengendali Nyala Led …………………………………….. 14
Program menyalakan led melalui sakelar masukan (nama file : Prog_12a.ASM) ……. 14
3.2. Aplikasi Motor DC ……………………………………………………………………. 15
3.3. Aplikasi Motor Stepper ………………………………………………………………... 16
Program mengendalikan motor stepper berputar ke kanan (nama file : Prog_31a.ASM) 16
Program mengendalikan motor stepper berputar ke kiri (nama file : Prog_31b.ASM) .. 17
3.4. Aplikasi Seven Seqment ………………………………………………………………. 17
3.4.1. Menyalakan Seven Seqment Tunggal …………………………………………………. 18
Program untuk menampilkan angka 0 pada digit-0 (nama file: Prog_41a.ASM) …….. 19
Program untuk menampilkan angka 7 pada digit-0 (nama file: Prog_41b.ASM) ……. 19
3.4.2. Menyalakan Seven Seqment Dengan Sistem Bergantian (scanning) ………………… 19
Program untuk menampilkan angka 01234567 pada semua digit seven seqment
2
(nama file: Prog_42a.ASM) …………………………………………………………… 20
Program untuk menampilkan angka 98765432 pada semua digit seven seqment
menggunakan tabel tengok (nama file: Prog_42b.ASM) ……………………………... 20
3.5. Aplikasi LCD …………………………………………………………………………. 22
3.5.1. Display LCD …………………………………………………………………………… 22
Program menampilkan tulisan pada LCD (nama file : Prog_51a.ASM). 22
3.6. Aplikasi Keypad ………………………………………………………………………. 25
3.6.1. Aplikasi Keypad Dengan Keluaran Seven Seqment Tunggal …………………………. 25
Program menampilkan angka dan karakter melalui keypad (nama file : Prog_61a.ASM)26
Lampiran Data Sheets IC
AT89S51 Microcontroller with 4K Bytes In-System Programmable Flash
7805 Voltage Regulator
74HC573 Octal D-Type Latch with 3-State Outputs
ULN2003 Seven darlington array
3
BAGIAN I
PEMBUATAN PROGRAM
1.1. Pembuatan Program Bahasa Assembly
Langkah-langkah pembuatan program mikrokontroler menggunakan bahasa rakitan
(assembly) adalah sebagai berikut :
a. Buat folder pada komputer dan beri nama “Mikrokontroler”.
b. Tuliskan program (source code) dengan menggunakan Notepad pada Windows.
c. Simpan pada folder “Mikrokontroler” dan berilah nama dan ekstensi .ASM
(contoh : Led1.ASM). Catatan : nama_file maksimal 8 karakter dan diawali dengan
huruf, karakter seperti _ dan – boleh digunakan. Save as type : All Files.
4
d. Kompilasi program dengan cara membuka program ASM51.EXE dan tuliskan nama file
yang sudah disimpan tadi, kemudian tekan enter. Catatan : penulisan nama file boleh
menggunakan.ASM atau tidak menggunakan ekstensi .ASM
e. Hasil kompilasi adalah muncul dua file yaitu : LED1.HEX dan LED1.LST yang dapat
dilihat pada folder “Mikrokontroler”. Fungsi dari kedua file ini adalah sebagai berikut.
File dengan nama LED1.HEX adalah merupakan file heksa yang akan dimasukkan ke
mikrokontroler. File dengan nama LED1.LST digunakan untuk melihat kesalaha (error)
hasil kompilasi dan dibuka dengan program WordPad pada Windows.
1.2. Pengisian Program Ke Mikrokontroler
Langkah-langkah pengisian program ke mikrokontroler adalah sebagai berikut :
a. Buka program ISP_PROG v1.4
5
b. Klik “Options” kemudian klik “Device” untuk memilih seri mikrokontroler yang
digunakan (AT89S51) kemudian klik “OK”.
c. Klik “Options” lalu klik “Setting” untuk mengatur nomer Port komunikasi (Port Comm)
pada komputer yang digunakan kemudian klik “OK”.
d. Klik “File” lalu klik “Load FLASH File” untuk mengambil file heksa yang akan diisikan
ke mikrokontroler. Pilih file heksa kemudian klik “Open”
6
e. Klik “CHIP ERASE” dan klik “WRITE FLASH” kemudian klik “RUN”. Tunggu
beberapa saat sampai mikrokontroler terprogram semua.
f. Pengisian file heksa ke mikrokontroler telah selesai, setelah itu amati hasilnya pada
modul aplikasi.
7
BAGIAN II
SKEMA RANGKAIAN TIAP MODUL
2.1. Power Supply 5 volt
2.2. Modul Mikrokontroler AT89S51
Keterangan : Mikrokontroler yang dapat digunakan adalah seri :
- AT89S51
- AT89S52
8
2.3. Modul Keluaran Led
2.4. Modul Keluaran LCD
2.5. Modul Keluaran Motor Stepper
9
2.6. Modul Keluaran Seven Seqment
Keterangan : Seven seqment yang digunakan adalah jenis CA (Common Anoda).
10
2.7. Modul Masukan Sakelar Logika
2.8. Modul Masukan Keypad
11
BAGIAN III
APLIKASI MIKROKONTROLER
3.1. Aplikasi Led
3.1.1. Menyalakan Led Secara Port Penuh
Program menyalakan led secara satu port penuh (nama file : Prog_11a.ASM).
;--------------------------------------------------------; Menyalakan semua led secara port penuh;--------------------------------------------------------
$MOD51 ; menggunakan mikrokontroler seri AT89S51ORG 00h ; tempatkan program pada alamat 0000h
MOV P2, #10101010b ; logika '1' led padam dan logika '0' led nyala nyala: NOP ; tanpa operasi
JMP nyala ; kembali ke label "nyala"END ; selesai
Hasil : Led nomer 0, 2, 4, 6 menyala dan led nomer 1, 3, 5, 7 padam
Program menyalakan led secara per-Bit (nama file : Prog_11b.ASM).
;---------------------------------------------------
; Menyalakan semua led secara per-Bit;---------------------------------------------------
$MOD51 ; menggunakan mikrokontroler seri AT89S51ORG 00h ; tempatkan program pada alamat 0000h
SETB P2.0 ; led 0 padamCLR P2.1 ; led 1 nyalaSETB P2.2 ; led 2 padam
12
CLR P2.3 ; led 3 nyalaSETB P2.4 ; led 4 padamCLR P2.5 ; led 5 nyalaSETB P2.6 ; led 6 padamCLR P2.7 ; led 7 nyala
nyala: NOP ; tanpa operasiJMP nyala ; kembali ke label "nyala"
END ; selesai
Hasil : Led nomer 0, 2, 4, 6 padam dan led nomer 1, 3, 5, 7 menyala.
Program menyalakan led secara berkedip (nama file : Prog_11c.ASM).
;--------------------------------------------
; Menyalakan led secara berkedip;--------------------------------------------
$MOD51ORG 00h
kedip: MOV P2, #0F0h ; led 7,6,5,4 padam, led 3,2,1,0 nyalaCALL tundaMOV P2, #0Fh ; led 7,6,5,4 nyala, led 3,2,1,0 padamCALL tundaJMP kedip ; kembali ke label "kedip"
tunda: MOV R5, #10 tunda1: MOV R6, #200 tunda2: MOV R7, #200
DJNZ R7, $DJNZ R6, tunda2DJNZ R5, tunda1RET
END ; selesai
Hasil : Keempat led menyala secara bergantian (berkedip).
Program menyalakan led secara berjalan (nama file : Prog_11d.ASM).
;----------------------------------------------; Menyalakan led berjalan ke kanan;----------------------------------------------
$MOD51ORG 00h
kanan: MOV P2, #01111111b ; led 7 nyala, lainnya padamCALL tunda ; panggil sub-program tundaMOV P2, #10111111b ; led 6 nyala, lainnya padamCALL tundaMOV P2, #11011111b ; led 5 nyala, lainnya padamCALL tundaMOV P2, #11101111b ; led 4 nyala, lainnya padamCALL tundaMOV P2, #11110111b ; led 3 nyala, lainnya padamCALL tundaMOV P2, #11111011b ; led 2 nyala, lainnya padamCALL tundaMOV P2, #11111101b ; led 1 nyala, lainnya padamCALL tundaMOV P2, #11111110b ; led 0 nyala, lainnya padam
13
CALL tundaJMP kanan ; kembali ke awal lagi
tunda: MOV R5, #10 ; sub-program tunda tunda1: MOV R6, #200 tunda2: MOV R7, #200
DJNZ R7, $DJNZ R6, tunda2DJNZ R5, tunda1RET
END ; selesai
Hasil : Led berjalan ke kanan
3.1.2. Sakelar Masukan Sebagai Pengendali Nyala Led
Program menyalakan led melalui sakelar masukan (nama file : Prog_12a.ASM).
;---------------------------------------------------------------------------
; Menyalakan semua led menggunakan sakelar masukan;---------------------------------------------------------------------------
$MOD51ORG 00h
pindah: MOV P0, P3 ; data pada port-3 dipindahkan ke port-0JMP pindah
END ; selesai
Hasil : Sakelar masukan pada Port-3 mengendalikan nyala led pada Port-0.
14
3.2. Aplikasi Motor dc
15
3.3. Aplikasi Motor Stepper
Program mengendalikan motor stepper berputar ke kanan (nama file : Prog_31a.ASM).
;--------------------------------------------; Motor stepper berputar ke kanan;--------------------------------------------
$MOD51ORG 00h
kanan: MOV P0, #00000001bCALL tundaMOV P0, #00000010bCALL tundaMOV P0, #00000100bCALL tundaMOV P0, #00001000bCALL tundaJMP kanan
tunda: MOV R5, #5 tunda1: MOV R6, #100 tunda2: MOV R7, #100
DJNZ R7, $DJNZ R6, tunda2DJNZ R5, tunda1RET
END
Hasil : Motor stepper berputar ke kanan.
16
Program mengendalikan motor stepper berputar ke kiri (nama file : Prog_31b.ASM).
;----------------------------------------; Motor stepper berputar ke kiri;----------------------------------------
$MOD51ORG 00h
kiri: MOV P0, #00001000bCALL tundaMOV P0, #00000100bCALL tundaMOV P0, #00000010bCALL tundaMOV P0, #00000001bCALL tundaJMP kiri
tunda: MOV R5, #5 tunda1: MOV R6, #100 tunda2: MOV R7, #100
DJNZ R7, $DJNZ R6, tunda2DJNZ R5, tunda1RET
END
Hasil : Motor stepper berputar ke kiri
3.4. Aplikasi Seven Seqment
Untuk dapat menggunakan modul seven seqment, perhatikan tabel pengisian data untuk
tiap-tiap digit seven seqment dibawah ini.
Tabel pengisian data untuk seven seqment digit 0, 2, 4, 6
Angka M L Data
(heksa)g f a b . c d e
0 1 0 0 0 1 0 0 0 88
1 1 1 1 0 1 0 1 1 EB
2 0 1 0 0 1 1 0 0 4C
3 0 1 0 0 1 0 0 1 49
4 0 0 1 0 1 0 1 1 2B
5 0 0 0 1 1 0 0 1 19
6 0 0 0 1 1 0 0 0 18
7 1 1 0 0 1 0 1 1 CB
8 0 0 0 0 1 0 0 0 08
9 0 0 0 0 1 0 0 1 09
17
Tabel pengisian data untuk seven seqment digit 1, 3, 5, 7
Angka M L Data
(heksa)b a f g e d c .
0 0 0 0 1 0 0 0 1 11
1 0 1 1 1 1 1 0 1 7D
2 0 0 1 0 0 0 1 1 23
3 0 0 1 0 1 0 0 1 29
4 0 1 0 0 1 1 0 1 4D
5 1 0 0 0 1 0 0 1 89
6 1 0 0 0 0 0 0 1 81
7 0 0 1 1 1 1 0 1 3D
8 0 0 0 0 0 0 0 1 01
9 0 0 0 0 1 0 0 1 09
3.4.1. Menyalakan Seven Seqment Tunggal
18
Program untuk menampilkan angka 0 pada digit-0 (nama file: Prog_41a.ASM)
;----------------------------------------------
; Menampilkan angka 0 pada digit-0;----------------------------------------------
$MOD51ORG 00h
MOV P2, #88h ; tampilkan angka 0 tampil: NOP
JMP tampilEND
Hasil : Pada digit-0 tampil angka 0.
Program untuk menampilkan angka 7 pada digit-0 (nama file: Prog_41b.ASM)
;----------------------------------------------
; Menampilkan angka 7 pada digit-0;----------------------------------------------
$MOD51ORG 00h
MOV P2, #0CBh ; tampilkan angka 7 tampil: NOP
JMP tampilEND
Hasil : Pada digit-0 tampil angka 7.
3.4.2. Menyalakan Seven Seqment Dengan Sistem Bergantian (scanning)
19
Program untuk menampilkan angka 01234567 pada semua digit seven seqment
(nama file: Prog_42a.ASM)
; ------------------------------------------------------------------------
; Menampilkan seven seqment dengan sistem scanning; ------------------------------------------------------------------------
$MOD51ORG 00h
scan: MOV P2, #88h ; tampilkan angka 0 MOV P0, #11111110b ; aktifkan digit-0 CALL tunda
MOV P2, #7Dh ; tampilkan angka 1 MOV P0, #11111101b ; aktifkan digit-1 CALL tunda
MOV P2, #4Ch ; tampilkan angka 2 MOV P0, #11111011b ; aktifkan digit-2 CALL tunda
MOV P2, #29h ; tampilkan angka 3 MOV P0, #11110111b ; aktifkan digit-3 CALL tunda
MOV P2, #2Bh ; tampilkan angka 4 MOV P0, #11101111b ; aktifkan digit-4 CALL tunda
MOV P2, #89h ; tampilkan angka 5 MOV P0, #11011111b ; aktifkan digit-5 CALL tunda
MOV P2, #18h ; tampilkan angka 6 MOV P0, #10111111b ; aktifkan digit-6 CALL tunda
MOV P2, #3Dh ; tampilkan angka 7 MOV P0, #01111111b ; aktifkan digit-7 CALL tunda
JMP scan tunda: MOV R6, #10d ; tunda 2,5 mS (8 x 50 Hz) tunda1: MOV R7, #125d
DJNZ R7, $ ; 125 * 2 uS = 250 uSDJNZ R6, tunda1 ; 250 * 10 = 2,5 mSRET
END
Hasil : Tampil angka 01234567 pada seven seqment
Program untuk menampilkan angka 98765432 pada semua digit seven seqment
menggunakan tabel tengok (nama file: Prog_42b.ASM)
; --------------------------------------------------------------------------------------; Menampilkan seven seqment dengan menggunakan tabel tengok; ---------------------------------------------------------------------------------------
$MOD51digit_0 EQU 30hdigit_1 EQU 31hdigit_2 EQU 32hdigit_3 EQU 33hdigit_4 EQU 34h
20
digit_5 EQU 35hdigit_6 EQU 36hdigit_7 EQU 37h
ORG 00hMOV digit_0, #7dMOV digit_1, #6dMOV digit_2, #5dMOV digit_3, #4dMOV digit_4, #3dMOV digit_5, #2dMOV digit_6, #1dMOV digit_7, #0d
scan: MOV DPTR, #num_0246MOV A, digit_0 ; konversi digit-0MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-0
MOV P0, #11111110b ; aktifkan digit-0 CALL tunda
MOV DPTR, #num_1357MOV A, digit_1 ; konversi digit-1MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-1
MOV P0, #11111101b ; aktifkan digit-1 CALL tunda
MOV DPTR, #num_0246MOV A, digit_2 ; konversi digit-2MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-2
MOV P0, #11111011b ; aktifkan digit-2 CALL tunda
MOV DPTR, #num_1357MOV A, digit_3 ; konversi digit-3MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-3
MOV P0, #11110111b ; aktifkan digit-3 CALL tunda
MOV DPTR, #num_0246MOV A, digit_4 ; konversi digit-4MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-4
MOV P0, #11101111b ; aktifkan digit-4 CALL tunda
MOV DPTR, #num_1357MOV A, digit_5 ; konversi digit-5MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-5
MOV P0, #11011111b ; aktifkan digit-5 CALL tunda
MOV DPTR, #num_0246MOV A, digit_6 ; konversi digit-6MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-6
MOV P0, #10111111b ; aktifkan digit-6 CALL tunda
MOV DPTR, #num_1357MOV A, digit_7 ; konversi digit-7
21
MOVC A, @A+DPTRMOV P2, A ; tampilkan digit-7
MOV P0, #01111111b ; aktifkan digit-7 CALL tunda
JMP scan tunda: MOV R6, #10d ; tunda 2,5 mS (8 x 50 Hz) tunda1: MOV R7, #125d
DJNZ R7, $ ; 125 * 2 uS = 250 uSDJNZ R6, tunda1 ; 250 * 10 = 2,5 mSRET
num_0246: DB 88h,0EBh, 4Ch, 49h, 2Bh, 19h, 18h,0CBh, 08h, 09hnum_1357: DB 11h, 7Dh, 23h, 29h, 4Dh, 89h, 81h, 3Dh, 01h, 09h
ENDHasil : Tampil angka 76543210 pada seven seqment
3.5. Aplikasi LCD
3.5.1. Display LCD
Program menampilkan tulisan pada LCD (nama file : Prog_51a.ASM)
;-------------------------------; Menampilkan tulisan pada LCD;-------------------------------
$MOD51RS BIT P1.2 ; kaki RSRW BIT P1.1 ; kaki R/WE BIT P1.0 ; kaki E
ORG 00h ; ----------------------------------- inisial: CLR RS ; inisial LCD
22
CLR RWCALL delay ; delay 15 mS
CALL delayCALL delayMOV P3, #00110000bCALL pulsa
CALL delay ; delay 5 mSMOV P3, #00110000bCALL pulsaCALL delayMOV P3, #00110000bCALL pulsaMOV P3, #00111000b ; 2 baris, 5x7 dotCALL pulsaMOV P3, #00001100b ; display onCALL pulsaMOV P3, #00000001b ; display clearCALL pulsaMOV P3, #00000110b ; entry mode set, increment, no display shiftCALL pulsa
; -------------------------------------------------MOV DPTR, #string_1 CALL disp_1MOV DPTR, #string_2CALL disp_2
; ===================================run: NOP
JMP run ; =================================== string_1: DB 'SMK Muhammadiyah' string_2: DB ' Gemolong ' ; =================================== disp_1: CLR RS ; atur alamat pada baris-1
CLR RWMOV P3, #10000000bCALL pulsa MOV R0, #0d ; tampilkan pada baris 1MOV A, #0dSETB RSCLR RW
baris_1: MOVC A, @A+DPTRMOV P3, ACALL pulsaINC R0MOV A, R0CJNE R0, #16d, baris_1RET
; ------------------------------------------------- disp_2: CLR RS ; atur alamat pada baris-2
CLR RWMOV P3, #11000000bCALL pulsa MOV R0, #0d ; tampilkan pada baris 2MOV A, #0dSETB RSCLR RW
23
baris_2: MOVC A, @A+DPTRMOV P3, ACALL pulsaINC R0MOV A, R0CJNE R0, #16d, baris_2RET
; ----------------------------------- pulsa: SETB E
CLR E delay: MOV R6, #3d ; 5 mS delay1: MOV R7, #250d
DJNZ R7, $ ; 2 x 250 = 500 uSDJNZ R6, delay1 ; 500 x 10 = 5000 uSMOV P0, #0FFhRET
; ===================================END
Hasil : Tampilan “SMK Muhammadiyah Gemolong” pada layer LCD
24
3.6. Aplikasi Keypad
3.6.1. Aplikasi Keypad Dengan Keluaran Seven Seqment Tunggal
Tabel pengisian data untuk seven seqment digit 0, 2, 4, 6
Angka
Huruf
M L Data
(heksa)g f a b . c d e
0 1 0 0 0 1 0 0 0 88
1 1 1 1 0 1 0 1 1 EB
2 0 1 0 0 1 1 0 0 4C
3 0 1 0 0 1 0 0 1 49
4 0 0 1 0 1 0 1 1 2B
25
5 0 0 0 1 1 0 0 1 19
6 0 0 0 1 1 0 0 0 18
7 1 1 0 0 1 0 1 1 CB
8 0 0 0 0 1 0 0 0 08
9 0 0 0 0 1 0 0 1 09
A 0 0 0 0 1 0 1 0 0A
B 0 0 1 1 1 0 0 0 38
C 1 0 0 1 1 1 0 0 9C
D 0 1 1 0 1 0 0 0 68
* 1 1 1 1 0 1 1 1 F7
# 1 1 1 1 1 1 1 1 FF
Program menampilkan angka dan karakter melalui keypad (nama file : Prog_61a.ASM)
Hasil : Tampilan seven seqment pada digit-0 sesuai dengan tombol keypad yang ditekan.
26