Anda di halaman 1dari 29

MODUL PRAKTIKUM

DASAR MIKROKONTROLER MCS51

Instruktur : CARMA, SST

T E KN IK E L E KT RO N IK A IN DUST R I

SMKN 1 LOSARANG

Page |1

UNIT I Aplikasi Penggunaan Port


1.1. Tujuan Mampu membuat program untuk menghidupkan (mengendalikan) led dan seven segment. Praktikan dapat membuat aplikasi dengan led dan seven segment.

1.2.

Alat Yang Digunakan MCS -51 Trainer Kit Kabel ISP Power Suply 5V

A. Aplikasi LED a. Prosedur Percobaan: Hubungkan Port 1 dengan beban LED. Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP Hubungkan Trainer Kit dengan power supply. Ketikan program assembly tiap percobaan ke NOTEPAD kemudian compile kedalam .hex dengan ASEM. Download program .hex ke Trainer Kit MCS51 menggunakan sotfware ISP 3V0a. b. Listing Program : 1. Mematikan LED pada Port 1
Org 0h mov P1,#11111111b end

Tugas: Buat program untuk menyalakan led ganjil pada port 1. 2. LED berjalan pada Port 1
Org 0h Mov A,#11111110B Mulai: Mov P1,A Acall Delay
Job sheet microcontroller carma@elektronika_industri . smkn1losarang

Page |2

RL A Sjmp Mulai Delay: Mov R0,#0 Delay1: Mov R1,#0 Delay2: Mov R2,#8 Djnz R2,$ Djnz R1,Delay2 Djnz R0,Delay1 Ret End

Tugas: Buat program untuk membuat led genap berjalan.

3. LED menyala pingpong


Org 0h Mov Mulai: Mov Acall Rl Cjne Mulai1: Mov Acall Rr Cjne Sjmp Delay: Delay1: Djnz Djnz Ret End A, #0feh P1,A Delay A A,#7fh,Mulai P1,A Delay A A,#0feh,Mulai1 Mulai Mov R0,#0 Mov R1,#0 R1,$ R0,Delay1

Tugas : Buat program untuk menyalakan led dari tengah kepinggir kemudian kembali ke tengah dan seterusnya. B. Aplikasi Seven Segment a. Prosedur Percobaan: Hubungkan Port 0 Trainer Kit MCS-51 dengan Data 7S Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP Hubungkan Trainer Kit MCS-51 dengan power supply. Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM Download program .hex ke Trainer Kit MCS-51 menggunakan sotfware 3V0.a. ISP

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

Page |3

b. Listing Program : 1. Menampilkan Angka 0 9


Org 0h Mulai: Mov P0,#0C0h Acall Delay Mov P0,#0F9h Acall Delay Mov P0,#0A4h Acall Delay Mov P0,#0B0h Acall Delay Mov P0,#99h Acall Delay Mov P0,#92h Acall Delay Mov P0,#82h Acall Delay Mov P0,#0F8h Acall Delay Mov P0,#80h Acall Delay Mov P0,#90h Acall Delay Sjmp Mulai Delay: Mov R0,#0 Delay1: Mov R1,#0 Delay2: Mov R2,#20h Djnz R2,$ Djnz R1,Delay2 Djnz R0,Delay1 Ret End

Tugas: Buat tampilan Huruf A F pada seven segment kedua! 2. Menampilkan angka 0 9 secara bergantian pada seven segment. ( angka 1 nyala di 7S-1, angka 2 di 7S-2, dan seterusnya ).
Org 0h Mulai: acall ganti Mov P0,#C0h Acall Delay acall ubah Mov P0,#F9h Acall Delay acall ganti Mov P0,#A4h Acall Delay acall ubah Mov P0,#B0h Acall Delay Acall ganti Mov P0,#99h
Job sheet microcontroller carma@elektronika_industri . smkn1losarang

Page |4

Acall Delay acall ubah Mov P0,#92h Acall Delay acall ganti Mov P0,#82h Acall Delay acall ubah Mov P0,#F8h Acall Delay acall ganti Mov P0,#80h Acall Delay acall ubah Mov P0,#90h Acall Delay Sjmp mulai ganti: setb p3.1 clr p3.0 ret ubah: clr p3.1 setb p3.0 ret Delay: Mov R0,#1fh Delay1: Mov R1,#0 Delay2: Mov R2,#10h Djnz R2,$ Djnz R1,Delay2 Djnz R0,Delay1 Ret End

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

Page |5

UNIT II Aplikasi Port I/O

1.1.

Tujuan Mampu membuat program untuk menghidupkan (mengendalikan) led dan seven segment dengan aplikasi masukan berupa saklar.

1.2.

Alat Yang Digunakan MCS -51 Trainer Kit Kabel ISP Power Suply 5V

A. Aplikasi Saklar dan LED a. Prosedur Percobaan: Hubungkan Port Trainer Kit MCS-51 yang akan digunakan dengan Saklar dan LED Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP. Hubungkan Trainer Kit MCS-51 dengan power supply. Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM Download program .hex ke Trainer Kit MCS-51 menggunakan sotfware ISP 3V0a.

b. Listing Program : 1. Mengendalikan LED pada Port2 dengan menggunakan saklar pada P0.0 (untuk Menyalakan ) dan P0.1 ( untuk Mematikan ).
Org 0h Mulai: Mov Cjne Mov Sjmp Terus: Cjne A,#0fdh,Mulai Mov P2,#0ffh Sjmp Mulai End Tugas : Buat program untuk menyalakan dan mematikan LED pada Port2 dengan menggunakan saklar P0.0 A,P0 A,#0feh,Terus P2,#0h Mulai

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

Page |6

2. Menyalakan dan mematikan LED berjalan pada Port 2 dengan saklar Port 3.0
Org 0h Mulai: Mov

R5,#11111110b Mov R4,#1

Cek_Tombol: Jnb Acall Sjmp Proses: Cjne Mov Ljmp Hidupkan: Mov Ljmp Led_Jalan: Cjne Mov Acall Mov Rl Mov Ret Mati: Mov Acall Ret Delay: Delay1: Mov Delay2: Mov Djnz Djnz Djnz Ret End

P3.0,Proses Led_Jalan Cek_Tombol R4,#1,Hidupkan R4,#0 Mulai R4,#1 Mulai R4,#1,Mati P2,R5 Delay A,R5 A R5,A

P2,R5 Delay Mov R0,#0 R1,#0 R2,#8 R2,$ R1,Delay2 R0,Delay1

Tugas : Buat program yang mana apabila p2.0 ditekan, maka led berjalan pada p0 dan apabila p2.1 ditekan, maka led pada p0 akan mati.

B. Aplikasi Saklar dan Seven Segment

a. Prosedur Percobaan: Hubungkan Port Trainer Kit MCS-51 yang akan digunakan dengan 7S. Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP Hubungkan Trainerbord MCS-51 dengan power supply. Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM. Download program .hex ke Trainer Kit MCS-51 menggunakan sotfware ISP 3v0.a

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

Page |7

b. Listing Program : 1. Penekanan Saklar P3 yang ditampilkan seven segment pada Port 0 (P3.0 = 0, P3.1 = 1, P3.2 = 2, P3.3 = 3, P3.4 = 4, P3.5 = 5, P3.6 = 6, P3.7 = 7)
Org 0h Mulai: Mov A,P3 Cjne A,#0feh,Banding1 Mov P0,#C0h Sjmp Mulai Banding1: Cjne A,#0fdh,Banding2 Mov P0,#F9h Sjmp Mulai Banding2: Cjne A,#0fbh,Banding3 Mov P0,#A4h Sjmp Mulai Banding3: Cjne A,#0f7h,Banding4 Mov P0,#B0h Sjmp Mulai Banding4: Cjne A,#0efh,Banding5 Mov P0,#99h Sjmp Mulai Banding5: Cjne A,#0dfh,Banding6 Mov P0,#92h Sjmp Mulai Banding6: Cjne A,#0bfh,banding7 Mov P0,#82h Sjmp Mulai Banding7: Cjne a,#07fh,mulai Mov p0,#F8h Sjmp mulai End

Tugas : Buat program yang mana pada saat p3.0 ditekan, maka akan muncul counter up 0-9 di seven segment 1 dan pada saat p3.1 ditekan, maka muncul counter down 9-0 di seven segment 2.

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

Page |8

UNIT III Keypad, Led dan Seven Segment


Tujuan Mampu membuat program untuk membuat aplikasi dengan keypad, Led dan seven segment.

2.2.

Alat Yang Digunakan Trainer Kit MCS-51 Kabel ISP Keypad Power Supply 5V

A. Aplikasi Keypad dan Seven Segment a. Prosedur Percobaan: Hubungkan Port Trainer Kit MCS-51 yang akan digunakan dengan 7S. Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP Hubungkan Trainer Kit MCS-51 dengan power supply. Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM. Download program .hex ke Trainer Kit MCS-51 menggunakan sotfware ISP 3v0.a b. Listing Program : 1. Program untuk Pembacaan Penekanan Keypad (2x3) pada Seven Segment Catatan : Baris Keypad dihubungkan ke p2.0; p2.2 dan p2.4 Kolom keypad dihubungkan ke p2.1 dan p2.3

Tabel 1. Daftar Arti Tiap Tombol Matrik P2.0 P2.2 P2.4 P2.1 1 3 5 P2.3 2 4 6

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

Page |9

Tabel 2. Daftar Heksa Pada Tampilan Angka Pada 7-Segment Tampilan Angka 0 1 2 3 4 5 6 7 8 9 P0.7 dp 1 1 1 1 1 1 1 1 1 1 P0.6 g 1 1 0 0 0 0 0 1 0 0 P0.5 f 0 1 1 1 0 0 0 1 0 0 P0.4 e 0 1 0 1 1 1 0 1 0 1 P0.3 d 0 1 0 0 1 0 0 1 0 0 P0.2 c 0 0 1 0 0 0 0 0 0 0 P0.1 b 0 0 0 0 0 1 1 0 0 0 P0.0 a 0 1 0 0 1 0 0 0 0 0 Heksa C0 F9 A4 B0 99 92 82 F8 80 90

Org 0h kolom1: mov p2,#11111101b jnb p2.0,no1 jnb p2.2,no3 jnb p2.4,no5 ljmp kolom2 no1: mov p0,#F9h sjmp kolom1 no3: mov p0,#B0h sjmp kolom1 no5: mov p0,#92h sjmp kolom1 kolom2: mov p2,#11110111b jnb p2.0,no2 jnb p2.2,no4 jnb p2.4,no6 ljmp kolom1 no2: mov p0,#A4h sjmp kolom2 no4: mov p0,#99h sjmp kolom2 no6: mov p0,#82h sjmp kolom1 End Tugas : Buat Program yang mana apabila ditekan angka maka akan munculkan angka tersebut pada seven segment dan binernya ditampilkan pada led port output.

B. Aplikasi Keypad dan Led a. Prosedur Percobaan: Hubungkan Port Trainer Kit MCS-51 yang akan digunakan dengan 7S. Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 10

Hubungkan Trainerbord MCS-51 dengan power supply. Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM. Download program .hex ke Trainer Kit MCS-51 menggunakan sotfware ISP 3v0.a

b. Listing Program : 1. Program yang mana apabila ditekan angka maka akan munculkan biner dari angka tersebut dan ditampilkan pada led port output(p0.0 s/d p0.3). Catatan : Baris Keypad dihubungkan ke p2.0; p2.2 dan p2.4 Kolom keypad dihubungkan ke p2.1 dan p2.3 Tabel 1. Daftar Arti Tiap Tombol Matrik P2.0 P2.2 P2.4 P2.1 1 3 5 P2.3 2 4 6

Tabel 2. Daftar Biner Pada Tampilan LED Bilangan Desimal 1 2 3 4 5 6


Org 0h kolom1: mov jnb jnb jnb ljmp no1: mov sjmp no3: mov sjmp no5: mov sjmp kolom2: mov jnb jnb jnb ljmp no2: mov

P0.3 1 1 1 1 1 1

Biner P0.2 P0.1 1 1 1 0 1 0 0 1 0 1 0 0

P0.0 0 1 0 1 0 1

p2,#11111101b p2.0,no1 p2.2,no3 p2.4,no5 kolom2 p0,#11111110b kolom1 p0,#11111100b kolom1 p0,#11111010b kolom1 p2,#11110111b p2.0,no2 p2.2,no4 p2.4,no6 kolom1 p0,#11111101b

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 11

sjmp no4:

kolom2

mov p0,#11111011b sjmp kolom2 no6: mov sjmp End Tugas : Buat Program yang mana apabila ditekan angka pada keypad, maka akan nyala led dari kiri sebanyak nilai pada keypad yang ditekan. p0,#11111001b kolom1

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 12

BAB IV T IMER DAN COUNTER


Tujuan Mampu membuat program untuk membuat aplikasi dengan memanfaatkan Timer dan Counter. Alat Yang Digunakan Trainer Kit MCS-51 Kabel ISP Power Supply 5V

A. Aplikasi Menyalakan Led Selama 5 detik a. Prosedur Percobaan: Hubungkan Port Trainer Kit MCS-51 yang akan digunakan dengan 7S. Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP Hubungkan Trainerbord MCS-51 dengan power supply. Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM.

Download program .hex ke Trainer Kit MCS-51 menggunakan sotfware ISP 3v0.a b. Listing Program : 1. Menyalakan Led Port 0 Selama 1 Detik (Timer 0 Mode 1)
RATUSAN EQU 100 CACAH EQU -10000 ORG 0H MOV TMOD,#01H Mulai: MOV P0,#00H ACALL TUNDA MOV P0,#0FFH ACALL TUNDA SJMP MULAI TUNDA: MOV R1,#RATUSAN LAGI: MOV TH0,#CACAH MOV TL0,#CACAH SETB TR0 Tunggu: JNb Tf0,Tunggu CLR TF0 CLR TR0 DJNZ R1,LAGI RET END

Tugas : Buat program nyala led pada p2.0 dengan waktu tunda 9 detik pada timer 1 mode 2!

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 13

BAB V LCD 8x2


4.1. Tujuan Mampu membuat program untuk aplikasi dengan memanfaatkan LCD sebagai tampilan.

4.2

Alat Yang Digunakan Trainer Kit MCS-51 Kabel ISP LCD Power Supply 5V

A. Aplikasi Tampilan LCD 8x2 bagian 1 dan 2 Keterangan GND VCC D4 D5 D6 D7 RS R/W En a. Prosedur Percobaan: Hubungkan P0.1 - P0.4 dan P1.2, P1.3 dan P1.4 Trainer Kit MCS-51 yang akan digunakan dengan Port LCD D4 D7, EN, RS dan R/W. Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP Hubungkan Trainer Kit-51 dengan power supply. Pin LCD 1 2 7 8 9 10 11 12 13

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 14

Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM Sotfware ISP 3V0.a.

b. Listing Program : 1. Tampilkan Karakter Pada LCD bagian 1


Res Bit P1.2 LCD_EN Bit P1.3 W_R Bit P1.4 Data_LCD Equ P0 Dseg Ram: Cseg Org 30H DS 10 Org Start: LCALL LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL Acall Init_LCD Line_1 A,#'J' Write_LCD A,#'U' Write_LCD A,#'M' Write_LCD A,#'L' Write_LCD A,#'A' Write_LCD A,#'H' Write_LCD Delay 00h

Acall Blink_on Ajmp $ ;======================================================== ;Program Delay nich ;======================================================== Two_Seconds_Delay: Mov R5,#0Ah Two_Seconds_Delay_1: Acall Long_Delay Djnz R5,Two_Seconds_Delay_1 Ret Long_Delay: Mov R7,#0FFh Long_Delay_1: Acall Delay Djnz R7,Long_Delay_1 Ret Delay: Mov R6,#0FFh Djnz R6,$ Ret

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 15

;====================================================== ;INITIALISASI LCD(DILAKUKAN PERTAMA KALI DIAWAL PROGRAM} ;====================================================== Init_LCD: Clr W_R Clr Res Acall Two_Seconds_Delay Mov A,#01h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#02h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#06h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Mov A,#28h Acall WRite_LCD_Command Acall Delay_LCD Ret Init_LCD2: Clr W_R Clr Res Acall Long_Delay Mov A,#01h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#02h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Mov A,#20h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#07h Acall WRite_LCD_Command Acall Delay_LCD Ret ;====================================================== ;MENULIS SATU KARAKTER ACUMULATOR KE LCD ;====================================================== Nulis: ADD A,#30H WRite_LCD: Clr W_R Setb Res WRite_LCD_1: Clr W_R Mov B,A Swap A Orl A,#0F0h Mov Data_LCD,A Clr LCD_En Acall Delay

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 16

Setb LCD_En Mov A,B Orl A,#0F0h Mov Data_LCD,A Acall Delay Clr LCD_En Acall Delay Setb LCD_En Acall Delay Ret WRite_LCD_Address: Clr W_R Orl A,#80h WRite_LCD_Command: Clr W_R Clr Res Mov B,A Swap A Orl A,#0F0h Mov Data_LCD,A Clr LCD_En Acall Delay Acall Delay Setb LCD_En Acall Delay Acall Delay Mov A,B Orl A,#0F0h Mov Data_LCD,A Acall Delay Clr LCD_En Acall Delay Acall Delay Setb LCD_En Acall Delay Acall Delay Ret Blink_On: Clr Res Mov A,#0Fh Acall WRite_LCD_Command Ret Blink_Off: Clr Res Mov A,#0Ch Acall WRite_LCD_Command Ret LCD_OFF: Clr W_R Clr Res Acall Long_Delay Mov A,#08h Acall WRite_LCD_Command Acall Delay_LCD Ret LCD_ON: Clr W_R Clr Res Acall Long_Delay

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 17

Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Ret ;====================================================== ;MENENTUKAN LOKASI PENULISAN PADA BARIS PERTAMA COLOM 1 ;====================================================== Line_1: Mov A,#00h Line: Ljmp WRite_LCD_Address ;====================================================== ;MENENTUKAN LOKASI PENULISAN PADA BARIS PERTAMA COLOM 2 ;====================================================== Line_2: Mov A,#40h Ljmp WRite_LCD_Address ;====================================================== ;MENULIS 8 KARAKTER SEKALIGUS KE LCD ;====================================================== WRite_Sentence: Clr W_R Mov R7,#00h WRite_Sentence_1: Clr W_R Mov A,R7 Movc A,@A+Dptr Acall WRite_LCD Inc R7 Cjne R7,#08h,WRite_Sentence_1 Ret End Tugas : Buat program nama sendiri maximal 8 karakter pada baris 1 dan dibaris kedua maximal 8 karakter. 2. Tampilkan Karakter pada LCD bagian 2 Res Bit P1.2 LCD_EN Bit P1.3 W_R Bit P1.4 Data_LCD Equ P0 Dseg Org 30h Cseg Org 00h Start: Acall init_lcd Mov DPTR,#Judul_1 Acall line_1 Acall Write_Sentence Ajmp $ Ret ;======================================================= Judul_1: DB " TEKNIK " ;======================================================== ;Program Delay nich ;======================================================== Two_Seconds_Delay: Mov R5,#0Ah NIS

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 18

Two_Seconds_Delay_1: Acall Long_Delay Djnz R5,Two_Seconds_Delay_1 Ret Long_Delay: Mov R7,#0FFh Long_Delay_1: Acall Delay Djnz R7,Long_Delay_1 Ret Delay: Mov R6,#0FFh Djnz R6,$ Ret ;====================================================== ;INITIALISASI LCD(DILAKUKAN PERTAMA KALI DIAWAL PROGRAM} ;====================================================== Init_LCD: Clr W_R Clr Res Acall Two_Seconds_Delay Mov A,#01h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#02h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#06h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Mov A,#28h Acall WRite_LCD_Command Acall Delay_LCD Ret Init_LCD2: Clr W_R Clr Res Acall Long_Delay Mov A,#01h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#02h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Mov A,#20h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#07h Acall WRite_LCD_Command Acall Delay_LCD Ret

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 19

;====================================================== ;MENULIS SATU KARAKTER ACUMULATOR KE LCD ;====================================================== Nulis: ADD A,#30H WRite_LCD: Clr W_R Setb Res WRite_LCD_1: Clr W_R Mov B,A Swap A Orl A,#0F0h Mov Data_LCD,A Clr LCD_En Acall Delay Setb LCD_En Mov A,B Orl A,#0F0h Mov Data_LCD,A Acall Delay Clr LCD_En Acall Delay Setb LCD_En Acall Delay Ret WRite_LCD_Address: Clr W_R Orl A,#80h WRite_LCD_Command: Clr W_R Clr Res Mov B,A Swap A Orl A,#0F0h Mov Data_LCD,A Clr LCD_En Acall Delay Acall Delay Setb LCD_En Acall Delay Acall Delay Mov A,B Orl A,#0F0h Mov Data_LCD,A Acall Delay Clr LCD_En Acall Delay Acall Delay Setb LCD_En Acall Delay Acall Delay Ret Blink_On: Clr Res Mov A,#0Fh Acall WRite_LCD_Command Ret Blink_Off:

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 20

Clr Res Mov A,#0Ch Acall WRite_LCD_Command Ret LCD_OFF: Clr W_R Clr Res Acall Long_Delay Mov A,#08h Acall WRite_LCD_Command Acall Delay_LCD Ret LCD_ON: Clr W_R Clr Res Acall Long_Delay Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Ret ;====================================================== ;MENENTUKAN LOKASI PENULISAN PADA BARIS PERTAMA COLOM 1 ;====================================================== Line_1: Mov A,#00h Line: Ljmp WRite_LCD_Address ;====================================================== ;MENENTUKAN LOKASI PENULISAN PADA BARIS PERTAMA COLOM 2 ;====================================================== Line_2: Mov A,#40h Ljmp WRite_LCD_Address ;====================================================== ;MENULIS 8 KARAKTER SEKALIGUS KE LCD ;====================================================== WRite_Sentence: Clr W_R Mov R7,#00h WRite_Sentence_1: Clr W_R Mov A,R7 Movc A,@A+Dptr Acall WRite_LCD Inc R7 Cjne R7,#08h,WRite_Sentence_1 Ret Delay_LCD: Acall Long_Delay Acall Long_Delay Acall Long_Delay Ret End

Tugas: Buat program nama dan NPM maximal 8 karakter dengan menggunakan DPTR.

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 21

BAB VI APLIKASI
5.1. Tujuan Mampu membuat program untuk aplikasi dengan memanfaatkan LCD sebagai tampilan.

5.2

Alat Yang Digunakan Trainer Kit MCS-51 Kabel ISP LCD M1632 Power Supply 5V

A. Aplikasi Tampilan LCD 8x2 dan Keypad a. Prosedur Percobaan: Hubungkan P0.1 - P0.4 dan P1.2, P1.3 dan P1.4 Trainer Kit MCS-51 yang akan digunakan dengan Port LCD D4 D7, EN, RS dan R/W. Keterangan GND VCC D4 D5 D6 D7 RS R/W En Pin LCD 1 2 7 8 9 10 11 12 13

Hubungkan Keypad 4x3 dengan Trainer Kit MCS-51 pada P3 Hubungkan O/P LED pin 3 dengan P2/PC pin 3 pada Trainer Kit MCS-51. Hubungkan Trainer Kit MCS-51 dengan PC menggunakan kabel ISP

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 22

Hubungkan Trainer Kit MCS-51 dengan power supply. Ketikan program asembly ke NOTEPAD kemudian compile kedalam .hex dengan ASEM. Sotfware ISP 3V0.a dan download program .hex ke TrainerKit MCS-51.

b. Listing Program : 1. Penampilan Karakter Penekanan Keypad Di LCD


;------------------------------;LCD 8x2 ;------------------------------Res Bit P1.2 LCD_EN Bit P1.3 W_R Bit P1.4 Data_LCD Equ P0 ;------------------------------;DRIVER KEYPAD MATRIX 3X4 HITAM ;XX-R2-R3-C3-R4-C1-R1-C2 ;------------------------------data_Key EQU P3 Col2 Bit data_Key.0 Row1 Bit data_Key.1 Col1 Bit data_Key.2 Row4 Bit data_Key.3 Col3 Bit data_Key.4 Row3 Bit data_Key.5 Row2 Bit data_Key.6 Dseg Org Cseg Org 30H 00H

AJmp Start Start: Acall Init_LCD Acall Line_1 ;============================== ;menghidupkan blinking cursor ;============================== Clr W_R Clr Res Mov A,#0Fh Acall WRite_LCD_Command Acall Delay_LCD Acall Line_1 Get_Keypad: Acall Check_Keypad Cjne A,#0FFH,Enter AJmp Get_Keypad Enter: Cjne A,#0Ah,Check_Line_2

;============================== ;MENGHAPUS LAYAR LCD ;==============================

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 23

Clr W_R Clr Res Mov A,#01h Acall WRite_LCD_Command Acall Delay_LCD ;============================== Acall Line_1 AJmp Get_Keypad Check_Line_2: Cjne A,#0BH,Enter_Karakter Acall Line_2 AJmp Get_Keypad Enter_Karakter: Add A,#30h Acall Write_LCD AJmp Get_Keypad Two_Seconds_Delay: Mov R5,#0Ah Two_Seconds_Delay_1: Acall Long_Delay Djnz R5,Two_Seconds_Delay_1 Ret Long_Delay: Mov R7,#0FFh Long_Delay_1: Acall Delay Djnz R7,Long_Delay_1 Ret Delay: Mov R6,#0FFh Djnz R6,$ Ret Check_Keypad: Mov Data_Key,#0FFH Clr Col1 Clr Col2 Clr Col3 Acall Delay Mov A,Data_Key Anl A,#11101010b Cjne A,#11101010b,Check_Column_1 Mov A,#0FFH Ret Check_Column_1: Clr Col1 Setb Col2 Setb Col3 Mov A,Data_Key Anl A,#1111011b Cjne A,#1111011b,Column_1_Line_1 AJmp Check_Column_2 Column_1_Line_1: Jb Row1,Column_1_Line_2 Mov A,#01h Jnb Row1,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 24

Column_1_Line_2: Jb Row2,Column_1_Line_3 Mov A,#04h Jnb Row2,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Column_1_Line_3: Jb Row3,Column_1_Line_4 Mov A,#07h Jnb Row3,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Column_1_Line_4: Jb Row4,Back Mov A,#0Ah Jnb Row4,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Check_Column_2: Setb Col1 Clr Col2 Setb Col3 Acall Delay Mov A,Data_Key Anl A,#1111110b Cjne A,#1111110b,Column_2_Line_1 AJmp Check_Column_3 Column_2_Line_1: Jb Row1,Column_2_Line_2 Mov A,#02h Jnb Row1,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Back: Ret Column_2_Line_2: Jb Row2,Column_2_Line_3 Mov A,#05h Jnb Row2,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Column_2_Line_3: Jb Row3,Column_2_Line_4 Mov A,#08h Jnb Row3,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Column_2_Line_4: Jb Row4,Back

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 25

Mov A,#00h Jnb Row4,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Check_Column_3: Setb Col1 Setb Col2 Clr Col3 Acall Delay Mov A,Data_Key Anl A,#1110111b Cjne A,#1110111b,Column_3_Line_1 Mov A,#0FFH Mov Data_Key,#0FFH Ret Column_3_Line_1: Jb Row1,Column_3_Line_2 Mov A,#03h Jnb Row1,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Column_3_Line_2: Jb Row2,Column_3_Line_3 Mov A,#06h Jnb Row2,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Column_3_Line_3: Jb Row3,Column_3_Line_4 Mov A,#09h Jnb Row3,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret Column_3_Line_4: Jb Row4,Back Mov A,#0Bh Jnb Row4,$ Acall LOng_Delay Mov Data_Key,#0FFH Ret ;====================================================== ;INITIALISASI LCD(DILAKUKAN PERTAMA KALI DIAWAL PROGRAM) ;====================================================== Init_LCD: ; Acall Two_Seconds_Delay Clr W_R Clr Res Acall Two_Seconds_Delay Mov A,#01h ;Clear Display Acall WRite_LCD_Command Acall Delay_LCD Mov A,#02h ;Return Home

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 26

Acall WRite_LCD_Command Acall Delay_LCD Mov A,#06h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Mov A,#28h Acall WRite_LCD_Command Acall Delay_LCD Ret

;Display ON,Crusor OFF,Blink OFF

;4 BIT,2 LINE,5*7 FONT

Init_LCD2: Clr W_R Clr Res Acall Long_Delay Mov A,#01h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#02h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Mov A,#20h Acall WRite_LCD_Command Acall Delay_LCD Mov A,#07h Acall WRite_LCD_Command Acall Delay_LCD Ret ;====================================================== ;MENULIS SATU KARAKTER ACUMULATOR KE LCD ;====================================================== Nulis: ADD A,#30H WRite_LCD: Clr W_R Setb Res WRite_LCD_1: Clr W_R Mov B,A Swap A Orl A,#0F0h Mov Data_LCD,A Clr LCD_En Acall Delay Setb LCD_En Mov A,B Orl A,#0F0h Mov Data_LCD,A Acall Delay Clr LCD_En Acall Delay Setb LCD_En Acall Delay Ret WRite_LCD_Address: Clr W_R

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 27

Orl A,#80h WRite_LCD_Command: Clr W_R Clr Res Mov B,A Swap A Orl A,#0F0h Mov Data_LCD,A Clr LCD_En Acall Delay Acall Delay Setb LCD_En Acall Delay Acall Delay Mov A,B Orl A,#0F0h Mov Data_LCD,A Acall Delay Clr LCD_En Acall Delay Acall Delay Setb LCD_En Acall Delay Acall Delay Ret Blink_On: Clr Res Mov A,#0Fh Acall WRite_LCD_Command Ret Blink_Off: Clr Res Mov A,#0Ch Acall WRite_LCD_Command Ret LCD_OFF: Clr W_R Clr Res Acall Long_Delay Mov A,#08h Acall WRite_LCD_Command Acall Delay_LCD Ret LCD_ON: Clr W_R Clr Res Acall Long_Delay Mov A,#0Ch Acall WRite_LCD_Command Acall Delay_LCD Ret ;====================================================== ;MENENTUKAN LOKASI PENULISAN PADA BARIS PERTAMA COLOM 1 ;====================================================== Line_1: Mov A,#00h Line: Ljmp WRite_LCD_Address ;====================================================== ;MENENTUKAN LOKASI PENULISAN PADA BARIS PERTAMA COLOM 2 ;======================================================

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

P a g e | 28

Line_2: Mov A,#40h Ljmp WRite_LCD_Address ;====================================================== ;MENULIS 8 KARAKTER SEKALIGUS KE LCD ;====================================================== WRite_Sentence: Clr W_R Mov R7,#00h WRite_Sentence_1: Clr W_R Mov A,R7 Movc A,@A+Dptr Acall WRite_LCD Inc R7 Cjne R7,#08h,WRite_Sentence_1 Ret Delay_LCD: Acall Long_Delay Acall Long_Delay Acall Long_Delay Ret End

Tugas: Buat program Password 4 digit untuk menyalakan dan mematikan led pada P2.0 dengan menu pilihan LCD adalah baris pertama INSERT dan baris kedua (- - - -). Jika password benar tampilan LCD baris pertama Benar kemudian masuk ke menu nyalakan dan matikan led dengan menekan angka 1 (nyala led = aktif low) dan angka 2 ( mati led=aktif high). Tampilan LCD baris pertama 1) NYALA dan MATI. Jika salah tampilan LCD baris pertama SALAH Kemudian semua balik ke kondisi awal.

Job sheet microcontroller

carma@elektronika_industri . smkn1losarang

Anda mungkin juga menyukai