I. TUJUAN PRAKTIKUM
- Mampu memahami cara melakukan inisialisasi pada komunikasi serial USART Mikrokontroler AVR.
- Mampu membuat program untuk mengirimkan suatu karakter dari mikrokontroler AVR ke komputer.
- Mampu membuat program untuk menerima suatu karakter dari komputer.
II. PENGANTAR
USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter ) adalah komunikasi serial anatara PC dan Mikrokontroler. USART memiliki 2 pin (RxD dan TxD) untuk Asynchronous dan 3 bit TxD, RxD, XCK untuk Synchronous.Untuk PORT yang digunakan pada USART yaitu PORTD. Secara umum pengaturan mode syncrhronous maupun asyncrhronous adalah sama. Perbedaannya hanyalah terletak pada sumber clock saja.
Dari pengertia USART dapat disimpulkan ada dua hal yang harus diperhatikan yaitu Receiver dan Transmitter. Receiver adalah menerima Karakter dengan menggunakan fungsi “getchar()”, sedangkan Transmitter adalah mengirimkan karakter dengan menggunakan fungsi “putchar()”.
III. PERCOBAAN
3.1 Alat dan Bahan
3.2 Prosedur Percobaan
1)
Persiapkan
alat dan bahan, pastikan semuanya bisa digunakan dengan baik.
2)
Untuk
rangkaian percobaan perhatikan gambar dibawah ini:
3) Buka
aplikasi CVAVR, atur PORTB sebagai output kemudian PORTB dihubungkan ke LED,
dan PORTA ke LCD.
4)
Buatlah
Program untuk instruksi-instruksi yang telah ditentukan.
3.3 Rangkaian Percobaan
IV. HASIL dan PEMBAHASAN
1) Mampu
membuat Program untuk menerima (Receiver) dan mengirimkan (Transmitter) suatu karakter
dari komputer
(1) Menerima Satu Karakter
#include <mega8535.h> // library
#include <alcd.h> // Alphanumeric LCD functions
#include <stdio.h> // Standard Input/Output functions
char terima; // Variable terima dengan type data char
void main(void)
{
PORTA=0x00; //
Inisialisasi PORTA
DDRA=0x00; //
menandakan PORTA sebagai input
PORTB=0xFF; //
Inisialisasi PORTB
DDRB=0xFF; //
menandakan PORTB sebagai output
PORTC=0x00; //
Inisialisasi PORTC
DDRC=0x00;
PORTD=0x00; //
Inisialisasi PORTD
DDRD=0x00;
// Timer/Counter 0 initialization, Clock source: System Clock, Clock
value: TimStopped
// Mode: Normal top=0Xff, OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00; // Timer/Counter 1 initialization
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization,
Clock source: System Clock, Clock value: Timer2 //Stopped, Mode: Normal
top=0xFF, OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
//
External Interrupt(s) initialization, INT0: Off, INT1: Off, INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
// USART initialization, USART Receiver: On,USART Transmitter: On,
USART Mode: Asynchronous, USART Baud
Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19; // TANDA BAUD RATE
ACSR=0x80; // Analog Comparator initialization
SFIOR=0x00;
ADCSRA=0x00; //ADC initialization, ADC disabled
SPCR=0x00; //SPI
initialization, SPI disabled
TWCR=0x00; // TWI
Inisialisasi, TWI disabled
lcd_init(8);
while (1) {
terima=getchar(); // karakter yang kita terima
kita simpan di variable terima
// getchar=menerima suatu
karakter dan terima=variable
if(terima==’h’) { // jika dan jika diterima karakter ‘h’
PORTB.0=0; }// output nya hidup
else if(terima==’m’) {// maka jika dan jika terima m
PORTB.0=1;} //outputnya mati
} // mengakhiri program while
} // mengakhiri program
void main
Hasilnya seperti gambar dibawah ini:
Catatan : Pertama kita harus menconnectkan Terminal dengan cara pilih menu Setting kemudian pilih terminal. Setelah itu compile program diatas jika tidak ada error ketikkan pada
sheet yang diberi tanda panah sesuai dengan perintah yang kita buat di program yaitu pada saat kita mengetikkan huruf h maka hidup dan mengetikkan huruf m maka mati . Pada saat mengetikkan huruf h di AVR board lampu button akan hidup seperti gambar dibawah ini:
(2)Menerima beberapa Karakter Menggunakan strlen
// Declare your global variables here
char tulisan []=("politeknik kampar");
char terima,i;
while (1)
{
terima=getchar();
if(terima=='h')
{
for (i=0;i<strlen(tulisan);i++) // strln untuk menentukan banyak
// karakter//untuk mengetahui panjang
tulisan
{
putchar(tulisan[i]);
}
}
}
}
Hasilnya seperti gambar dibawah ini:
Gambar. Menerima beberapa karakter menggunakan
strlen
#include
<mega8535.h>
#include <alcd.h>
#include <stdio.h>
#include <string.h>
#include <delay.h>
char
i,h;
void main(void)
{
Untuk
inisialisasi yang digunakan sama dengan Program diatas
while
(1){
while(UCSRA.7){ // inisialisasi USART
h=UDR;
i++; }
lcd_gotoxy(i-1,0); // untuk
menentukan kolom dan baris
lcd_putchar(h); //
mengirimkan character
if
(h==0x08) { // 0x08adalah nilai dari ASCII
lcd_clear(); // membersihkan
i=0;
h=0x20 ; } // 0x20 nilai ASCII dari space
Hasilnya seperti gambar dibawah ini:
Gambar.
Mengirimkan beberapa character ke LCD
Catatan: pada program ini tidak bisa membuat character ke baris ke dua , untuk mengirimkan character perbaris programnya seperti program ke 4 dibawah ini.(4) Mengirimkan Karakter Perbaris
while
(1){
while(UCSRA.7){ // Inisialisasi
USART
h=getchar(); //
menerima character dan disimpan di variable h
i++;
} // akan membaca nilai
di terminal
if(i>8) { // fungsinya
untuk mempersingkat program
lcd_gotoxy(i-9,1); //
ditampilkan di lcd berdasarkan kolom & baris
lcd_putchar(h);} //
mengirimkan character
else { // maka
lcd_gotoxy(i-1,0); //
ditampilkan berdasarkan kolom dan baris
lcd_putchar(h); // mengirimkan character
if (h==0x08) {
lcd_clear();
i=0;
h=0x20; } // ASCII dari space
}
}
}
Hasilnya seperti gambar dibawah ini:
Gambar.
Mengirimkan character per baris
Silahkan berkomentar secara bijak dan sesuai dengan topik pembahasan. Terimakasih. ConversionConversion EmoticonEmoticon