laporan jobsheet 02(m.lutfi)
DESCRIPTION
Mikrokontroller and nikroporosessingTRANSCRIPT
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
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.