BAB13 - MCS51 - Aplikasi DIP - LCD
Transcript of BAB13 - MCS51 - Aplikasi DIP - LCD
-
8/9/2019 BAB13 - MCS51 - Aplikasi DIP - LCD
1/6
Mikrokontroler MCS51 112
13. Input DIPSWITCH dan ditampilkan di LCD
gambar 13.1. Aplikasi tampilan LCD dengan input DIPSWITCH
Percobaan ini gabungan dari percobaan pengambilan data lewat
DIPSWITCH dengan percobaan 3. Mula-mula data diambil dari DIPSWITCH
lewat port 0 kemudian dikirim ke LCD melalui logika sebagai berikut :
Data DIPSWITCH mempunyai range 0 -255 dan diambil dengan
perintah sbb: Data dari P0 dipindah ke akumulator
MOV A,P0
-
8/9/2019 BAB13 - MCS51 - Aplikasi DIP - LCD
2/6
Mikrokontroler MCS51 113
Karena LCD terdiri dari kolom dan setiap kolom mewakili 1 karakter,
maka data harus diambil dalam ratusan, puluhan dan satuan kemudian
ditempatkan di lokasi yang diinginkanMOV B,#10DIV ABMOV R2,B ; R2 : SATUAN
MOV B,#10DIV ABMOV R1,B ; R1 : PULUHANMOV R0,A ; R0 : RATUSAN
Misal satuan ditampilkan di baris 2 kolom 15MOV A,#0CFH
ACALL CONTROLOUTMOV A,R2
ADD A,#30H ; ASCII DARI SATUAN ACALL DATAOUT
Misal puluhan ditampilkan di baris 2 kolom 14
MOV A,#0CEH ACALL CONTROLOUTMOV A,R1
ADD A,#30H ; ASCII DARI PULUHAN ACALL DATAOUT
Misal ratusan ditampilkan di baris 2 kolom 13
MOV A,#0CDH ACALL CONTROLOUTMOV A,R0
ADD A,#30H ; ASCII DARI RATUSAN ACALL DATAOUT
LCD bisa digunakan jika sudah diinisialisasi
Untuk melakukan percobaan ini, lakukan langkah-langkah sebagai berikut:
1. Hubungkan modul MICROTRAINER dengan memasang kabel DB25
dengan LPT1 pada PC. Mode printer adalah SPP atau output only .
2. Ketikkan di sembarang editor yang anda miliki listing program berikut:
-
8/9/2019 BAB13 - MCS51 - Aplikasi DIP - LCD
3/6
Mikrokontroler MCS51 114
; PROG06.ASM DIGUNAKAN UNTUK MENGAMBIL DATA DARI DIPSWITCH; DAN DITAMPILKAN KE LCD; JUMPER OUTPUT : DI LCD PADA POSISI '0'; JUMPER INPUT : DI DIPSWITCH POSISI '0'
ORG 00HSJMP START
;--------------------------------------; LCD CONSTANTA;--------------------------------------DISPCLR EQU 00000001BFUNCSET EQU 00111000BENTRMOD EQU 00000110BDISPON EQU 00001100B
START: ACALL INIT_LCDMOV DPTR,#BARIS1
ACALL PRINTSTRING1MOV DPTR,#BARIS2
ACALL PRINTSTRING2MAIN:
ACALL DIPSWITCHSJMP MAIN
;-----------------------------------------------------------------; PENGAMBILAN DATA DARI DISPSWITCH;-----------------------------------------------------------------DIPSWITCH:
MOV A,P0MOV B,#10
DIV ABMOV R2,B ; R2 : SATUAN
MOV B,#10DIV ABMOV R1,B ; R1 : PULUHANMOV R0,A ; R0 : RATUSAN
MOV A,#0CFH ; PESAN TEMPAT DI KOLOM 15 BARIS 2 ACALL CONTROLOUTMOV A,R2
ADD A,#30H ; ASCII DARI SATUAN ACALL DATAOUT
MOV A,#0CEH ; PESAN TEMPAT DI KOLOM 14 BARIS 2 ACALL CONTROLOUTMOV A,R1
ADD A,#30H ; ASCII DARI PULUHAN ACALL DATAOUT
MOV A,#0CDH ; PESAN TEMPAT DI KOLOM 13 BARIS 2 ACALL CONTROLOUTMOV A,R0
ADD A,#30H ; ASCII DARI RATUSAN ACALL DATAOUTRET
-
8/9/2019 BAB13 - MCS51 - Aplikasi DIP - LCD
4/6
Mikrokontroler MCS51 115
;--------------------------------------------------------; PROSEDUR PEMESANAN TEMPAT;--------------------------------------------------------; RS : 0 : P3.5
; E : 0 - 1 - 0 : P3.4; DATA : P2CONTROLOUT:
CLR P3.5 ; RS = 0 ACALL DELAYCLR P3.4
ACALL DELAYSETB P3.4
ACALL DELAYMOV P2,ACLR P3.4
ACALL DELAYRET
;----------------------------------------------------------; PROSEDUR PENEMPATAN DATA;----------------------------------------------------------; RS : 0 : P3.5DATAOUT:
SETB P3.5 ; RS = 1 ACALL DELAYCLR P3.4 ; E = 0
ACALL DELAYSETB P3.4 ; E = 1
ACALL DELAYMOV P2,ACLR P3.4 ; E = 0
ACALL DELAYRET;--------------------------------------------; PROSEDUR DELAY LCD;--------------------------------------------DELAY.INIT.LCD:
MOV R6,#20HDLY.LCD.LP:
MOV R7,#10HDJNZ R7,$DJNZ R6,DLY.LCD.LPRET
;-----------------------------------------------; PROSEDUR INISIALISASI LCD;-----------------------------------------------INIT_LCD:
MOV A,#FUNCSET ACALL CONTROLOUT ACALL DELAY.INIT.LCD
MOV A,#DISPON ACALL CONTROLOUT ACALL DELAY.INIT.LCD
MOV A,#DISPCLR
-
8/9/2019 BAB13 - MCS51 - Aplikasi DIP - LCD
5/6
Mikrokontroler MCS51 116
ACALL CONTROLOUT ACALL DELAY.INIT.LCD
MOV A,#ENTRMOD
ACALL CONTROLOUT ACALL DELAY.INIT.LCDRET
;----------------------------------------------------------; PROCEDURE LCD BARIS KOLOM LCD;----------------------------------------------------------POSISI2.1:
MOV A,#1POSISI2:
ADD A,#11000000B ; BARIS KEDUADEC A
ACALL CONTROLOUT ACALL DELAY.INIT.LCDRET
POSISI1.1:MOV A,#1
POSISI1: ADD A,#10000000B ; BARIS PERTAMADEC A
ACALL CONTROLOUT ACALL DELAY.INIT.LCDRET
PRINTSTRING2: ACALL POSISI2.1
CLR AMOVC A,@A+DPTRJNZ PRINTSTRINGLOOP
PRINTSTRINGLOOP: ACALL DATAOUT ACALL DELAY.INIT.LCDINC DPTRCLR AMOVC A,@A+DPTRJNZ PRINTSTRINGLOOPRET
PRINTSTRING1: ACALL POSISI1.1CLR AMOVC A,@A+DPTRJNZ PRINTSTRINGLOOP2
PRINTSTRINGLOOP2:LCALL DATAOUT
ACALL DELAY.INIT.LCDINC DPTRCLR AMOVC A,@A+DPTRJNZ PRINTSTRINGLOOP2RET
-
8/9/2019 BAB13 - MCS51 - Aplikasi DIP - LCD
6/6
Mikrokontroler MCS51 117
;------------------------------------------; PROCEDURE DELAY;------------------------------------------
DELAY: MOV R5,#0U1: MOV R6,#0U2: MOV R7,#0U3: INC R7
CJNE R7,#5,U3INC R6CJNE R6,#5,U2INC R5CJNE R5,#5,U1RET
BARIS1:DB 'INPUT DIPSWITCH ',0
BARIS2:DB 'DIPSWITCH: ',0
3. Simpanlah program yang anda ketik dan beri nama prog06.asm
4. Kemudian keluarlah ke DOS prompt dan ketikkan
A PROG06
Jika tidak ada kesalahan, tekan
5. Anda akan langsung masuk ke program AEC_ISP, kemudian pilihlah option
A. Load HEX File to flash buffer,
kemudian ketik PROG04.HEX dan tekan
sebarang tombol
6. Pilih E.Program dan tunggu sebentar sampai ada indikator 100
% dan tekan sebarang tombol
7. Pilih I. Reset . Putarlah potensiometer 1 dan lihatlah tampilan di LCD nya
8. Berilah kesimpulan anda
............................................................................................................................
......................................................................................................................