BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

12
Mikrokontroler MCS51 152 20.Aplikasi ADC, LCD dan RS232 gambar 13. Buffer RS232 RS 232 di komputer : 1. ‘Space’ logika 0 : 3 sampai dengan 25 volt 2. ‘Mark’ logika 1 :-3 sampai dengan -25 volt 3. Daerah antara 3 dan -3 tidak didefinisikan 4. Tegangan open circuit tidak boleh lebih dari 25 volt 5. Arus short circuit tidak boleh lebih dari 500 mA Pin dari serial Pin D25 Pin D9 Nama Kepanjangan 2 3 TD Transmit Data 3 2 RD Receive Data 4 7 RTS Request To Send 5 8 CTS Clear To Send 6 6 DSR Data Set Ready 7 5 SG Signal Ground 8 1 CD Carrier Detect 20 4 DTR Data Terminal Ready 22 9 RI Ring Indicator Null Modem 1. Cara paling gampang untuk mentransfer file antar komputer menggunakan protokol Z modem dan X modem 2. Dapat juga digunakan untuk komunikasi dengan uP 3. Hanya menggunakan 3 kabel (TD,RD dan SG)

description

Aplikasi ADC-LCD-RS232

Transcript of BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Page 1: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 152

20.Aplikasi ADC, LCD dan RS232

gambar 13. Buffer RS232

RS 232 di komputer :

1. ‘Space’ logika 0 : 3 sampai dengan 25 volt

2. ‘Mark’ logika 1 :-3 sampai dengan -25 volt

3. Daerah antara 3 dan -3 tidak didefinisikan

4. Tegangan open circuit tidak boleh lebih dari 25 volt

5. Arus short circuit tidak boleh lebih dari 500 mA

Pin dari serial

Pin D25 Pin D9 Nama Kepanjangan

2 3 TD Transmit Data

3 2 RD Receive Data

4 7 RTS Request To Send

5 8 CTS Clear To Send

6 6 DSR Data Set Ready

7 5 SG Signal Ground

8 1 CD Carrier Detect

20 4 DTR Data Terminal Ready

22 9 RI Ring Indicator

Null Modem

1. Cara paling gampang untuk mentransfer file antar komputer

menggunakan protokol Z modem dan X modem

2. Dapat juga digunakan untuk komunikasi dengan uP

3. Hanya menggunakan 3 kabel (TD,RD dan SG)

Page 2: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 153

D9 D25 D25 D9

3 2 TD RD 3 2

2 3 RD TD 2 3

5 7 SG SG 7 5

4 20 DTR DSR 6 6

6 6 DSR DTR 20 4

1 8 CD CD 8 1

7 4 RTS CTS 5 8

8 5 CTS RTS 4 7

Port Address dan IRQ

Nama Address IRQ

COM 1 3F8 4

COM 2 2F8 3

COM 3 3E8 4

COM 4 2E8 3

PEMROGRAMAN UART

Tabel address register UART INS 8250

Nama register Adaptor Primer Adaptor sekunder

TX Buffer

RX Buffer

Baud rate divisor Latch LSB

Baud rate divisor Latch MSB

Interrupt Enable Register

Interrupt Identification Reg

Line Control Register

Modem Control Register

Line Status Register

Modem Status Register

03F8H 03F8H 03F8H 03F9H 03F9H 03FAH 03FBH 03FCH 03FDH 03FEH

02F8H 02F8H 02F8H 02F9H 02F9H 02FAH 02FBH 02FCH 02FDH 02FEH

RX Buffer: 3F8H

Menampung dan menyimpan data yang diterima dari luar.

Data itu harus dibaca oleh CPU 8088 setelah mengecek kepastian

tentang masuknya data.

Page 3: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 154

TX Buffer: 3F8H

Menampung dan menyimpan data yang akan dikirim ke luar.

Data ini dikirim oleh CPU ke TX Buffer setelah mengecek kepastian

tentang diperbolehkannya melakukan pengiriman.

Baud Rate Divisor LSB: 3F8H

Menampung LSB untuk pembagi clock yang dimasukkan ke INS

8250 agar didapat baud rate yang dipilih . Angka pembagi 01H - FFH

Baud Rate Divisor MSB: 3F9H

Menampung MSB untuk pembagi clock yang dimasukkan ke INS

8250 agar didapat baud rate yang dipilih . Angka pembagi 01H -

FFFFH

Tabel Baud rate:

Baud Rate Angka pembagi (Heksa) Angka pembagi (Desimal)

50

75

110

134.5

150

300

600

1200

1800

2000

2400

3600

4800

7200

9600

0900H

0600H

0417H

0359H

0300H

0180H

0C00H

0060H

0040H

003AH

0030H

0020H

0018H

0010H

000CH

2300

1536

1047

857

768

384

192

96

64

58

48

32

24

16

12

Page 4: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 155

Interrupt Enable Register: 3F9H

Menampung pemrograman agar bilamana ada satu keadaan khusus

dapat melangsungkan interupsi ke CPU.

Interrupt Identification Register: 3FAH

Menampung pemrograman agar dapat menentukan bagian mana yang

diberi urutan prioritas khusus untuk dapat melangsungkan interupsi ke CPU

Line Control Register: 3FBH

Menampung ketentuan yang dipilih untuk menentukan :

- jumlah bit bagi setiap data

- jumlah stop bit

- memakai parity check atau tidak

- menentukan/mengubah baud rate divisor

Modem Control Register: 3FCH

Menampung pemrograman untuk mengatur modem, terutama

menggunakan saluran DTR dan RTS dari INS 8250 ke modem. INS

8250 bisa diprogram untuk melakukan loop back, yaitu data yang

dikirim dapat diterima sendiri oleh INS 8250. Hal ini digunakan

untuk tes Tx dan Rx. INS 8250 memberi ekstra 2 saluran OUT1 dan

OUT2 untuk disambungkan ke komponen lain sebagai pengatur

enable / disable. Di IBM PC digunakan untuk mengatur saluran

interupsi INTRPT (pin 30). Saluran INTRPT diberi tri state buffer

yang diatur oleh OUT2. Oleh karena itu agar dapat beroperasi

Page 5: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 156

berdasar interupsi dari peralatan lain di luar, maka bit 3 (OUT2) pada

Modem Control Register harus diberi 1.

Modem Status Register: 3FEH

Menampung bit-bit yang menyatakan keadaan tentang hubungan

dengan modem atau perangkat lain yang dihubungkan dengan INS 8250

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. Hubungkan kabel serial di modul dengan COM1

3. Ketikkan di sembarang editor yang anda miliki listing program berikut:

; PROG13.ASM DIGUNAKAN UNTUK MENGAMBIL DATA DARI ADC

; DAN DITAMPILKAN KE LCD SERTA DIKIRIM KE KOMPUTER ; JUMPER OUTPUT : LCD POSISI '0' ORG 00H SJMP START ;-------------------------------- ; LCD CONSTANTA ;-------------------------------- DISPCLR EQU 00000001B FUNCSET EQU 00111000B ENTRMOD EQU 00000110B DISPON EQU 00001100B

DATAADC EQU 60H START: ACALL INIT_SERIAL ACALL INIT_LCD MOV DPTR,#BARIS1 ACALL PRINTSTRING1 MOV DPTR,#BARIS2 ACALL PRINTSTRING2 ;-------------------------------- ; MAIN PROGRAM

;-------------------------------- MAIN: ACALL CHANNEL_0

Page 6: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 157

ACALL RX ACALL READ_ADC ACALL DISP ACALL TX ; KIRIM KE PC SJMP MAIN CHANNEL_0: CLR P0.5 CLR P0.6 CLR P0.7 RET

CHANNEL_7: SETB P0.5 SETB P0.6 SETB P0.7 RET ;------------------------------------------------- ; PENAMBILAN DATA DARI ADC ; P0.5 : A ; P0.6 : B ; P0.7 : C ; P3.6 : WR ; P3.7 : RD ;--------------------------------------------------

READ_ADC: SETB P3.6 ; WR = 1 SETB P3.7 ; RD = 1 ACALL DELAY CLR P3.6 ; WR = 0 ACALL DELAY SETB P3.6 ; WR = 1 JB P3.2,$ ACALL DELAY CLR P3.7 ; RD = 0 MOV A,P1 MOV DATAADC,A SETB P3.7 ; RD = 1 RET

;----------------------------------------------- ; MENAMPILKAN DATA KE LCD ;----------------------------------------------- DISP: MOV A,DATAADC MOV B,#10 DIV AB MOV R2,B ; R2 : SATUAN MOV B,#10 DIV AB MOV R1,B ; R1 : PULUHAN MOV R0,A ; R0 : RATUSAN

MOV A,#0CFH ; PESAN TEMPAT DI KOLOM 15 BARIS 2 ACALL CONTROLOUT

Page 7: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 158

MOV A,R2 ADD A,#30H ; ASCII DARI SATUAN ACALL DATAOUT MOV A,#0CEH ; PESAN TEMPAT DI KOLOM 14 BARIS 2 ACALL CONTROLOUT MOV A,R1 ADD A,#30H ; ASCII DARI PULUHAN ACALL DATAOUT MOV A,#0CDH ; PESAN TEMPAT DI KOLOM 13 BARIS 2 ACALL CONTROLOUT

MOV A,R0 ADD A,#30H ; ASCII DARI RATUSAN ACALL DATAOUT RET ;----------------------------------------------------------------------- ; PROSEDUR MENGIRIM DATA DARI UC KE PC ;----------------------------------------------------------------------- TX: MOV A,DATAADC MOV SBUF,A JNB TI,$ CLR TI

RET ;--------------------------------------------------------------- ; PROSEDUR MENERIMA DATA DARI PC ;--------------------------------------------------------------- RX: CLR RI JNB RI,$ MOV A,SBUF MOV R3,A MOV A,#08FH ; PESAN TEMPAT DI KOLOM 15 BARIS 1 ACALL CONTROLOUT MOV A,R3 ADD A,#30H ; ASCII

ACALL DATAOUT RET ;----------------------------------------------------- ; PROSEDUR INISIALISASI SERIAL ;----------------------------------------------------- INIT_SERIAL: MOV SCON,#01010000b ;Set Mode 1 MOV TMOD,#00100000b ;Set Timer 8 bit auto reload MOV TH1 ,#0FDh ;Baud Rate 9600 bps pada kristal 11,0592 MHz MOV TCON,#40H SETB TR1 ;Start Timer 1

RET

Page 8: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 159

;--------------------------------------------------------- ; PROSEDUR PEMESANAN TEMPAT ;--------------------------------------------------------- ; RS : 0 : P3.5 ; E : 0 - 1 - 0 : P3.4 ; DATA : P2 CONTROLOUT: CLR P3.5 ; RS = 0 ACALL DELAY CLR P3.4 ACALL DELAY SETB P3.4

ACALL DELAY MOV P2,A CLR P3.4 ACALL DELAY RET ;-------------------------------------------------------- ; PROSEDUR PENEMPATAN DATA ;-------------------------------------------------------- ; RS : 0 : P3.5 ; E : 0 - 1 - 0 : P3.4 DATAOUT: SETB P3.5 ; RS = 1

ACALL DELAY CLR P3.4 ; E = 0 ACALL DELAY SETB P3.4 ; E = 1 ACALL DELAY MOV P2,A CLR P3.4 ; E = 0 ACALL DELAY RET ;-------------------------------------------- ; PROSEDUR DELAY LCD ;--------------------------------------------- DELAY.INIT.LCD:

MOV R6,#20H DLY.LCD.LP: MOV R7,#10H DJNZ R7,$ DJNZ R6,DLY.LCD.LP RET INIT_LCD: MOV A,#FUNCSET ACALL CONTROLOUT ACALL DELAY.INIT.LCD MOV A,#DISPON ACALL CONTROLOUT

ACALL DELAY.INIT.LCD MOV A,#DISPCLR

Page 9: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 160

ACALL CONTROLOUT ACALL DELAY.INIT.LCD MOV A,#ENTRMOD ACALL CONTROLOUT ACALL DELAY.INIT.LCD RET ;----------------------------------------------------------- ; PROCEDURE LCD BARIS KOLOM LCD ;---------------------------------------------------------- POSISI2.1:

MOV A,#1 POSISI2: ADD A,#11000000B ; BARIS KEDUA DEC A ACALL CONTROLOUT ACALL DELAY.INIT.LCD RET POSISI1.1: MOV A,#1 POSISI1: ADD A,#10000000B ; BARIS PERTAMA DEC A ACALL CONTROLOUT

ACALL DELAY.INIT.LCD RET PRINTSTRING2: ACALL POSISI2.1 CLR A MOVC A,@A+DPTR JNZ PRINTSTRINGLOOP PRINTSTRINGLOOP: ACALL DATAOUT ACALL DELAY.INIT.LCD INC DPTR CLR A MOVC A,@A+DPTR

JNZ PRINTSTRINGLOOP RET PRINTSTRING1: ACALL POSISI1.1 CLR A MOVC A,@A+DPTR JNZ PRINTSTRINGLOOP2 PRINTSTRINGLOOP2: LCALL DATAOUT ACALL DELAY.INIT.LCD INC DPTR CLR A MOVC A,@A+DPTR

JNZ PRINTSTRINGLOOP2 RET

Page 10: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 161

;----------------------------------------- ; PROCEDURE DELAY ;----------------------------------------- DELAY: MOV R5,#0 U1: MOV R6,#0 U2: MOV R7,#0 U3: INC R7 CJNE R7,#5,U3 INC R6 CJNE R6,#5,U2 INC R5

CJNE R5,#5,U1 RET BARIS1: DB 'DATA DARI PC: ',0 BARIS2: DB 'DATA ADC : ',0

4. Simpanlah program yang anda ketik dan beri nama prog13.asm

5. Kemudian keluarlah ke DOS prompt dan ketikkan

A PROG13 <ENTER>

Jika tidak ada kesalahan, tekan <ENTER>

6. Anda akan langsung masuk ke program AEC_ISP, kemudian pilihlah option

A. Load HEX File to flash buffer,

kemudian ketik PROG13.HEX <ENTER> dan tekan

sebarang tombol

7. Pilih E.Program <ENTER> dan tunggu sebentar sampai ada indikator 100

% dan tekan sebarang tombol

8. Pilih I. Reset

9. Kesimpulan apa yang dapat anda tarik ?

.........................................................................................................................

Page 11: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 162

Kemudian ketiklan program di Turbo Pascal :

{ SERIAL.PAS DIGUNAKAN UNTUK KOMUNIKASI SERIAL DENGAN MCS-51} uses crt; const base_address = $3F8; DLL = 0; DLM = 1; LCR = 3; MCR = 4; LSR = 5; LSR_0 = $01; {LSR(0)=1 berarti ada data dari luar yang dikirimkan} LSR_5 = $20; {LSR(5)=1 berarti ada data yang siap dikirimkan} var status, status1, status2, pass : byte; tekan : char; data : byte; Procedure receive; begin data:=port[base_address]; textcolor(red);write(data,' '); end; procedure send; begin port[base_address]:=ord(tekan); end; procedure main; begin repeat if keypressed then begin tekan:=readkey; textcolor(14);write(tekan); status:=port[base_address+LSR]; status2:=status and LSR_5; if status2 = LSR_5 then begin

send; end; end; status:=port[base_address+LSR]; status1:=status and LSR_0;

Page 12: BAB20 - MCS51 - Aplikasi ADC-LCD-RS232

Mikrokontroler MCS51 163

if status1=LSR_0 then begin receive; end; until tekan=#27; end; Procedure init_UART; begin port[base_address+LCR] := $83; {format data} port[base_address+DLL] := 12; {baud rate} port[base_address+DLM] := 0; {baud rate} port[base_address+LCR] := $03; {siap untuk receive dan send data} end; {Program Utama} begin clrscr; init_UART; main; end.