praktikum 5 usart

27
LAPORAN HASIL PRAKTIKUM MICROCONTROLLER DAN INTERFACING Komunikasi Serial pada ATmega16 Menggunakan Metode USARTNama : Fiqi Amalia No : 10 NIM : 1331130038 Kelas : TT-2A Mata kuliah : Praktikum Mikrokontroller dan Interfacing POLITEKNIK NEGERI MALANG Jalan Soekarno-Hatta No.9, PO.BOX 04 Malang 65141, Jawa Timur Telp. (0341) 404424, 404425, Fax. (0341) 404420 Website : www.polinema.ac.id 2014

Upload: fiqi

Post on 06-Feb-2016

206 views

Category:

Documents


15 download

DESCRIPTION

Komunikasi Serial pada ATmega16 Menggunakan Metode USART

TRANSCRIPT

Page 1: praktikum 5 USART

LAPORAN HASIL PRAKTIKUM

MICROCONTROLLER DAN INTERFACING

“Komunikasi Serial pada ATmega16

Menggunakan Metode USART”

Nama : Fiqi Amalia

No : 10

NIM : 1331130038

Kelas : TT-2A

Mata kuliah : Praktikum Mikrokontroller dan Interfacing

POLITEKNIK NEGERI MALANG

Jalan Soekarno-Hatta No.9, PO.BOX 04 Malang 65141, Jawa Timur

Telp. (0341) 404424, 404425, Fax. (0341) 404420

Website : www.polinema.ac.id

2014

Page 2: praktikum 5 USART

BAB I

PENDAHULUAN

1.1 Tujuan

1) mampu membuat dan memahami pemrograman komunikasi serial pada

mikrokontroller, baik sebagai penerima atau pengirim data.

2) mampu membuat aplikasi interface sederhana dengan program Code Vision

AVR, Proteus, dan Hercules sebagai penghubung antara mikrokontroller

dengan PC secara komuikasi serial .

1.2 Alat Dan Bahan

1) ATmega16 1 buah

2) Seven segmen Anoda 1 buah

3) DB9 Female PCB 1 buah

4) Male Header 1x40 3 buah

5) 2x5 Male Header with cover 1 buah

6) Resistor 10k𝛺 ¼ watt 2 buah

7) Resistor 15k𝛺 ¼ watt 1 buah

8) Resistor 220k𝛺 ¼ watt 1 buah

9) Resistor 330k𝛺 ¼ watt 1 buah

10) Potensio 10k𝛺 1 buah

11) LDR besar 1 buah

12) Kapasitor 10𝜇F 7 buah

13) Kapasitor 33pF 2 buah

14) Kristal 12MHz 1 buah

15) Max232 1 buah

16) IC 7025 1 buah

17) Switch 2 pin 5 buah

18) Terminal screw 2 pin 1 buah

19) Socket IC 40 pin 1 buah

20) Socket IC 16 pin 1 buah

21) LED 3mm 1 buah

22) 1 pin backhousing 4 buah

Page 3: praktikum 5 USART

23) 2 pin backhousing 4 buah

24) 4 pin backhousing 2 buah

25) 8 pin backhousing 2 buah

26) Kabel pelangi 10 pin 1 buah

27) Spacer 2mmx10mm 4 buah

Page 4: praktikum 5 USART

BAB II

TEORI DASAR

2.1 Atmega16

Mikrokontroler adalah sebuah sistem komputer lengkap dalam satu

serpih(chip). Mikrokontroler lebih dari sekedar sebuah mikroprosesor karena

sudah terdapat atau berisikan ROM (Read-Only Memory), RAM (Read-Write

Memory),beberapa Port masukan maupun keluaran, dan beberapa peripheral

seperti pencacah/pewaktu, ADC (Analog to Digital converter), DAC (Digital to

Analog converter) dan serial komunikasi.

a. Arsitektur ATMEGA16

Mikrokontroler ini menggunakan arsitektur Harvard yang memisahkan

memori program dari memori data, baik bus alamat maupun bus data, sehingga

pengaksesan program dan data dapat dilakukan secara bersamaan

(concurrent). Secara garis besar mikrokontroler ATMega16 terdiri dari :

1. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi

16Mhz.

2. Memiliki kapasitas Flash memori 16Kbyte, EEPROM 512 Byte, dan

SRAM 1Kbyte

3. Saluran I/O 32 buah, yaitu Port A, Port B, Port C, dan Port D.

4. CPU yang terdiri dari 32 buah register.

5. User interupsi internal dan eksternal

6. Port antarmuka SPI dan Port USART sebagai komunikasi serial

7. Fitur Peripheral

Page 5: praktikum 5 USART

• Dua buah 8-bit timer/counter dengan prescaler terpisah dan mode

compare

• Satu buah 16-bit timer/counter dengan prescaler terpisah, mode

compare, dan mode capture

• Real time counter dengan osilator tersendiri

• Empat kanal PWM dan Antarmuka komparator analog

• 8 kanal, 10 bit ADC

• Byte-oriented Two-wire Serial Interface

• Watchdog timer dengan osilator internal

b. Konfigurasi Pena (PIN) Atmega16

Konfigurasi pena (pin) mikrokontroler Atmega16 dengan kemasan 40-

pena dapat dilihat pada Gambar 2.2. Dari gambar tersebut dapat terlihat

ATMega16 memiliki 8 pena untuk masing-masing Port A, Port B, Port C, dan

Port D.

.

c. Deskripsi Mikrokontroller Atmega16

VCC (Power Supply) dan GND(Ground)

Port A (PA7..PA0)

Port A berfungsi sebagai input analog pada konverter A/D. Port A juga

sebagai suatu Port I/O 8-bit dua arah, jika A/D konverter tidak digunakan.

Pena - pena Port dapat menyediakan resistor internal pull-up (yang dipilih

untuk masing-masing bit). Port A output buffer mempunyai karakteristik

Page 6: praktikum 5 USART

gerakan simetris dengan keduanya sink tinggi dan kemampuan sumber.

Ketika pena PA0 ke PA7 digunakan sebagai input dan secara eksternal

ditarik rendah, pena–pena akan memungkinkan arus sumber jika resistor

internal pull-up diaktifkan. Pena Port A adalah tri-stated manakala suatu

kondisi reset menjadi aktif, sekalipun waktu habis.

Port B (PB7..PB0)

Port B adalah suatu port I/O 8-bit dua arah dengan resistor internal

pull-up (yang dipilih untuk beberapa bit). Port B output buffer mempunyai

karakteristik gerakan simetris dengan keduanya sink tinggi dan kemampuan

sumber. Sebagai input, pena Port B yang secara eksternal ditarik rendah

akan arus sumber jika resistor pull-up diaktifkan. Pena Port B adalah tri-

stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.

Port C (PC7..PC0)

Port C adalah suatu port I/O 8-bit dua arah dengan resistor internal

pull-up (yang dipilih untuk beberapa bit). Port C output buffer mempunyai

karakteristik gerakan simetris dengan keduanya sink tinggi dan kemampuan

sumber. Sebagai input, pena port C yang secara eksternal ditarik rendah

akan arus sumber jika resistor pull-up diaktifkan. Pena port C adalah tri-

stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.

Port D (PD7..PD0)

Port D adalah suatu port I/O 8-bit dua arah dengan resistor internal

pull-up (yang dipilih untuk beberapa bit). Port D output buffer mempunyai

karakteristik gerakan simetris dengan keduanya sink tinggi dan kemampuan

sumber. Sebagai input, pena port D yang secara eksternal ditarik rendah

akan arus sumber jika resistor pull-up diaktifkan. Pena Port D adalah tri-

stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis

RESET (Reset input)

XTAL1 (Input Oscillator)

XTAL2 (Output Oscillator)

AVCC adalah pena penyedia tegangan untuk port A dan

Konverter A/D.

AREF adalah pena referensi analog untuk konverter A/D.

Page 7: praktikum 5 USART

2.2 Seven Segment

a. Pengertian

Layar tujuh segmen (bahasa Inggris: Seven-segment display (SSD)) adalah

salah satu perangkat layar untuk menampilkan sistem angka desimal yang

merupakan alternatif dari layar dot-matrix.

b. Cara kerja

Layar tujuh segmen berbasis LED menampilkan 16 digit HEX Layar

tujuh segmen ini terdiri dari 7 buah LED yang membentuk angka 8 dan 1 LED

untuk titik/DP. Angka yang ditampilkan di seven segmen ini dari 0-9. Cara kerja

dari seven segmen disesuaikan dengan LED. LED merupakan komponen diode

yang dapat memancarkan cahaya. kondisi dalam keadaan ON jika sisi anode

mendapatkan sumber positif dari Vcc dan katode mendapatkan sumber negatif

dari ground.

Berdasarkan cara kerjanya, tujuh segmen dibagi menjadi 2 bagian:

common katode

Cara kerja dari seven segmen common katode akan aktif pada kondisi high "1"

dan akan off pada kondisi low "0".

ANGKA h g f e d C b a HEXA

0 0 0 1 1 1 1 1 1 3FH

1 0 0 0 0 0 1 1 0 06H

2 0 1 0 1 1 0 1 1 5BH

3 0 1 0 0 1 1 1 1 4FH

4 0 1 1 0 0 1 1 0 66H

5 0 1 1 0 1 1 0 1 6DH

Page 8: praktikum 5 USART

6 0 1 1 1 1 1 0 1 7DH

7 0 0 0 0 0 1 1 1 07H

8 0 1 1 1 1 1 1 1 7FH

9 0 1 1 0 1 1 1 1 6FH

common anode

Cara kerja dari seven segmen common anode akan aktif pada kondisi

low "0" dan akan off pada kondisi high "1".

ANGKA h g f e d c b a HEXA

0 1 1 0 0 0 0 0 0 C0H

1 1 1 1 1 1 0 0 1 F9H

2 1 0 1 0 0 1 0 0 A4H

3 1 0 1 1 0 0 0 0 B0H

4 1 0 0 1 1 0 0 1 99H

5 1 0 0 1 0 0 1 0 EDH

6 1 0 0 0 0 0 1 0 12H

7 1 1 1 1 1 0 0 0 F8H

8 1 0 0 0 0 0 0 0 10H

9 1 0 0 1 0 0 0 0 90H

2.3 Potensiometer

Potensiometer satu putaran yang umum

Page 9: praktikum 5 USART

Potensiometer adalah resistor tiga terminal dengan sambungan geser yang

membentuk pembagi tegangan dapat disetel. Jika hanya dua terminal yang digunakan

(salah satu terminal tetap dan terminal geser), potensiometer berperan sebagai resistor

variabel atau Rheostat. Potensiometer biasanya digunakan untuk mengendalikan

peranti elektronik seperti pengendali suara pada penguat. Potensiometer yang

dioperasikan oleh suatu mekanisme dapat digunakan sebagai transduser, misalnya

sebagai sensor joystick.

Potensiometer jarang digunakan untuk mengendalikan daya tinggi (lebih dari 1

Watt) secara langsung. Potensiometer digunakan untuk menyetel taraf isyarat analog

(misalnya pengendali suara pada peranti audio), dan sebagai pengendali masukan

untuk sirkuit elektronik. Sebagai contoh, sebuah peredup lampu menggunakan

potensiometer untuk menendalikan pensakelaran sebuah TRIAC, jadi secara tidak

langsung mengendalikan kecerahan lampu.

Potensiometer yang digunakan sebagai pengendali volume kadang-kadang

dilengkapi dengan sakelar yang terintegrasi, sehingga potensiometer membuka sakelar

saat penyapu berada pada posisi terendah.

Jenis-jenis potensiometer

1. Potensiometer String

2. Potensiometer linier slider

3. Potensiometer tiga terminal

4. Potensiometer membrane

5. Potensiometer digital

2.4 Sensor Cahaya LDR (Light Dependent Resistor)

Merupakan salah satu jenis resistor yang dapat mengalami perubahan

resistansinya apabila mengalami perubahan penerimaan cahaya. Besarnya nilai hambatan

pada Sensor Cahaya LDR (Light Dependent Resistor) tergantung pada besar kecilnya

cahaya yang diterima oleh LDR itu sendiri.

Simbol Dan Fisik Sensor Cahaya LDR (Light Dependent Resistor)

Page 10: praktikum 5 USART

Sensor Cahaya LDR (Light Dependent Resistor) dapat digunakan sebagai :

o Sensor pada rangkaian saklar cahaya

o Sensor pada lampu otomatis

o Sensor pada alarm brankas

o Sensor pada tracker cahaya matahari

o Sensor pada kontrol arah solar cell

o Sensor pada robot line follower

Karakteristik Sensor Cahaya LDR (Light Dependent Resistor)

1. Laju Recovery Sensor

Bila sebuah “Sensor Cahaya LDR (Light Dependent Resistor)” dibawa

dari suatu ruangan dengan level kekuatan cahaya tertentu ke dalam suatu

ruangan yang gelap, maka bisa kita amati bahwa nilai resistansi dari LDR

tidak akan segera berubah resistansinya pada keadaan ruangan gelap tersebut

2. Respon Spektral

Cahaya LDR (Light Dependent Resistor) tidak mempunyai sensitivitas

yang sama untuk setiap panjang gelombang cahaya yang jatuh padanya (yaitu

warna). Bahan yang biasa digunakan sebagai penghantar arus listrik yaitu

tembaga, aluminium, baja, emas dan perak

Prinsip Kerja Sensor Cahaya LDR (Light Dependent Resistor)

Resistansi Sensor Cahaya LDR (Light Dependent Resistor) akan berubah

seiring den-gan perubahan intensitas cahaya yang mengenainya atau yang ada

disekitarnya. Dalam keadaan gelap resistansi LDR seki-tar 10MΩ dan dalam

keadaan terang sebe-sar 1KΩ atau kurang. LDR terbuat dari ba-han

semikonduktor seperti kadmium sul-fida. Dengan bahan ini energi dari cahaya

yang jatuh menyebabkan lebih banyak mua-tan yang dilepas atau arus listrik

meningkat. Artinya resistansi bahan telah men-galami penurunan.

Page 11: praktikum 5 USART

2.5 USB TTL

USB TTL adalah kombinasi dari USB-232-1 (USB untuk Single RS232 Adapter) dan

TTL-232-1 (Port-powered RS232/TTL).

Interface introduction

VCC: +5V output

TXD: UART data output

RXD: UART data input

VSS: Controllable Power Negative

GND: GND

Connection

USB TTL ATmega16

Page 12: praktikum 5 USART

BAB III

PEMBAHASAN

3.1 Flowchart

Page 13: praktikum 5 USART

3.2 Script Program

#include <mega16.h>

#include <delay.h>

#include <stdio.h>

unsigned char data,i,pot,ldr,rat,pul,sat,a,b,c;

unsigned seg[10]=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;

unsigned char nama[5]=0X8e,0xf9,0x98,0xf9,0xf7 ;

unsigned char nim[10]=0xF9,0xB0,0xB0,0xF9,0XF9,0xB0,0xC0,0xC0,0xb0,0x80;

unsigned char tgl[10]=0xA4,0x92,0xBF,0xc0,0x92,0xBF,0xF9,0x90,0x90,0x92;

unsignedchar no hp[12] = 0xC0, 0x80, c0x92, 0xf8, 0xb0, 0xb0, 0x99, 0xb0, 0x92, 0x92,

0xc0, 0x82;

unsigned kls[8]=0xf9,0xc0,0xbf,0x87,0x87,0xbf,0xa4,0x88;

unsigned char gelap[5]=0x90,0x86,0xc7,0x88,0x8c;

unsigned char redup[5]=0xce,0x86,0xa1,0xc1,0x8c;

unsigned char terang[6]=0x87,0x86,0xce,0x88,0xc8,0x90;

Page 14: praktikum 5 USART

#ifndef RXB8

#define RXB8 1

#endif

#ifndef TXB8

#define TXB8 0

#endif

#ifndef UPE

#define UPE 2

#endif

#ifndef DOR

#define DOR 3

#endif

#ifndef FE

#define FE 4

#endif

#ifndef UDRE

#define UDRE 5

#endif

#ifndef RXC

#define RXC 7

#endif

#define FRAMING_ERROR (1<<FE)

#define PARITY_ERROR (1<<UPE)

#define DATA_OVERRUN (1<<DOR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

#define RX_BUFFER_SIZE 8

char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE <= 256

unsigned char rx_wr_index,rx_rd_index,rx_counter;

#else

unsigned int rx_wr_index,rx_rd_index,rx_counter;

#endif

Page 15: praktikum 5 USART

char status,data;

status=UCSRA;

data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

rx_buffer[rx_wr_index++]=data;

#if RX_BUFFER_SIZE == 256

// special case for receiver buffer size=256

if (++rx_counter == 0)

#else

if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;

if (++rx_counter == RX_BUFFER_SIZE)

rx_counter=0;

#endif

rx_buffer_overflow=1;

#ifndef _DEBUG_TERMINAL_IO_

#define _ALTERNATE_GETCHAR_

#pragma used+

char getchar(void)

char data;

while (rx_counter==0);

data=rx_buffer[rx_rd_index++];

#if RX_BUFFER_SIZE != 256

if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;

#endif

#asm("cli")

--rx_counter;

#asm("sei")

return data;

Page 16: praktikum 5 USART

#pragma used-

#endif

#include <stdio.h>

#define ADC_VREF_TYPE 0x60

unsigned char read_adc(unsigned char adc_input)

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

delay_us(10);

ADCSRA|=0x40;

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCH;

void main(void)

PORTA=0x00;

DDRA=0x00;

PORTB=0x00;

DDRB=0x00;

PORTC=0xFF;

DDRC=0xFF;

PORTD=0x00;

DDRD=0x00;

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

Page 17: praktikum 5 USART

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

MCUCR=0x00;

MCUCSR=0x00;

TIMSK=0x00;

UCSRA=0x00;

UCSRB=0x98;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x4D;

ACSR=0x80;

SFIOR=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

SPCR=0x00;

TWCR=0x00;

#asm("sei")

while (1)

data=getchar();

delay_ms(100);

Page 18: praktikum 5 USART

//memasukan data

pot= read_adc(0);

ldr = read_adc (1);

rat= pot/100;

pul=(pot%100)/10;

sat=(pot%10);

//membaca ADC POT dan LDR

if(data=='A')puts("Fiqi");

for (i=0;i<4;i++)

PORTC=nama[i];

delay_ms (500);

PORTC=0xff;

delay_ms (500);

else if(data=='B')puts("Jombang, 25-05-1995");

for(i=0;i<10;i++)

PORTC=tgl[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

else if(data=='3')puts("1331130038");

for(i=0;i<10;i++)

PORTC=nim[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

else if(data=='4')puts("085733435506");

for(i=0;i<12;i++)

PORTC=nohp[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

Page 19: praktikum 5 USART

else if(data=='5')puts("10-tt-2a");

for(i=0;i<8;i++)

PORTC=kls[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

a=rat+0x30;

b=pul+0x30;

c=sat+0x30;

if(data=='C')putchar(a);putchar(b);putchar(c);puts("");

PORTC=seg[rat];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

PORTC=seg[pul];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

PORTC=seg[sat];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

if(data=='D')

if (ldr<75)puts("terang");

for (i=0;i<=5;i++)

PORTC=terang[i];

delay_ms (500);

PORTC=0xff;

delay_ms (500);

else if (ldr<150)puts("redup");

for (i=0;i<=4;i++)

PORTC=redup[i];

Page 20: praktikum 5 USART

delay_ms (500);

PORTC=0xff;

delay_ms (500);

else if (ldr<255)puts("gelap");

for (i=0;i<=4;i++)

PORTC=gelap[i];

delay_ms (500);

PORTC=0xff;

delay_ms (500);

3.3 Pembahasan

a) Program 1

#include <mega16.h>

#include <delay.h>

unsigned char i;

unsigned char nama[5] = 0xcf, 0xab, 0xa1, 0xce, 0x20;

Pada program diatas terdapat “#include<mega16.h>” yang merupakan file

header untuk komponen atmega 16.Dan file header “#include<delay.h>” digunakan

untuk waktu display pada seven segment. Program “unsigned char” merupakan tipe

data, “i” merupakan variable tipe data dari unsigned char. “unsigned nama[20]”

merupakan tipe data, nama adalah variabel dan 20 adalah banyaknya data array yang di

pesan. Setelah itu data array di konversi menjadi data heksa. Misalnya kita ingin

mendisplaykan angka 1 pada 7segment maka data hasil konversi adalah “0x09”.

Page 21: praktikum 5 USART

Beri logika “nol” pada huruf led yang ingin di nyalakan, dan lainnya di beri

logika “satu” agar mati. Beri “0x” untuk awalan data hasil konversi. Berikut

adalah data hasil konversi.

1.1 Tabel hasil konversi

Output 7 segment

Kaki 7 Segment Data

Hexsa h g f e d c b a

I 1 1 0 0 1 1 1 1 0xcf

N 1 0 1 0 1 0 1 1 0xab

D 1 0 1 0 0 0 0 1 0xa1

R 1 1 0 0 1 1 1 0 0xce

a. 0 0 1 0 0 0 0 0 0x20

b) Program 2

data=getchar();

delay_ms(100);

pot= read_adc(0);

ldr = read_adc (1);

rat= pot/100;

pul=(pot%100)/10;

sat=(pot%10);

Fungsi “getchar();” adalah untuk memasukan karekter dari komputer ke

ATmega16 sehingga variabel “data” bernilai data input dari komputer. Scrip

“pot=read_adc(0);” berfungsi untuk membaca ADC dan (0) digunakan untuk

memilih chanel dikaki ATmega 16 pada port A. Scrip “RATUSAN=pot/100;

PULUHAN=(pot%100)/10; SATUAN=pot%10;” adalah rumus untuk mencari nilai

ratusan, puluhan dan satuan (hasil konversi ke ADC).

Berikut scrip untuk menampilka nama, tanggal lahir, NIM, nomor Hp dan kelas

sekaligus mengirim data ke PC melalui scrip “puts (“..”)” :

if(data=='1')puts("Indra.");

for (i=0;i<5;i++)

PORTC=nama[i];

delay_ms (500);

PORTC=0xff;

delay_ms (500);

Page 22: praktikum 5 USART

else if(data=='2')puts("20-02-1995.");

for(i=0;i<10;i++)

PORTC=tgl[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

else if(data=='3')puts("1331130027.");

for(i=0;i<10;i++)

PORTC=nim[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

else if(data=='4')puts("087859521890.");

for(i=0;i<12;i++)

PORTC=nohp[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

else if(data=='5')puts("14-tt-2b.");

for(i=0;i<8;i++)

PORTC=kls[i];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

Dan Scrip berikut adalah scrip untuk menampilkan hasil ADC dari potensio dan

sensor cahaya (LDR) :

a=rat+0x30;

Page 23: praktikum 5 USART

b=pul+0x30;

c=sat+0x30;

if(data=='6')putchar(a);putchar(b);putchar(c);puts("");

PORTC=seg[rat];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

PORTC=seg[pul];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

PORTC=seg[sat];

delay_ms(500);

PORTC=0xff;

delay_ms(500);

if(data=='7')

if (ldr<125)puts("terang");

for (i=0;i<=5;i++)

PORTC=terang[i];

delay_ms (500);

PORTC=0xff;

delay_ms (500);

else if (ldr<200)puts("redup");

for (i=0;i<=4;i++)

PORTC=redup[i];

delay_ms (500);

PORTC=0xff;

delay_ms (500);

else if (ldr<255)puts("gelap");

for (i=0;i<=4;i++)

PORTC=gelap[i];

delay_ms (500);

Page 24: praktikum 5 USART

PORTC=0xff;

delay_ms (500);

Penjelasan untuk script ADC :

Agar PC mampu menampilkan nilai ADC maka ditambah scrip

“a=rat+0x30;b=pul+0x30;c=sat+0x30;”. Scrip berikut bertujuan untuk menampilkan

hasil ADC pada PC “putchar(a);putchar(b);putchar(c). Scrip “for(i=0;i<=4;i++)”

adalah perulangan dimulai dari 0 sampai kurang dari 5. “PORTC=nama[i];“ untuk

input program dari atmega16 port c agar outputnya ditampilkan di 7segment sesuai

program. Scrip “delay_ms(500);“ digunakan untuk waktu tunda. “PORTC=0xff;”

agar lampu pada 7segment mati semua.

Page 25: praktikum 5 USART

BAB IV

PENUTUP

4.1 Kesimpulan

Pada praktikum Komunikasi Serial pada ATmega16 Menggunakan Metode USART

dapat diambil kesimpulan :

1) Ketelitian pada program atmega16 harus baik.

2) Kerapian penyolderan harus lebih ditingkatkan.

3) Atmega16 akan berfungsi jika diberi program terlebih dahulu.

4) Atmega16 mempunyai 4 port, setiap port terdiri dari 8 pin.

5) 4 port tersebut dapat difungsikan sebagai input atau output.

6) 7segmen Common Anoda agar menyala diberi input 0.

7) Potensiometer dapat diubah nilainya, dan nilai tersebut dapat mempengaruhi nilai

ADC dari atmega16.

8) Nilai minimum potensiometer (0Ω) maka nilai ADCnya adalah 000. Nilai

maksimal potensiometer (10k) maka nilai ADCnya adalah 255.

9) Kepekaan LDR dapat disetting dengan menggunakan resistor.

10) Rx/Tx terletak pada port ke 4 dikanal 0 dan 1.

11) ATmega16 bisa mengirim data ke komputer dan komputer bisa mengirim ke

ATmega16

Page 26: praktikum 5 USART

LAMPIRAN

Hasil Simulasi menggunakan proteus

Hasil Simulasi menggunakan software Hercules

Keterangan warna pada gambar

diatas :

Hitam adalah kiriman

ATmega16 dari perintah

“puts()”.

Ungu adalah inputan dari

PC yang kita ketikan.

Hijau adalah tanda untuk

koneksi sudah dibuka.

Page 27: praktikum 5 USART

Gambar hasil praktikum pada modul MCU