Anda di halaman 1dari 16

BAB I

TEORI DASAR

1.1 ATmega 16
1.1.1 Definisi
ATmega16 adalah mikrokontroler kinerja tinggi dengan 8-bit keluaran dan
konsumsi daya yang rendah. Atmega16 dapat bekerja pada frekuensi maksimum
16MHz. ATmega16 memiliki 16 KB diprogram memori flash, RAM statis 1 KB dan
EEPROM 512 Bytes. ATmega16 adalah mikrokontroler 40 pin. Ada 32 I / O (input /
output) baris yang dibagi menjadi empat port 8-bit ditunjuk sebagai PORTA,
PORTB, PORTC dan PORTD.




Ada banyak fungsi pada masing-masing port pada ATmega antara lain:
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2. GND merupakan pin Ground.
3. Port A (PA.0...PA.7) merupakan pin input/ output dua arah dan pin masukan
ADC.
4. Port B (PB.0...PB.7) merupakan pin input/ output dua arah dan pin fungsi
khusus
5. PortC (PC.0...PC.7) merupakan pin input/ output dua arah dan pin fungsi khusus
6. Port D(PD.0...PD.7) merupakan pin input/ output dua arah dan pin fungsi
khusus

RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.
7. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.
8. AVCC merupakan pin masukan tegangan untuk ADC.
9. AREF merupakan pin masukan tegangan referensi ADC.

1.1.3 ADC
ADC digunakan untuk mengubah nilai amplitudo ( Volt ) ke besaran biner
yang memiliki 8 bit maupun 10 bit. Besaran tegangan input (Vref) berguna untuk
menentukan Step Size (SS)

Data Hasil Konversi (DHK) ditentukan dari Vref dan SS. Dimana nilai dari Vin =
Vref


Fungsi lain dari ADC antara lain :
1. Dikonfigurasi sebagai single ended input maupun differential input.
2. Memiliki konfigurasi pewaktuan, tegangan referensi, mode operasi dan
kemampuan filter derau (noise) yang amat fleksibel sehingga dapat dengan
mudah disesuaikan dengan kebutuhan ADC itu sendiri.
Proses inisialisasi ADC meliputi proses penentuan clock, tegangan referensi,
formal data keluaran, dan modus pembacaan. Memiliki 2 macam yakni :
a. ADC Multiplexer ADMUX
b. ADC Control and Status Register A ADCSRA

1.1.4 USART
USART adalah protokol komunikasi serial antara PC dengan komponen
elektronika lainnya, salah satunya adalah mikrokontroler. USART juga digunakan
sebagai alat komunikasi antara satu mikrokontroler dengan mikrokontroler lainnya
maupun dengan port expander.
USART ( Universal Syncronous Asyncronous Receiver Transmiter )
menggunakan komunikasi data SERIAL. Salah satu mode transmisi dalam
komunikasi serial adalah mode asinkron. Transmisi mode serial ini digunakan
apabila pengiriman data dilakukan satu karakter tiap pengiriman. Antara satu
karakter dengan yang lainnya tidak ada waktu antara yang tetap.
USART memiliki 4 register, yakni :
1. USART I/O Data Register (UDR)
UDR merupakan register 8 bit yang terdiri dari 2 buah dengan alamat yang
sama, yang digunakan sebagai :
1. Tempat untuk menyimpan data yang akan dikirimkan (TXB)
2. Tempat data diterima (RXB)
Memiliki 2 macam, yakni :
1. PISO ( TxD ) Paralel Input Serial Output
2. SIPO ( RxD ) Serial Input Paralel Output
2. USART Control and Status Register A (UCSRA)

1. RXC (USART Receive Complete) otomatis akan bernilai 1, jika ada data
baru di bufer penerima. RXC otomatis akan bernilai 0, jika data sudah
dibaca atau bufer penerima kosong.
2. TXC USART (Transmit Complete)otomatis akan bernilai 1, jika data di
buffer selesai dikirim.
3. UDRE (USART Data Register Empty) otomatis akan bernilai 1 , jika
register UDR kosong . receiver siap menerima data. UDRE=0, UDR ada
isinya.
4. FE (Frame Error) otomatis akan bernilai 1, jika ada frame eror.
5. DOR (Data OverRun) otomatis akan bernilai 1, jika data datang ketika bufer
penuh(terjadi antrian).
6. PE (Parity Error) otomatis akan bernilai 1, jika terjadi parity eror.
7. U2X (Double the USART Transmission Speed)kita set U2X=0, kecepatan
normal. U2X=1 kecepatan 2xbaudrate.
8. MPCM ( Multi-processor Communication Mode) kita set MCM=1 byte
pertama yg diterima harus 9 bit , jika tdk data byte akan diabaikan.bit ini
terjadi hanya untuk penerimaan saja pd komunikasi banyak microcontroller.

3. USART Control and Status Register B (UCSRB)

1. RXCIE (RX Complete Interrupt Enable)kita set RXCIE=1 , interupsi
receive complete aktif.
2. TXCIE (TX Complete Interrupt Enable)kita set TXCIE=1, interupsi
transmit complete aktif.
3. UDRIE (USART Data Register Empty Interrupt Enable) kita set UDRIE=1,
interupsi UDRE aktip.
4. RXEN (Receiver Enable) kita set RXEN=1, USART receiver aktif. micon
bisa mnerima data.
5. TXEN (Transmitter Enable) kita set TXEN=1, Usart Transmiter aktif.
micon bisa mengirim data.
6. UCSZ2 (Character Size) kita set UCSZ2:UCSZ1:UCSZ0 = 011 , panjang
data 8 BIT. (bit UCSZ1 dan UCSZ0 ada di register UCSRC)

7. RXB8 (Receive Data Bit 8) RXB8 menjadi bit ke-9 jika panjang data yg
diterima 9 bit .
8. TXB8 (Transmit Data Bit 8) TXB8 menjadi bit ke-9 jika panjang data yg
dikirim 9 bit.

4. USART Control and Status Register C (UCSRC)

1. URSEL (Register Select) memilih UCSRC atau UBRRH, kita set URSEL=1 ,
UCSRC aktif ,UBRRH tdk aktif, dan jika kita set URSEL=0 , UBRRH aktif ,
UCRSC tdk aktif.
2. UMSEL (USART Mode Select) kita set UMSEL=1 , mode synceonous.
UMSEL=0 mode asyncronous
3. UPM1 dan UMP0 (Parity Mode):

4. USBS (Stop Bit Select) kita set USBS=0, stop bit =1 bit , USBS=1 panjang
stop bit = 2 bit.
5. UCSZ1 dan 0 (Character Size) kita set UCSZ2:UCSZ1:UCSZ0 = 011 ,
panjang data 8 BIT. (bit UCSZ2 ada di register UCSRB)
6. UCPOL (Clock Polarity ) bit ini digunakan untuk mode syncoronous saja.
7. kita set UCPOL=0 trnasmisi clock naik, UCPOL=1 transmisi clock turun.
(khusus yg ini dont care krn kita menggunakan mode asyncronous)

UDR merupakan register 8 bit yang terdiri dari 2 buah dengan alamat yang sama,
yang digunakan sebagai :
1. Tempat untuk menyimpan data yang akan dikirimkan (TXB)
2. Tempat data diterima (RXB)
Memiliki 2 macam, yakni :
1. PISO ( TxD ) Paralel Input Serial Output
2. SIPO ( RxD ) Serial Input Paralel Output

1.2 Seven Segment
Seven segment merupakan sebuah tampilan yang terdiri dari tujuh elemen LED yang
disusun untuk menampilkan angka desimal 0 sampai 9. Dan untuk setiap segment diberi
kode dengan huruf a, b, c, d, e, f, g dan d.p. Ada dua jenis seven segment yaitu common
anoda (CA) dan common catoda (CC).

Pada common anoda (CA), karena yang dijadikan satu adalah catoda maka CA
dihubungkan dengan Vcc, sehingga untuk menyelakan segment maka pin dari segment
tersebut berlogika 0 atau 0 Volt. Pada common catoda (CC), karena yang dijadikan satu
adalah Ground maka untuk menyalakan segment pin dari segment tersebut diberi logika 1
atau 5 Volt.
Pada Atmega 16 ini, sevensegment yang digunakan adalah sevensegmnet common
anoda (CA) jadi CA disetting 5 V (dihubungkan dengan Vcc) sedangkan ujungnya 0 V.
1.3 Potensiometer
Potensiometer adalah resistor yang nilai hambatannya dapat diubah-ubah dengan
memutar poros yang telah tersedia. Potensiometer pada dasarnya sama dengan trimpot
secara fungsional .

Jenis potensiometer :
1. Potensiometer karbon adalah potensiometer yang terbuat dari bahan
karbon harganya cukup murah akan tetapi kepressian potensiometer ini
sangat rendah biasanya harga resistansi akan sangat mudah berubah
akibat pergeseran kontak.
2. Potensiometer gulungan kawat (wire wound) adalah potensiometer yang
menggunakan gulungan kawat nikelin yang sangat kecil ukuran
penampangnya.Ketelitian dari potensiometer jenis ini tergantung dari
ukuran kawat yang digunakanserta kerapihan penggulungannya.
3. Potensiometer metal film adalah potensiometer yang menggunakan bahan
metal yang dilapiskan kebahan isolator

1.4 LDR (Light Dependent Resistor)
LDR (Light Dependent Resistor) adalah komponen elektronika yang pada dasarnya
mempunyai sifat yang sama dengan resistor, hanya saja nilai resistansi dari LDR berubah-
ubah sesuai dengan tingkat intensitas cahaya yang diterimanya. LDR merupakan sensor
yang bekerja apabila terkena cahaya. LDR memiliki hambatan yang sangat tinggi jika tidak
terkena cahaya dan memiliki hambatan yang sangat kecil jika terkena cahaya.











Gambar Komponen LDR

BAB II
ISI
2.1 Flow-chart




2.2 Simulasi


2.3 Listing Program
#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>

unsigned char x, data1, data2, tegangan[5];
unsigned char nama[5] = {0xc8,0x08,0xc8,0xa1,0x08};
unsigned char nim[13] = {1, 2, 4, 1, 10, 1, 6, 0, 10, 0, 10, 0, 1};
unsigned char segment[11] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf};
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;

if(data == 'A' || data == 'a'){
for(x=0;x<=4;x++){
PORTC = nama[x];
delay_ms(500);
}
}
if(data == 'B' || data == 'b'){
for(x=0;x<=12;x++){
PORTC = segment[nim[x]];
delay_ms(500);
}
}
if(data == 'C' || data == 'c'){
itoa(data2, tegangan);
puts(" -> ");
puts(tegangan);
}
if(data == 'D' || data == 'd'){
if(data1 < 75){
putsf(" -> terang");
}
if(data1 >= 75 && data1 < 150){
putsf(" -> redup");
}
if(data1 >= 150){
putsf(" -> gelap");
}
}

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;

// Global enable interrupts
#asm("sei")

while (1)
{
data1 = read_adc(0);
data2 = read_adc(1);
PORTC = 0xfe;
delay_ms(100);
PORTC = 0x7d;
delay_ms(100);
PORTC = 0xfb;
delay_ms(100);
PORTC = 0x77;
delay_ms(100);
PORTC = 0xef;
delay_ms(100);
PORTC = 0x5f;
delay_ms(100);
};
}








BAB III
HASIL PERCOBAAN

3.4 Gambar Hasil Praktikum

3.1.1 Menampilkan Nama pada Seven Segment










Dengan mengetikkan kode berupa huruf A pada laptop, maka Seven Segment
akan menampilkan nama (NANDA) pada port C.

3.1.2 Menampilkan NIM pada Seven Segment

Dengan mengetikkan kode berupa huruf B pada laptop, maka Seven Segment
akan menampilkan NIM (1241160001) pada port C.

3.1.3 Menampilkan Data Potensio pada Code Vision AVR

Ketika menginputkan huruf C pada kolom terminal di AVR, maka yang
muncul adalah menunjukan besar dari nilai potensio. Apabila kita memutar ke
nilai paling minimum, maka yang tertera adalah 0. Ketika kita memutar
potensio sampai di tengah-tengah, maka nilai yang muncul adalah nilai diantara 0-
255 yaitu 104. Dan apabila kita memutar potensio pada posisi paling
maksimum, maka yang tertera adalah nilai maksimum dari potensio yaitu 255.





3.4.4 Menampilkan Kondisi Pencahayaan LDR (Terang, Redup & Gelap) pada
Code Vision AVR
1.Ketika menginputkan huruf D pada kolom terminal di AVR, maka akan
muncul REDUP pada kolom teminal AVR. Hal ini disebabkan karena LDR
dibiarkan begitu saja sehingga cahaya yang diterima hanya sedikit.

2.Ketika menginputkan huruf D pada kolom terminal di AVR, maka akan
muncul GELAP pada kolom teminal AVR. Hal ini disebabkan karena LDR
ditutup dengan jari sehingga LDR tidak menerima cahaya apapun.

3.Ketika menginputkan huruf D pada kolom terminal di AVR, maka akan
muncul TERANG pada kolom teminal AVR, apabila LDR diberi sorot cahaya
yang di fokuskan pada di atas LDR.








2. ANALISA
Setelah melakukan percobaan didapatkan analisa bahwa, ATMEGA 16 memiliki
beberapa PORT yaitu PORT A,PORT B,PORT C,PORT D ,USART dan ADC. Pada
proyek ini PORT C digunakan untuk menghubungkan antara ATMEGA 16
dengan7SEGMENT (Fungsi seven Segment sendiri digunakan untuk menampilkan hasil
keluaran apabila diketik A (nama) atau B (nim) pada terminal codevision ) sedangkan
pada percobaan LDR berada pada PORT A0 dan potensio dihubungkan pada PORT A1
sehingga keluaran akan muncul pada terminal codevision.
Pada Praktikum ini juga banyak kendala seperti ATMEGA 16 tidak dapat di read
dan write,kendala lain nya adalah pada percobaan Usart apabila bila ketik A dan B seven
segment dapat menghasilkan keluaran (A (nama) dan B(nim)) sedangkan apabila Ketik C
dan D keluaran tidak muncul pada terminal codevision semua kendala yang terjadi
diakibatkan oleh hasil solderan yang tidak bagus sehingga komponen tidak berjalan
sesuai fungsinya.
Apabila dibandingkan secara simulasi maupun percobaan keduanya mempunyai
sedikit perbedaan diantaranya adalah komponen yang digunakan misalnya, IC MAX232.
Jika pada simulasi tanpa adanya MAX232 simulasi tersebut dapat berjalan namun pada
percobaan IC MAX232 digunakan fungsinya untuk menjalankan fitur Serial Komunikasi
berjalan sebagaimana mestinya. Perbedaan lainnya yaitu terletak pada sensitivitas pada
LDR.

3.6KESIMPULAN
1. ATMega16 terdiri atas unit-unit fungsionalnya Arithmetic and Logical Unit (ALU),
himpunan register kerja, register dan dekoder instruksi, dan pewaktu.
2. Sensitifitas tiap komponen LDR berbeda beda.
3. Seven Segment adalah suatu segmen- segmen yang digunakan menampilkan suatu
bilangan dari biner maupun hexa.
4. Potensiometer merupakan resistor variable yang bisa kita rubah nilainya.
5. MAX232 digunakan untuk komunikasi serial to USB.