Praktek 2AVR_D4 Serial

Click here to load reader

Transcript of Praktek 2AVR_D4 Serial

Praktek 2 Komunikasi Serial RS-232Tujuan: Mahasiswa mengerti cara melakukan komunikasi serial dengan mikrokontroller AVR untuk mengendalikan sesuatu peralatan Mahasiswa mengerti cara membuat program C pada mikrokontroller AVR untuk melakukan komunikasi serial Mahasiswa dapat membuat program Visual Basic untuk digabungkan dengan mikrokontroller AVR yang sudah diprogram untuk melakukan komunikasi serial Peralatan yang digunakan: modul AVR Modul LED dan switch Kabel serial RS232 (cross) Deskripsi/ Dasar Teori:

Gambar2.1. Setting komunikasi Serial

1

Gambar2.2. Setting komunikasi Serial (lanjutan)

PC with serial port (COM)

COM 1

DB-9 female

Modul AVR min Sys

Gambar2.3. Sistem Komunikasi serial PC dengan AVR Min. Sys.

female1 2 3 4 5 4 PC side

male1 2 3 4 5 4 AVR Min. Sys. side

Gambar2.4. Kabel komunikasi Serial Null Modem (cross)

2

Gambar2.5. Menu Setting -> terminal

Gambar2.6. Menu Tools -> terminal

Gambar2.7. Menjalankan window terminal di Code Vision AVR untuk mengamati hasil program yang mengakses komunikasi serial 3

Gambar2.8. Terminal program bisa juga memakai program Hyperterminal bawaan MS Windows. Bisa di akses di Start-> All programs -> Acessories -> Communications -> Hyperterminal

PERCOBAAN 1Melakukan pengiriman 1 buah karakter terus menerus#include #include void main(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; while (1) { putchar(a); } }

4

Bandingkan hasilnya dengan program yang ada di bawah ini:#include #include void main(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; while (1) { putchar(a); putchar(0x0d); putchar(0x0a); } }

PERCOBAAN 2Melakukan pengiriman 1 string terus menerus dengan metode tabel#include #include void main(void) { flash char *pesan,*pesan1; // jangan lupa di beri asterix utk tipe data string char i; PORTA=0xff; DDRA=0xff; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; pesan="Ini pesan teks"; pesan1="Ini pesan 1";

5

while (1) { putsf(pesan); putsf("Ini pesan kedua"); i=0; while(pesan1[i]!=0) { putchar(pesan1[i]); i++; } } }

PERCOBAAN 3Melakukan penerimaan 1 buah karakter terus menerus dan ditampilkan ke LED kode ASCII nya#include #include void main(void) { int a; PORTA=0xff; DDRA=0xff; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; while (1) { a=getchar(); PORTA=a; } }

PERCOBAAN 4Melakukan penerimaan 1 buah karakter dari komputer, dikirim lagi ke komputer dan ditampilkan ke LED kode ASCII nya terus menerus

6

#include #include void main(void) { int a; PORTA=0xff; DDRA=0xff; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; while (1) { a=getchar(); putchar(a); PORTA=a; } }

PERCOBAAN 5Membuat gabungan 2 buah program: Visual Basic (sisi komputer) Membuat sistem ON/OFF tiap bit LED dengan sebuah tombol. Rancangan tampilan:

7

Program di Visual Basic:Private Sub Command1_Click(Index As Integer) a = Chr(Index) MSComm1.Output = a If (Index Mod 2 = 0) Then Shape1(Index / 2).FillColor = vbGreen Else If (Index Mod 2 = 1) Then a = Index - 1 Else a = Index End If Shape1(a / 2).FillColor = vbRed End If End Sub Private Sub Form_Load() MSComm1.PortOpen = True End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub

C (sisi microcontroller) Ada 2 versi program disisi mikrokontroller. Versi satu ada di bawah ini:#include #include void main(void) { int a; PORTA=0xff; DDRA=0xff; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; while (1) { // Place your code here

8

a=getchar(); switch(a) { case(0): PORTA=0xfe;break; // hrusnya 0x01 krn LED aktif low diubah.. case(2): PORTA=0xfd; break; //0x02 case(4): PORTA=0xfb; break; //0x04 case(6): PORTA=0xf7; break; //0x08 case(8): PORTA=0xef; break; //0x10 case(10): PORTA=0xdf; break; //0x20 case(12): PORTA=0xbf; break; //0x40 case(14): PORTA=0x7f; break; //0x80 case(1): PORTA=0x00; break; //padamkan semua LED case(3): PORTA=0x00; break; case(5): PORTA=0x00; break; case(7): PORTA=0x00; break; case(9): PORTA=0x00; break; case(11): PORTA=0x00; break; case(13): PORTA=0x00; break; case(15): PORTA=0x00; break; } } }

versi kedua. Amati perbedaannya.#include #include void main(void) { int a; PORTA=0xff; DDRA=0xff; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86;

9

UBRRH=0x00; UBRRL=0x47; while (1) { // Place your a=getchar(); switch(a) { case(0): PORTA=PORTA case(2): PORTA=PORTA case(4): PORTA=PORTA case(6): PORTA=PORTA case(8): PORTA=PORTA case(10): PORTA=PORTA case(12): PORTA=PORTA case(14): PORTA=PORTA case(1): PORTA=PORTA case(3): PORTA=PORTA case(5): PORTA=PORTA case(7): PORTA=PORTA case(9): PORTA=PORTA case(11): PORTA=PORTA case(13): PORTA=PORTA case(15): PORTA=PORTA } } }

code here

& 0xfe; break; &0xfd; break; &0xfb; break; &0xf7; break; &0xef; break; &0xdf; break; &0xbf; break; &0x7f; break; |0x01; break; |0x02; break; |0x04; break; |0x08; break; |0x10; break; |0x20; break; |0x40; break; |0x80; break;

PERCOBAAN 6 (mandiri)Membuat sistem deret angka ganjil atau genap, dengan input jumlah deret. Tampilan di tampilkan di terminal program Code Vision atau program Hyperterminal Contoh tampilan:DERET BILANGAN GANJIL BY DARWIS_ANGGA MASUKKAN JUMLAH DERET: 5 1 3 5 7 9 DERET BILANGAN GANJIL BY DARWIS_ANGGA

10

MASUKKAN JUMLAH DERET: _

PERCOBAAN 7 (mandiri)Membuat sistem menu penjualan super mini market yang menjual 5 jenis barang. Tampilkan dahulu jenis barang dan nomer kodenya (1 sampai 5) kemudian user memasukkan nomer kodenya, kemudian memasukkan jumlah barang yang dibeli. Tampilan akan menghitung total biaya yang akan dibayar. Contoh tampilan:***************************** SUPER MINI MARKET MAJU JAYA DAFTAR BARANG: 1. ROTI Rp.5.000,2. PERMEN Rp. 500,3. GULA Rp.6.000,4. SABUN Rp. 725,5. MINYAK Rp. 550,MASUKKAN KODE BARANG: 5 JUMLAH BARANG ? 6 TOTAL HARGA: Rp. 3300 ***************************** SUPER MINI MARKET MAJU JAYA DAFTAR BARANG: 1. ROTI Rp.5.000,2. PERMEN Rp. 500,3. GULA Rp.6.000,4. SABUN Rp. 725,5. MINYAK Rp. 550,MASUKKAN KODE BARANG: _

by: darwis_angga@sep 17th, 2007 FA Lab.

11