Anda di halaman 1dari 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

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.
Memori (byte)

Tabel 1.1. Perbedaan seri AVR berdasarkan kapasitas


memori Mikrokontroler AVR
Jenis

Pak
et IC

TinyAVR

8
32 pin

AVR(classic AVR)

20
44 pin

MegaAVR

32

Flas
h

EEP
ROM

1
2K
1
8K
8

64
128
128
512
512

SR
AM
0
128
0
1K
512

64 pin

128 K

4K

4K

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 sistemsistem 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

21-220

Input

naik

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)

0 - 20

Kondisi if else
if(xx<=20)
{yy=0;

21-220

221 - 255

Input naik 1
desimal setara
dengan kenaikan
suhu 0.5 C

100

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

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.

Anda mungkin juga menyukai