Anda di halaman 1dari 13

Laporan Praktikum V

KOMUNIKASI SERIAL USART (SIMULASI)


Disusun untuk Memenuhi Matakuliah Sistem Mikrokontroler Lanjut Dibimbing oleh Ibu
Dyah Lestari, S.T., M.Eng.

Oleh :
Alvina Rizky
NIM 190532547220
D3 ELKA ’19 OFF A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI D3 ELEKTRONIKA
MARET 2021
MODUL V
KOMUNIKASI SERIAL USART (SIMULASI)

TUJUAN

 Mahasiswa dapat mengirim data dari mikrokontroler ATmega8535 ke komputer


menggunakan komunikasi serial USART.
 Mahasiswa dapat mengirim data dari komputer ke mikrokontroler ATmega 8535
menggunakan komunikasi serial USART.
 Mahasiswa dapat mengirim data antar mikrokontroler ATmega 8535 menggunakan
komunikasi serial USART.

KOMUNIKASI SERIAL USART

Komunikasi serial USART merupakan komunikasi full duplex (dua arah) antara pengirim
dan penerima. Hal ini dapat dilakukan karena mikrokontroler AVR dilengkapi dengan perangkat
keras yang terpisah antara pengirim dan penerima. USART biasanya digunakan untuk
komunikasi asinkron, yaitu komunikasi yang tidak memerlukan clock yang sama antara
pengirim dan penerima untuk menyinkronkan antara satu dengan yang lainnya. Untuk menjaga
sikronisasi antara pengirim dan penerima, digunakan bit start dan stop di awal dan di akhir
setiap urutan transmisi satu byte data.
Mikrokontroler AVR cukup fleksibel. Mikrokontroler ini mempunyai kemampuan untuk
mengeset berbagai macam kecepatan transmisi data yang disebut dengan baud (bit per
second) rate. USART tersebut juga dapat diset untuk mengirimkan lebar data 5 sampai 9 bit
dengan 1 atau 2 stop bit. Selain itu, mikrokontroler AVR juga dilengkapi dengan perangkat
keras pembangkit bit paritas (ganjil atau genap) dan perangkat keras pengecek paritas pada sisi
penerima. Sebuah bit parity digunakan untuk mendeteksi error satu bit dalam satu byte data.
USART juga dapat dikonfigurasi untuk beroperasi dalam mode sinkron.
Register yang digunakan untuk mengontrol sistem USART adalah sebagai berikut:
 UDR – USART I/O Data Register
 UCSRA – USART Control and Status Register A
 UCSRB – USART Control and Status Register B
 UCSRC – USART Control and Status Register C
 UBRRL dan UBRRH – USART Baud Rate Register

 UDR – USART I/O Data Register

Tempat data yang akan dikirim dan data yang diterima

 UCSRA – USART Control and Status Register A

 Bit 7 – RXC : USART Receive Complete


Bit ini berlogika 1 jika ada data yang belum dibaca pada buffer penerima dan diberi
logika 0 jika buffer penerima kosong.
 Bit 6 – TXC : USART Transmit Complete
Bit ini berlogika 1 jika semua data sudah keluar dari buffer pengirim.
 Bit 5 – UDRE: USART Data Register Empty
Flag ini menandakan jika UDR siap menerima data. Jika UDRE berlogika 1, maka
buffer sedang kosong dan siap untuk ditulis. Flag UDRE dapat membangkitkan Data
Register Empty interrupt.
 Bit 4 – FE: Frame Error
Bit ini diset jika karakter yang diterima di buffer penerima mempunyai frame yang
salah ketika diterima
 Bit 3 – DOR: Data Over Run
Bit ini diset ketika terdeteksi data overrun, artinya buffer penerima penuh.
 Bit 2 – PE: Parity Error
Bit ini diset ketika karakter berikutnya dalam buffer penerima mempunyai Parity
Error ketika diterima dan parity checking diaktifkan pada saat itu.
 Bit 1 – U2X: Double the USART Transmission Speed
Bit ini hanya berpengaruh untuk operasi asinkron. Jika menggunakan operasi
sinkron, tuliskan 0 ke bit ini.
 Bit 0 – MPCM: Multi-processor Communication Mode
Bit ini mengaktifkan mode Multi-processor Communication.

 UCSRB – USART Control and Status Register B

 Bit 7 – RXCIE : RX Complete Interrupt Enable


Menuliskan 1 ke bit ini akan mengaktifkan interrupt pada RXC Flag dan akan
membangkitkan USART Receive Complete interrupt.
 Bit 6 – TXCIE : TX Complete Interrupt Enable
Menuliskan 1 ke bit ini akan mengaktifkan interrupt pada TXC Flag dan akan
membangkitkan USART Transmit Complete interrupt.
 Bit 5 – UDRIE : USART Data Register Empty Interrupt Enable
Menuliskan 1 ke bit ini akan Data Register Empty interrupt.
 Bit 4 – RXEN : Receiver Enable
Menuliskan 1 ke bit ini akan mengaktifkan USART Receiver.
 Bit 3 – TXEN : Transmitter Enable
Menuliskan 1 ke bit ini akan mengaktifkan USART Transmitter.
 Bit 2 – UCSZ2 : Character Size
Dikombinasikan dengan UCSZ1:0 dalam UCSRC akan menentukan jumlah bit data
(Character Size) dalam frame Receiver dan Transmitter.
 Bit 1 – RXB8 : Receive Data Bit 8
Tempat data ke-8 karakter yang diterima jika menggunakan frame 9 bit. Harus
dibaca sebelum membaca UDR.
 Bit 0 – TXB8 : Transmit Data Bit 8
Tempat data ke-8 dari karakter yang akan dikirim jika beroperasi dengan frame 9
bit. Harus ditullis sebelum menulis data ke UDR.

 UCSRC – USART Control and Status Register C

 Bit 7 – URSEL : Register Select


Bit ini memilih antara mengakses regsister UCSRC atau UBRRH. Jika membaca
UCSRC maka berlogika 1. URSEL mesti berlogika 1 ketika menulis ke UCSRC
 Bit 6 – UMSEL : USART Mode Select
Bit ini memilih antara mode operasi asinkron dan sinkron.
 Bit 5,4 – UPM1:0 : Parity Mode
Bit ini mengaktifkan dan mengeset tipe pambangkit dan pengecek parity.

 Bit 3 – USBS : Stop Bit Select


Bit ini menentukan jumlah bit stop yang harus dimasukkan ke Transmitter.

 Bit 2,1 – UCSZ1:0 : Character Size


Dikombinasikan dengan UCSZ2 dalam UCSRB menentukan jumlah bit data
(character size) dalam frame Receiver dan Transmitter.

 Bit 0 – UCPOL : Clock Polarity


Bit ini digunakan untuk mode sikron saja dengan cara menuliskan 0 ke bit ini kerika
berada dalam mode asinkron. Bit UCPOL menentukan hubungan anatara perubahan
data output dan sampel data input, dan clock sinkron (XCK).

 UBRRL dan UBRRH – USART Baud Rate Register

 Bit 15 – URSEL : Register Select


Bit ini memilih antara mengakses register UBRRH atau UCSRC. Untuk mengakses
UBRRH maka harus diberi logika 0.
 Bit 14:12 –Reserved Bits
 Bit 11:0 – UBRR11:0 : USART Baud Rate Register
Ke-12 bit ini berisi USART Baud Rate

ALAT DAN BAHAN YANG DIGUNAKAN

 1 set PC/Laptop yang sudah berisi program Code Vision AVR, Proteus, VSPE (Vitual
Serial Port Emulator) dan HTerm.

PROSEDUR

A. MENGIRIM DATA DARI MIKROKONTROLER ATmega8535 KE KOMPUTER


1. Buatlah rangkaian seperti dalam Gambar 5.1 dengan software Proteus.

VCC
LCD1
PB7

PB6

PB5

PB4

PB3

PB2

PB1

PB0
LM016L
RP1
1

2
3
4
5

VDD
VSS

VEE
6

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
VCC

E
7
8

1
2
3

4
5
6

7
8
9
10
11
12
13
14
9

RESPACK-8 RV1

PC0
PC1
PC2

PC4
PC5
PC6
PC7
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
SW-SPST SW-SPST SW-SPST SW-SPST SW-SPST SW-SPST SW-SPST SW-SPST

1k

U1
VCC
1 40
PB0 PB0/T0/XCK PA0/ADC0
2 39
PB1 PB1/T1 PA1/ADC1
3 38
PB2 PB2/AIN0/INT2 PA2/ADC2
XTAL1

XTAL2

4 37
PB3 PB3/AIN1/OC0 PA3/ADC3
5 36
PB4 PB4/SS PA4/ADC4 P1
6 35
PB5 PB5/MOSI PA5/ADC5
PB6
7
PB6/MISO PA6/ADC6
34 R1
PB7
8
PB7/SCK PA7/ADC7
33 10k X1 1
DCD
6
DSR
14 22 1 2 2
PDO PD0/RXD PC0/SCL PC0 PD0 RXD
15 23 7
PD1 PD1/TXD PC1/SDA PC1 RTS
16 24 3
PD2/INT0 PC2 PC2 RESET CRYSTAL PD1 TXD
17 25 8
PD3/INT1 PC3 PC3 CTS
18 26 4
PD4/OC1B PC4 PC4 DTR
19
PD5/OC1A PC5
27
PC5 C1 9
RI
20
PD6/ICP1 PC6/TOSC1
28
PC6 4,7uF C2 C3
21 29 1nF 1nF
PD7/OC2 PC7/TOSC2 PC7
13 ERROR
XTAL1 XTAL1
12 32 COMPIM
XTAL2 XTAL2 AREF
9 30
RESET RESET AVCC
ATMEGA8535

Gambar 5.1 Rangkaian praktikum yang dibuat di Proteus

2. Buka program Code Vision AVR. Buatlah project baru. Dengan menggunakan wizard, set
PORTB sebagai input dengan pull up dan komunikasi USART sebagai Transmitter, baud
rate 19200, frame format 8 data, 1 stop, no parity dan mode asynchronous.
3. Buat program untuk membaca data dari piranti input toggle switch kemudian mengirim
ke komputer untuk ditampilkan di hyperterminal/Hterm dalam bilangan desimal dan
heksadesimal. Compile program tersebut.
4. Buka rangkaian di Proteus, kemudian masukkan program yang sudah dicompile ke
mikrokontroler di Proteus.
5. Buka program VSPE kemudian set komunikasi virtual (pair) misalnya antara COM1 dan
COM2.
6. Buka rangkaian di Proteus, set komponen COMPIM menggunakan port serial COM1.
Kemudian simulasikan rangkaian.
7. Buka aplikasi Hterm. Pilih Port COM2 dan Baud Rate 19200. Klik Connect.
8. Ubah kombinasi toggle switch di Proteus seperti dalam Tabel 5.1.
9. Lihat karakter yang muncul di jendela Transmitted Data dan catat di Tabel 5.1 (desimal
dan heksadesimal).
10. Ulangi langkah 8 dan 9.

B. MENGIRIM DATA DARI KOMPUTER KE MIKROKONTROLER ATmega8535


1. Gunakan rangkaian seperti dalam Gambar 5.1.
2. Buka program Code Vision AVR. Buatlah project baru. Dengan menggunakan wizard, set
PORTC untuk LCD dan komunikasi USART sebagai Receiver, baud rate 19200, frame
format 8 data, 1 stop, no parity dan mode asynchronous.
3. Buat program untuk menerima karakter dari hyperterminal/Hterm dan
menampilkannya ke LCD. Compile program tersebut.
4. Buka rangkaian di Proteus, kemudian masukkan program yang sudah dicompile ke
mikrokontroler di Proteus.
5. Buka program VSPE kemudian set komunikasi virtual (pair) misalnya antara COM1 dan
COM2.
6. Buka rangkaian di Proteus, set komponen COMPIM menggunakan port serial COM1.
Kemudian simulasikan rangkaian.
7. Buka aplikasi Hterm. Pilih Port COM2 dan Baud Rate 19200. Klik Connect.
8. Tulis karakter yang dikirimkan di hyperterminal seperti dalam Tabel 5.2.
9. Lihat karakter yang tampil di LCD dan catat di Tabel 5.2.
10. Ulangi langkah 8 dan 9.

C. MENGIRIM DATA DARI MIKROKONTROLER KE MIKROKONTROLER


1. Rangkailah komponen yang diperlukan seperti dalam Gambar 5.2 dengan software
Proteus.
2. Buka program Code Vision AVR. Buatlah project baru. Set mikrokontroler1 sebagai
Transmitter komunikasi USART dengan baud rate 19200, frame format 8 data, 1 stop,
no parity dan mode asynchronous. Set mikrokontroler2 sebagai Receiver komunikasi
USART dengan baud rate 19200, frame format 8 data, 1 stop, no parity dan mode
asynchronous, sekaligus PORTCnya dihubungkan dengan LCD.
3. Buat program pada mikrokontroler1 untuk mengirim karakter tertentu. Compile
program tersebut.
4. Buat program pada mikrokontroler2 untuk menerima karakter dan menampilkannya ke
LCD. Compile program tersebut.
5. Buka rangkaian di Proteus, kemudian masukkan program yang sudah dicompile ke
masing-masing mikrokontroler di Proteus.
6. Simulasikan rangkaian.
7. Tuliskan karakter yang dikirim dan ditampilkan ke LCD dalam Tabel 5.3.
U3 LCD2
VCC LM016L
1 40
PB0/T0/XCK PA0/ADC0
2 39
PB1/T1 PA1/ADC1
3 38
PB2/AIN0/INT2 PA2/ADC2

XTAL21

XTAL22
4 37
PB3/AIN1/OC0 PA3/ADC3
5 36
PB4/SS PA4/ADC4
6 35
PB5/MOSI PA5/ADC5
7
PB6/MISO PA6/ADC6
34 R3
8
PB7/SCK PA7/ADC7
33 10k X3

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
VCC

E
14 22 1 2
PD1 PD0/RXD PC0/SCL PC0
15 23
PD0 PD1/TXD PC1/SDA PC1

1
2
3

4
5
6

7
8
9
10
11
12
13
14
16 24
PD2/INT0 PC2 PC2 RESET1 CRYSTAL
17 25
PD3/INT1 PC3 PC3 RV2
18 26
PD4/OC1B PC4 PC4
19 27 C7

PC0
PC1
PC2

PC4
PC5
PC6
PC7
PD5/OC1A PC5 PC5
20
PD6/ICP1 PC6/TOSC1
28
PC6 4,7uF C8 C9
21 29 1nF 1nF
PD7/OC2 PC7/TOSC2 PC7
13
XTAL21 XTAL1
12 32
XTAL22 XTAL2 AREF
9 30 1k
RESET2 RESET AVCC
ATMEGA8535

U2
VCC
1 40
PB0/T0/XCK PA0/ADC0
2 39
PB1/T1 PA1/ADC1
3 38
PB2/AIN0/INT2 PA2/ADC2

XTAL12
XTAL11
4 37
PB3/AIN1/OC0 PA3/ADC3
5 36
PB4/SS PA4/ADC4
6 35
PB5/MOSI PA5/ADC5
7
PB6/MISO PA6/ADC6
34 R2
8
PB7/SCK PA7/ADC7
33 10k X2
14 22 1 2
PDO PD0/RXD PC0/SCL
15 23
PD1 PD1/TXD PC1/SDA
16 24
PD2/INT0 PC2 RESET1 CRYSTAL
17 25
PD3/INT1 PC3
18 26
PD4/OC1B PC4
19
PD5/OC1A PC5
27 C4
20
PD6/ICP1 PC6/TOSC1
28 4,7uF C5 C6
21 29 1nF 1nF
PD7/OC2 PC7/TOSC2
13
XTAL11 XTAL1
12 32
XTAL12 XTAL2 AREF
9 30
RESET1 RESET AVCC
ATMEGA8535

Gambar 5.2 Rangkaian untuk mengirim data dari mikrokontroler ke mikrokontroler

DATA HASIL PERCOBAAN

1. Program mengirim data dari mikrokontroler ke komputer.


#include <mega8535.h>

// Declare your global variables here

// Standard Input/Output functions


#include <stdio.h>
#include <delay.h>
char data_in;
void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 19200
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) |
(0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) |
(1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) |
(0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x0C;
// Declare your local variables here
DDRB=0x00;
PORTB=0xFF;
while (1)
{
data_in=PINB;
printf("%c", data_in);
delay_ms(1000);

}
}

2.
Tabel 5.1 Hasil percobaan A
Kombinasi toggle switch Tampilan hyperterminal
No
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0 Desimal Heksadesimal
1 0 0 0 0 0 0 0 1 1 0x01
2 0 0 0 0 0 0 1 1 3 0x03
3 0 0 0 0 0 1 1 1 7 0x07
4 0 0 0 0 1 1 1 1 15 0x15
5 0 0 0 1 1 1 1 1 31 0x31
6 0 0 1 1 1 1 1 1 63 0x63
7 0 1 1 1 1 1 1 1 127 0x127
8 1 1 1 1 1 1 1 1 255 0x255

3. Program mengirim data dari komputer ke mikrokontroler.


#include <mega8535.h>

// Alphanumeric LCD functions


#include <alcd.h>

// Declare your global variables here

// Standard Input/Output functions


#include <stdio.h>
char input,n;

void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 19200
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) |
(0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) |
(0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) |
(0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x0C;
lcd_init(16);

while (1)
{
for(n=0;n<16;n++)
{
input= getchar();
lcd_gotoxy(n,0);
lcd_putchar(input);
putchar(input);
}

}
}

4.
Tabel 5.2 Hasil percobaan B
Karakter yang dikirim dari
No Tampilan LCD
hyperterminal
1

Satu

Dua kata

5. Program mengirim data dari mikrokontroler1.


#include <mega8535.h>
#include <stdio.h>
#include <delay.h>

void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 19200
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) |
(0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) |
(1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) |
(0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x0C;

while (1)
{
putchar('A');
delay_ms(1000);
putchar('B');
delay_ms(1000);
putchar ('C');
delay_ms(1000);
}
}
6. Program menerima data dan menampilkan ke LCD pada mikrokontroler2.
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>
char a;
char data[10];

void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 19200
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) |
(0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) |
(0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) |
(0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x0C;

lcd_init(16);

while (1)
{
a=getchar();
sprintf(data,"%c",a);
lcd_gotoxy(0,0);
lcd_puts(data);

}
}
12

7.
Tabel 5.3 Hasil Percobaan C
Karakter yang dikirim pada Tampilan LCD pada
No
mikrokontroler1 mikrokontroler2
1

ANALISIS DATA

1. Bandingkan antara konfigurasi toggle switch dan tampilan di hyperterminal/Hterm.


Bilangan apa yang muncul sebagai nilai di hyperterminal/Hterm? Apa persamaan antara
konfigurasi toggle switch dengan nilai yang tampil di hyperterminal/Hterm?
 Bilangan yang muncul sebagai nilai hyperterminal yaitu bilangan decimal dan
hexadecimal.
 Persamaannya yaitu pada hasil konversu bilangan biner toggle switch.

2. Parameter apa yang menyebabkan nilai yang tampil di hyperterminal/Hterm menjadi


seperti itu?
Dengan men checklist h
Hex (hexadecimal),Dec(decimal)pada toolboxt di Hterm dimana input dari switch akan
diubah menjadi bilangan yang sudah dichecklist.

3. Instruksi apa yang digunakan untuk mengirim data dari mikrokontroler ke komputer?
Instruksi yang digunakan yaitu :
Printf() berfungsi mengirimkan data satu atau lebih karakter memalui USART.
Putchar() berfungsi mengirimkan data hanya satu karakter.
13

4. Bandingkan antara tombol yang dikirimkan dari hyperterminal/Hterm dengan tampilan


di LCD.
Hasil pada tampilan LCD merupakan karakter bilangan asli yang dikirim oleh
hyperterminal/Hterm kemudian diterima oleh mikrokontroler .

5. Instruksi apa yang digunakan untuk menerima data dari komputer ke mikrokontroler?
getchar() = hanya dapat menerima satu karakter saja.
scanf() = dapat menerima satu atau lebih karakter.

6. Bandingkan antara karakter yang dikirimkan dari mikrokontroler1 dengan karakter yang
tampil di LCD yang terhubung ke mikrokontroler2?
Karakter yang dikirimkan oleh mikrokontroler 1 yaitu A , B , C kemudian diterima oleh
mikrokontroler 2 dan hasilnya ditampilkan pada LCD.

7. Tuliskan kembali instruksi yang digunakan untuk mengirim data dari mikrokontroler
serta instruksi yang digunakan untuk menerima data di mikrokontroler.
Instruksi yang digunakan untuk mengirimkan data dari mikrokontroler yaitu

Anda mungkin juga menyukai