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. 1.1.3 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. 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 don’t 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 karbon harganya cukup adalah murah potensiometer akan tetapi yang terbuat kepressian dari bahan potensiometer ini sangat rendah biasanya harga resistansi akan sangat mudah berubah akibat pergeseran kontak. 2. Potensiometer menggunakan gulungan kawat gulungan (wire kawat penampangnya.Ketelitian dari wound) nikelin potensiometer adalah yang potensiometer sangat kecil ini tergantung jenis yang ukuran 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 berubahubah 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.