laporan jobsheet 02(m.lutfi)

32
LAPORAN JOBSHEET 02 MATA KULIAH MIKROKONTROLER INTERFACING Input dan output Lanjut( I/O Lanjut). NAMA : MoH Lutfi Andrian NIM : 4.35.11.0.14 PROGRAM STUDI D4 TEKNIK TELEKOMUNIKASI POLITEKNIK NEGERI SEMARANG 2013

Upload: andrew

Post on 21-Dec-2015

29 views

Category:

Documents


1 download

DESCRIPTION

Mikrokontroller and nikroporosessing

TRANSCRIPT

LAPORAN JOBSHEET 02

MATA KULIAH MIKROKONTROLER INTERFACING

Input dan output Lanjut( I/O Lanjut).

NAMA : MoH Lutfi Andrian

NIM : 4.35.11.0.14

PROGRAM STUDI D4 TEKNIK TELEKOMUNIKASI

POLITEKNIK NEGERI SEMARANG

2013

I. Dasar Teori

Mikrokontroler seri AVR pertama kali diperkenalkan ke pasaran sekitar tahun 1997

oleh perusahaan Atmel, sebuah perusahaan yang sangat terkenal dengan produk

mikrokontroler seri AT89S51/52-nya yang hingga sekarang masih banyak digunakan.

Tidak seperti mikrokontroler seri AT89S51/52 yang masih mempertahankan arsitektur dan

set instruksi dasar mikrokontroler 8031 dari perusahaan INTEL, mikrokontroler AVR ini

diklaim memiliki arsitektur dan set instruksi yang benar-benar baru dan berbeda dengan

mikrokontroler sebelumnya. Meskipun demikian, bagi para programmer yang telah

terbiasa dengan mikrokontroler seri AT89S51/52, dan berencana untuk beralih ke

mikrokontroler AVR, secara teknis tidak akan banyak menemui kesulitan yang berarti. Hal

ini dikarenakan selain konsep dan istilah-istilah dasarnya yang hampir sama, pemrograman

level assembler-nya pun relatif tidak jauh berbeda.

Berdasarkan arsitekturnya, AVR merupakan mikrokontroler dengan konsep RISC

(Reduce Instruction Set Computer) yang mempunyai lebar bus data 8 bit. Berbeda dengan

sistem AT89S51/52 yang memiliki frekuensi kerja seperduabelas kali frekuensi osilator,

frekuensi kerja mikrokontroler AVR sama dengan frekuensi osilator, sehingga kecepatan

kerja AVR untuk frekuensi osilator yang sama akan dua belas kali lebih cepat

dibandingkan dengan mikrokontroler keluarga AT89S51/52.

Dengan instruksi yang sangat variatif _mirip dengan sistem CISC (Complex Instruction

Set Computer)_ serta jumlah register serbaguna (General Purpose Register) sebanyak 32

buah yang terhubung secara langsung ke ALU (Arithmetic Logic Unit), kecepatan operasi

mikrokontroler AVR ini dapat mencapai 16 MIPS (enam belas juta instruksi per detik),

sebuah kecepatan yang sangat tinggi untuk ukuran mikrokontroler 8 bit yang ada di

pasaran sampai saat ini.

Untuk memenuhi kebutuhan dan aplikasi industri yang sangat beragam, mikrokontroler

keluarga AVR muncul di pasaran dengan tiga seri utama: tinyAVR, ClassicAVR (AVR),

dan megaAVR. Berikut ini beberapa seri yang dapat anda jumpai di pasaran:

- ATtiny13 - AT90S2313 - ATmega103

- ATtiny22 - AT90S2323 - ATmega128

- ATtiny22L - AT90S2333 - ATmega16

- ATtiny2313 - AT90S4414 - ATmega162

- ATtiny2313V - AT90S4433 - ATmega168

- ATtiny26 - AT90S8515 - ATmega8535

Pada dasarnya keseluruhan seri AVR ini memiliki organisasi memori dan set instruksi

yang sama, sehingga jika kita telah mahir menggunakan salah satu seri AVR, akan relatif

mudah untuk beralih ke seri yang lain. Perbedaan utama antara tinyAVR, AVR dan

megaAVR terletak pada tambahan-tambahan fitur yang ditawarkan (seperti adanya

tambahan ADC internal pada seri AVR tertentu, jumlah Port I/O serta memori yang

berbeda, dan sebagainya). Di antara tiga seri tersebut, secara umum megaAVR memiliki

fitur yang paling lengkap, disusul oleh AVR, dan terakhir tinyAVR.

Untuk memberikan gambaran yang lebih jelas, tabel 1.1 berikut memperlihatkan

perbedaan ketiga seri AVR ditinjau dari kapasitas memori yang dimilikinya.

Tabel 1.1. Perbedaan seri AVR berdasarkan kapasitas

memori Mikrokontroler AVR

Memori (byte)

Jenis Pak

et IC

Flas

h

EEP

ROM

SR

AM

TinyAVR 8–

32 pin

1 –

2K

64 –

128

0 –

128

AVR(classic AVR) 20–

44 pin

1 –

8K

128

– 512

0 –

1 K

MegaAVR 32– 8 – 512 512

64 pin 128 K – 4 K – 4 K

Seperti terlihat pada tabel di atas, semua jenis AVR ini telah dilengkapi oleh memori

flash sebagai memori program. Kapasitas memori flash yang dimiliki bervariasi dari 1K

hingga 128 KB tergantung pada serinya. Secara teknis memori jenis ini dapat diprogram

melalui saluran antarmuka yang dikenal dengan nama Serial Peripheral Interface (SPI)

yang terdapat pada setiap seri AVR tersebut. Dengan menggunakan perangkat lunak

programmer (downloader) yang tepat, pengisian memori flash dapat dilakukan bahkan

ketika chip AVR telah terpasang pada sistem akhir (end system). Dengan demikian

pemrograman menjadi sangat fleksibel dan tidak merepotkan pengguna (Secara praktis

metode ini dikenal dengan istilah ISP - In System Programming , sedangkan perangkat

lunaknya dinamakan In System Programmer).

Untuk penyimpanan data, mikrokontroler AVR menyediakan dua jenis memori yang

berbeda: EEPROM (Electrically Erasable Programmable Read Only Memory) dan SRAM

(Static Random Access memory). Secara umum EEPROM digunakan untuk menyimpan

data-data program yang bersifat permanen, sedangkan SRAM digunakan untuk

menyimpan data variabel yang dimungkinkan berubah setiap saat. Kapasitas penyimpanan

data kedua memori ini bervariasi tergantung pada jenis AVR-nya (lihat tabel 1.1). Untuk

seri AVR yang tidak memiliki SRAM, penyimpanan data variabel dapat dilakukan pada

register serbaguna yang terdapat pada CPU mikrokontroler tersebut.

Selain seri-seri umum di atas, perusahaan Atmel juga memproduksi beberapa jenis

mikrokontroler AVR untuk tujuan yang lebih khusus dan terbatas, seperti seri AT86RF401

yang khusus digunakan untuk aplikasi wireless remote control dengan menggunakan

gelombang radio (RF), serta seri AT90SC yang khusus digunakan untuk peralatan sistem-

sistem keamanan kartu SIM GSM, pembayaran via internet, dan lain sebagainya.

Mikrokontroler ATMega 128 adalah mikrokontroler yang telah dilengkapi EEPROM

sebesar 4Kbyte didalam chipnya. EEPROM ini terpisah dari flash memory AVR, dan dapat

ditulis, baca per byte. Untuk dapat mengakses EEPROM ini perlu mengatur register-

register dan fuse bit. Untuk mencegah kesalahan dalam penulisan dan pembacaan

EEPROM diusahakan power supply yang digunakan cukup stabil.

Saat pembacaan EEPROM mikrokontroler berhenti selama 4 cycle clock sebelum

mengerjakan perintah berikutnya dan untuk menulis EEPROM mikrokontroler berhenti

selama 2 cycle clock sebelum mengerjakan perintah berikutnya.

Register-register yang perlu diatur adalah :

EEPROM address register

EEPROM data register

Sistem yang memiliki kinerja tinggi ini sangat ideal untuk beragam aplikasi, termasuk

embedded controller, robot, sistem remote control dan yang lainnya.

Board ini memaksimalkan kemampuan yang dimiliki ATmega128, dengan flash

memory yang besar, kecepatan eksekusi yang tinggi, jumlah pin I/O dalam jumlah besar,

analog to digital converter, dan yang lainnya.

Program dapat di-download ke dalam chip melalui koneksi ISP yang sudah disediakan

(ISP Programmer opsional).

Modul menyediakan 8 kanal A/D Converter 10-bit, 2 buah PWM 8-bit yang dapat

digunakan untuk mengendalikan motor dan 2 buah UART untuk interfacing dengan

komputer atau sistem monitor lainnya. Dengan 53 pin I/O, sangat memadai untuk

kebutuhan interfacing dalam jumlah yang besar. Sejumlah modus power saving tersedia

untuk mendukung pengoperasian dengan batere. Juga Real-Time Counter dan dua 16-bit

Timer yang tersedia di dalam mikrokontroler.

Sejumlah besar IDE – Integrated Development Environment dan compiler tersedia

untuk pemrograman, seperti BASIC, C dan Assembly Language.

Berikut adalah fitur yang diusung MikroAVR128:

Termasuk mikrokontroler Atmel ATmega128 dengan 128kb Internal Flash Program

Memory

Kristal 16MHz yang akan memberikan throughput kecepatan tinggi.

Koneksi ISP untuk pemrograman

53 pin I/O

8 kanal ADC 10-bit

2 buah USART

Dua 16-Bit Timers dengan dua 8-bit kanal PWM

On-Chip Real-Time Counter

Tersedia soket yang memudahkan untuk mencabut pasang chip

PCB ATmega128 breakout

Bagi mereka yang fanatik dengan Arduino dan terbentur dengan keterbatasan flash

memory dan pin I/O yang tersedia, maka MikroAVR 128 dapat dijadikan pilihan.

Spesifikasi MikroAVR 128 sesuai dengan standard yang disyaratkan Wiring, yang adalah

saudara tua dari Arduino.

Minimum sistem ATmega128:

skema rangkaian minimum ATmega128.sch

Minimum sistem di atas dirancang untuk pemrograman ISP (In-System Programming).

Selain untuk ATmega128, rangkaian ini bisa juga digunakan untuk ATmega64 karena

konfigurasi pin-nya sama. Khusus untuk MISO dan MOSI ISP tidak menggunakan pin

MISO/MOSI yg sudah disediakan pada chip. Sebagai gantinya, kita gunakan pin PDI

sebagai MOSI dan PDO sebagai MISO. Dalam datasheet, skema pemrograman ISP persis

seperti ini. Kabel ISP:

II. Langkah Percobaan

2.1 LED 7-SEGMEN

Gambar 2.1 Skema modul praktek 7-segmen

2.1.1 Menyalakan LED 7-Segmen Digit Tunggal

A. Langkah kerja

1. Buat desain pada Gambar 2.1 menggunakan Proteus.

Langkah kerja :

1.File => New => Source

Tools => CodeWizardAVR

2.Pilih tab Chip => pilih ATMega128 ,Clock => 11.059200

3.Port => Port A => Klik semua bit menjadi “out”

4) Clock => 11.059200

5) Port => Port A => Klik semua bit menjadi “out”

6) Masih di CodeWizardAVR => file => Generate, save, and exit

7) Save C source file => Job02_ percobaan01_4.35.11.0.14.c

8) Save Compiler Project file => Job02_ percobaan01_4.35.11.0.14.prj

9) Save untitle.cwp As => Job02_ percobaan01_4.35.11.0.14.cwp

10) Edit file Job02_ percobaan01_4.35.11.0.14.c sbb:

// Place your code here

#include <mega128.h> #include <delay.h> #include <stdio.h> #define data PORTE #define kendali PORTF void main(void){ DDRF=0xFF; DDRE=0xFF; while(1){ kendali=0x80; data=0xC0; delay_ms(100); kendali=0x80;

data=0xF9; delay_ms(100); }

}11) Simpan

12) Project => compile (F9)

13) Project => make (Shift+F9)

14) Cek di folder anda, pastikan muncul file Job02_percobaan1_4.35.11.0.14.hex atau

.cof

1.2 Simulasi menggunakan Proteus

B. Tugas 2.1:

Buatlah program yang menampilkan angka 0 .s.d. 7 secara berurutan pada digit 1

hingga digit 8.

1.buat file dengan nama Job02_tugas01_43511014.c

2. masukkan kode dalam progam seperti di bawah ini:

#include <mega128.h> #include <delay.h> #include <stdio.h> #define data PORTE #define kendali PORTF void main(void){ DDRF=0xFF; DDRE=0xFF; while(1){ kendali=0x80; data=0xC0; delay_ms(100); kendali=0x40; data=0xF9; delay_ms(100); kendali=0x20; data=0xA4; delay_ms(100); kendali=0x10; data=0xB0; delay_ms(100); kendali=0x08; data=0x99; delay_ms(100); kendali=0x04; data=0x92;

delay_ms(100); kendali=0x02; data=0x82; delay_ms(100) ; kendali=0x01; data=0xf8; delay_ms(100); } } 2.1.2 Menyalakan LED 7-Segmen Digit Jamak Statik

A. Langkah kerja

1. Buat desain pada Gambar 2.1 menggunakan Proteus.

2. sama seperti pada percobaan 01 namun nama file diganti dengan job

02_percobaan02_43511014.c

3.Buat program berikut

#include <mega128.h> #include <delay.h> #include <stdio.h> #define data PORTE #define kendali PORTF void main(void){ DDRF=0xFF; DDRE=0xFF; while(1){ kendali=0x80; data=0x82; delay_ms(100); kendali=0x40; data=0xF8; delay_ms(100); } }

3. Jalankan hasil compilasi Program di langkah 2 pada desain yang dibuat pada langkah

2.1. Lihat hasilnya.

4. Ubah delay menjadi: 10 ms, amati perubahan tampilan 7-segmen dibanding

sebelumnya.

5. Ulangi langkah 4 untuk delay 1 ms, 100 us, atau yang lebih kecil lagi, amati

perubahannya.

B. Tugas 2.2:

Buat program menampilkan angka 98765432 dalam display secara “bersamaan” .

1.buat file dengan nama Job02_tugas02_43511014.c

2. masukkan kode dalam progam seperti di bawah ini:

#include <mega128.h> #include <delay.h> #include <stdio.h> #define data PORTE #define kendali PORTF void main(void){ DDRF=0xFF; DDRE=0xFF; while(1){ kendali=0x80; data=0xA4; //2 delay_us(100); kendali=0x40; data=0xb0; //3 delay_us(100); kendali=0x20; data=0x99; //4 delay_us(100); kendali=0x10; data=0x92; //5 delay_us(100); kendali=0x08; data=0x82; //6 delay_us(100); kendali=0x04; data=0xf8; //7 delay_us(100); kendali=0x02; data=0x80; //8 delay_us(100); kendali=0x01; data=0x90; //9 delay_us(100);

}}

2.1.3 Menyalakan LED 7-Segmen Digit Jamak Dinamik

A. Langkah kerja

1. Buat desain pada Gambar 2.1 menggunakan Proteus.

2. sama seperti pada percobaan 01 namun nama file diganti dengan job

02_percobaan03_43511014.c

Buat program berikut

#include <mega128.h> #include <delay.h> #include <stdio.h> #define data PORTE #define kendali PORTF flash unsigned char segment (unsigned char c) {char tab[11]={0xC0,0xF9,0xA4,0xB0 ,0x99 ,0x92 ,0x82, 0xF8 ,0x80,0X90,0xBF}; //tabel data

untuk seven segmen return tab[c];} // Declare your global variables here void tampil_seg(unsigned char jam, unsigned char menit, unsigned char detik){ unsigned char h,j,k,l,m,n; h=jam/10; j=jam%10; k=menit/10; l=menit%10; m=detik/10; n=detik%10; kendali=0x80; data=segment(n); delay_us(100); kendali=0x40; data=segment(m); delay_us(100); kendali=0x20; data=segment(10); delay_us(100); kendali=0x10;

data=segment(l); delay_us(100); kendali=0x08; data=segment(k); delay_us(100); kendali=0x04; data=segment(10); delay_us(100); kendali=0x02; data=segment(j); delay_us(100); kendali=0x01; data=segment(h); delay_us(100); } void main(void){ unsigned char h,m,s; int i,ulang; DDRF=0xFF; DDRE=0xFF; while(1){ h=00; m=00; s=00; for(i=1;i<=10;i++) { for(ulang=1;ulang<=100;ulang++) { tampil_seg(h,m,s); } s=s++; } } }

3. Jalankan hasil compilasi Program di langkah 2 pada desain yang dibuat pada langkah

2.1. Lihat

hasilnya.

B. Tugas 2.3:

Buat program menampilkan STOP-WACTH.

1.buat file dengan nama Job02_tugas03_43511014.c

2. masukkan kode dalam progam seperti di bawah ini:

MOH LUTFI ANDRIAN JRK 2A 4.35.11.0.14 /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 3/11/2013 Author : NeVaDa Company : Comments: Chip type : ATmega128 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 1024 *****************************************************/ #include <mega128.h> #include <delay.h> #include <stdio.h> #define data PORTE #define kendali PORTF flash unsigned char segment (unsigned char c) {char tab[11]={0xC0,0xF9,0xA4,0xB0 ,0x99 ,0x92 ,0x82, 0xF8 ,0x80,0X90,0xBF}; //tabel data

untuk seven segmen return tab[c];} // Declare your global variables here void tampil_seg(unsigned char jam, unsigned char menit, unsigned char detik){ unsigned char h,j,k,l,m,n; h=jam/10; j=jam%10; k=menit/10; l=menit%10; m=detik/10; n=detik%10; kendali=0x80; data=segment(n); delay_us(100); kendali=0x40;

data=segment(m); delay_us(100); kendali=0x20; data=segment(10); delay_us(100); kendali=0x10; data=segment(l); delay_us(100); kendali=0x08; data=segment(k); delay_us(100); kendali=0x04; data=segment(10); delay_us(100); kendali=0x02; data=segment(j); delay_us(100); kendali=0x01; data=segment(h); delay_us(100); } void main(void){ unsigned char h,m,s; int i,j,k, ulang; DDRF=0xFF; DDRE=0xFF; while(1){ h=00; for(i=1;i<=9;i++){ m=00; for(j=1;j<=9;j++){ s=00; for(k=1;k<=9;k++){ for(ulang=1;ulang<=10;ulang++){ tampil_seg(h,m,s); } s=s++; } m=m++;} h=h++; }} }

2.2 Liquid Crystal Display 2 baris x 16 karakter (LCD 2x16)

2.2.1 Tampilan LCD Statik

A. Langkah kerja

1. Buat desain pada Gambar 2.2 menggunakan Proteus.

Gambar 2.2 Desain Proteus untuk Percobaan Menggunakan Modul LCD 2x16

2. Buat program berikut

//************** CONTOH 2.4 ************* #include <mega128.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x03 //PORTE #endasm #include <lcd.h> void main(void) { lcd_init(16); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Teknik"); lcd_gotoxy(0,1); lcd_putsf("Antarmuka"); while (1) { };

3. Jalankan hasil compilasi Program di langkah 2 pada desain yang dibuat pada langkah

1. Lihat hasilnya.

B. Tugas 2.4:

Buat program menampilkan nama anda di baris pertama, dan NIM anda di baris kedua

!

1.buat progam file dengan nama job2(LCD)_Tugas 1_43511014.c

2.2.2 Tampilan LCD Dinamik

A. Langkah kerja

1. Buat program berikut

//************** CONTOH 2.5 ************* #include <mega128.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x03 ;//PORTE //.equ __lcd_port=0x15 ;PORTC #endasm // Standard Input/Output functions #include <lcd.h> #include <delay.h> #include <string.h> char buffer_lcd[]="Job2.2:OutputLCD";//space required char lcd_number = 16; // Function prototype void sett_regs(void); void tampilan(void); // Main routine (super loop) void main(void){ sett_regs(); lcd_init(16); _lcd_ready(); lcd_clear(); for(;;){// Endless loop, serupa "while(1)" tampilan(); } } // Setting register

void sett_regs(void){ DDRC = 0x00;PORTC = 0x00; } // Display routine void tampilan(void){ unsigned int i,j; _lcd_ready(); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("TEKNIK ANTARMUKA"); for (i=lcd_number; i>=0; --i){ if (i > lcd_number)break; lcd_gotoxy(i,1); for (j=0; j<(lcd_number-i); j++){ lcd_putchar(buffer_lcd[j]); } delay_ms(30); //ubah untuk kecepatan pergeseran text }; }

2. Jalankan hasil compilasi Program di langkah 2 pada desain yang dibuat pada langkah

1. Lihat hasilnya.

B. Tugas 2.5:

Buat program menampilkan nama anda di baris pertama, dan NIM anda di baris

kedua, dengan baris atas bergerak ke kiri danbaris bawah bergerak ke kanan!

1.buat progam file dengan nama job2(LCD)_Tugas 2_43511014.c

2. Ketikkan kode dibawah ini /***************************************************** MOH.LUTFI.ANDRIAN JRK2A 4.35.11.0.14 This program was produced by the CodeWizardAVR V1.25.9 Standard Automatic Program Generator © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 3/25/2013

Author : F4CG Company : F4CG Comments: Chip type : ATmega128 Program type : Application Clock frequency : 11.059200 MHz Memory model : Small External SRAM size : 0 Data Stack size : 1024 *****************************************************/ #include <mega128.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x03 ;//PORTE //.equ __lcd_port=0x15 ;PORTC #endasm // Standard Input/Output functions #include <lcd.h> #include <delay.h> #include <string.h> char buffer_lcd[]=" MOH LUTFI ANDRIAN ";//space required char lcd_number = 16; char buffer_lcd1[]="4.35.11.0.14";//space required char lcd_number1 = 15; // Function prototype void sett_regs(void); void tampilan(void); // Main routine (super loop) void main(void){ sett_regs(); lcd_init(16); _lcd_ready(); lcd_clear(); for(;;){// Endless loop, serupa "while(1)" tampilan(); } } // Setting register void sett_regs(void){ DDRC = 0x00;PORTC = 0x00; } // Display routine void tampilan(void){ unsigned int i,j,k,l; _lcd_ready(); lcd_clear();

for (i=lcd_number; i>=0; --i){ if (i > lcd_number)break; lcd_gotoxy(i,0); for (j=0; j<(lcd_number-i); j++){ lcd_putchar(buffer_lcd[j]); } delay_ms(10); } for (k=0; k<=lcd_number1; ++k){ if (k > lcd_number1)break; lcd_gotoxy(k,1); for (l=0; l<(lcd_number1-k); l++){ lcd_putchar(buffer_lcd1[l-1]); } delay_ms(10); //ubah untuk kecepatan pergeseran text }; }

2.2.2 Tampilan LCD Dinamik

A. Langkah kerja

1. Buat program berikut

/***************************************************** MOH.LUTFI.ANDRIAN 4.35.11.0.14 JK2A This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 4/1/2013 Author : NeVaDa Company : Comments: Chip type : ATmega128 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 1024 *****************************************************/

#include <mega128.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x03 //PORTC #endasm #include <stdlib.h> #include <lcd.h> #include <stdio.h> unsigned char buffer1[16]; unsigned char buffer2[16]; float yy; // Declare your global variables here void main(void){ DDRC = 0x00; PORTC = 0xFF; lcd_init(16); lcd_clear(); while (1) { float xx; unsigned int x; x=PINC; xx=x; yy=xx/3; sprintf(buffer1,"Input asli: %d ",x); sprintf(buffer2,"Konversi: %.2f ",yy); lcd_gotoxy(0,0); lcd_puts(buffer1); lcd_gotoxy(0,1); lcd_puts(buffer2); }; };

2. Jalankan hasil compilasi Program di langkah 2 pada desain yang dibuat pada Gambar

2.2. Geser DIP-switch, Lihat dan bandingkan hasilnya.

B. Tugas 2.6:

Buat program simulasi Prototipe Sistem Pengukur Suhu :

a) Asumsi : Dip-switch sebagai simulator ADC (range data: 0-255)

b) Prinsip kerja : Range suhu : 0 – 100 C, dengan konversi sebagai berikut:

Input (desimal) Suhu (°C)

0 - 20 0

21-220 Input naik 1

desimal setara

dengan kenaikan

suhu 0.5 °C

221 - 255 100

1.buat progam file dengan nama job2(LCD)_Tugas 2.6_43511014.c

2. Ketikkan kode dibawah ini:

/***************************************************** MOH.LUTFI.ANDRIAN 4.35.11.0.14 JK2A This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 4/1/2013 Author : NeVaDa Company : Comments: Chip type : ATmega128 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 1024 *****************************************************/

#include <mega128.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x03 //PORTC #endasm #include <stdlib.h> #include <lcd.h> #include <stdio.h> unsigned char buffer1[16]; unsigned char buffer2[16]; float yy; // Declare your global variables here void main(void){ DDRC = 0x00; PORTC = 0xFF; lcd_init(16); lcd_clear(); while (1) { float xx; unsigned int x; x=PINC; xx=x; if(xx<=20) {yy=0; sprintf(buffer1,"Input asli: %d ",x); sprintf(buffer2,"Konversi: %.2f ",yy); lcd_gotoxy(0,0); lcd_puts(buffer1); lcd_gotoxy(0,1); lcd_puts(buffer2); } if (xx>20) { if (xx<=220) {yy=(xx-20)*0.5; sprintf(buffer1,"Input asli: %d ",x); sprintf(buffer2,"Konversi: %.2f ",yy); lcd_gotoxy(0,0); lcd_puts(buffer1); lcd_gotoxy(0,1); lcd_puts(buffer2); }} if (xx>220)

{yy=100; sprintf(buffer1,"Input asli: %d ",x); sprintf(buffer2,"Konversi: %.2f ",yy); lcd_gotoxy(0,0); lcd_puts(buffer1); lcd_gotoxy(0,1); lcd_puts(buffer2); } }; };

III. Hasil

Percobaan 1

Percobaan 02

Percobaan 03

Tugas 01

Tugas 03

Percobaan 4 LCD

Percobaan 5 LCD

Tugas 04

Tugas 05

Percobaan 2.6

Tugas 2.6

IV. Pembahasan

Pada praktikum Job II yakni tentang “ AVR MIKROKONTOLLER ATmega 128 ” input

Dan output Lanjutan menggunakan LED sevent segment Dan input output Lanjutan

menggunakan TampilanLCD, ini dapat kita analisa bahwa semua program dapat yang

dikerjakan berjalan dengan baik dan benar, Adapun pada program pertama yang

menampilkan angka 0 .s.d. 7 secara berurutan pada digit 1 hingga digit 8. Kemudian kedua

menampilkan LED Seven segment menampilkan angka 98765432 dalam display secara

“bersamaan” . Led 7segmen nyala semua sesuai urutan bit ,Led seven segment nyala secara

bergantian dari kiri ke kanan sesuaiurutan bit dengan delay yang berbeda dengan begitu

Led nyala semua seolah olah bersamaan ,jika dengan memasukkan delay yang sama yaitu

10 ms menyala dari D1 sampai D8 secara berurutan dan berulang-ulang. Dan percobaan

ketiga untuk menampilkan STOP-WACTH sampai keenam cara pengerjaannya Adalah

dengan prinsip yang sama yaitu dengan menggunakan Metode Input dan output Lanjutan

,Pada Tugas 2.6 Yang menampilkan program simulasi Prototipe Sistem Pengukur Suhu

(range data: 0-255),Range suhu : 0 – 100 C, dengan konversi sebagai berikut:

Input (desimal) Suhu (°C) Kondisi if else

0 - 20 0 if(xx<=20) {yy=0;

21-220 Input naik 1

desimal setara

dengan kenaikan

suhu 0.5 °C

if (xx>20) { if (xx<=220) {yy=(xx-20)*0.5;

221 - 255 100 if (xx>220) {yy=100;

Ketika di jalankan simulasi proteus menggunakan rangkaian 2.6 yang sudah

dibuat.Muncul input asli dan hasil konversi suhu, sebelum masuk pada mikrokontroler 128 pada

input asli Port c menggunakan switch sesuai urutan bit untuk nilai 1 pada saat on dan 0 pada saat

off,dan akan dikonversikan melalui mikrokontroler atmmega 128 Dengan Output lewat Port E

(konversi) dengan metode pengulangan dan menu pilihan if else.