Anda di halaman 1dari 20

LAPORAN RESMI PRAKTIKUM

PEMROGRAMAN DAN ANTARMUKA MIKROKONTROLER

Judul : Pengenalan Digital Input/Output

Disusun Oleh:
Nama : Damara Achmad Fenanda
Nrp : 10311700010028
Kelompok: 8D

DEPARTEMEN TEKNIK ELEKTRO OTOMASI


FAKULTAS VOKASI
INSTITUT TEKNOLOGI SEPULUH
NOPEMBER SURABAYA
2019
PERCOBAAN I
PENGENALAN INPUT / OUTPUT DIGITAL

1.1 DURASI : 100 menit

1.2 TUJUAN
• Praktikkan memahami digital input/output pada mikrokontroler
• Praktikkan mampu membuat aplikasi dari LED dan 7 Segment

1.3 ALAT – ALAT YANG DIPERLUKAN


• Modul MP 100 Training Kit
• USB ISP Programmer
• Kabel Jumper
• Multimeter

1.4 PENDAHULUAN
• LED

Gambar 1.0 Light Emitting Diode (LED)

Light Emiting Diode atau LED adalah suatu semikonduktor yang memancarkan cahaya
monokromatik ketika diberi tegangan maju/searah, secara bahasa dapat diartikan dioda memancarkan
cahaya apabila dialirkan arus listrik. Semikonduktor adalah material yang dapat bertindak sebagai
konduktor (penghantar arus listrik) dan isolator (penahan arus listrik). Sedangkan dioda adalah bahan
semikonduktor yang terdiri dari N-type material dan P-type material yang saling terhubung dan di kedua
ujungnya terdapat elektroda (katoda/N-type & anoda/P-type).
LED mengubah sebagian besar energi listrik menjadi cahaya. Cahaya dihasilkan dari banyak
partikel-partikel kecil yang mempunyai energi dan momentum yang disebut photons yang merupakan
unit utama dari suatu cahaya. Photons merupakan hasil dari pergerakan elektron.Photons pada suatu
dioda tersusun dari material tertentu. Pada dioda yang terbuat dari silikon atau germanium, diode
tersebut memancarkan cahaya berupa gelombang inframerah sehingga tidak dapat dilihat mata
manusia. LED memancarkan cahaya semata-mata oleh pergerakan elektron pada material. Dan LED
terdiri dari bahan/material semikonduktor yang memancarkan gelombang cahaya yang dapat dilihat
oleh mata manusia dan memancarkannya dalam jumlah besar.
• 7 SEGMEN

Gambar 1.2 7 Rangkaian Dioda pada 7 Segment


7 segment merupakan sebuah indikator untuk mengkombinasi LED menjadi sebuah tampilan
angka mulai dari hitungan desimal 0 sampai dengan desimal 9. 7 segment mempunyai 2 jenis tipe
yaitu common anoda dan common katoda. Pada tipe common anoda seluruh anoda pada display 7
segment terhubung dengan power supply, LED dikontrol melalui katoda yang terhubung dengan
ground. Sedangkan pada tipe komon katoda, seluruh katoda terhubung dengan ground, LED dikontrol
melalui pin anoda yang terhubung dengan power supply.

Gambar 1.3 Konfigurasi Rangkaian 7 Segment

1.5 PROSEDUR PERCOBAAN

Pada bagian ini terdapat beberapa percobaan yaitu pembuatan program pada CodeVision
AVR, digital input/output, shift register, dan 7 Segment

Digital Input / Output
1.Buat project baru, File → New → Project

Gambar 1.4 Pembuatan Project Baru


2. Pilih Yes untuk menggunakan CodeWizardAVR.

Gambar 1.5 Pembuatan Project Baru dengan CodeWizard AVR

3. Pilih ATmega8535 untuk pengaturan target tipe chip AVR.


4. Atur nilai clock sebesar 3,6864 MHz.

Gambar 1.6 Pengaturan Nilai Clock ATmega8535

5. Klik menu Ports, lakukan pengaturan PORTC 0-7 sebagai output, PORTB 0-1 sebagai input.

Gambar 1.7 Pengaturan Port ATmega8535 Keterangan


: Untuk pengaturan port sesuaikan dengan percobaan yang dilakukan
6. Pilih menu bar Program → Generate, Save and Exit untuk menyimpan project
7. Pada halaman utama pilih Project → Configure → After Build → Action (Program the Chip)

Gambar 1.8 Pengaturan Eksekusi Program CodeVision AVR

8. Hubungkan pin pada tabel 1.1 menggunakan kabel jumper.


Tabel 1.1 Konfigurasi rangkaian ATmega8535 dengan LED
ATMEGA8535 BOARD LED, PUSH S/W
PC.0 LD1
PC.1 LD2
PC.2 LD3
PC.3 LD4
PC.4 LD5
PC.5 LD6
PC.6 LD7
PC.7 LD8
PB.0 PS1
PB.1 PS2

9. Sesuaikan hasil generate program dari CodeWizardAVR dengan program di bawah ini
//Program Digital Input/Output

#include <mega8535.h>
void main(void)
{
... Sesuaikan dengan hasil generate dari CodeWizardAVR ...
while (1)
{
if(PINB.0==0 && PINB.1==0)
{ //mengecek kedua tombol
PORTC=0xff; //menyalakan semua LED
}
else{
if(PINB.0==0){ //mengecek tombol 1
PORTC=0x0f; //menyalakan LED 1-4
}
else if(PINB.1==0){ //mengecek tombol 2
PORTC=0xf0; //menyalakan LED 5-8
}
else{
PORTC=0x00; //mematikan semua LED
}
}
}
}

10. Compile dan build program dengan mengklik sesuai pada gambar di bawah ini.

Gambar 1.9 Compile dan Build Teks Editor CodeVision AVR

11. Jika tidak ada error ketika proses compile, lanjutkan dengan mengupload program
pada mikrokontroler.

Gambar 1.10 Upload Program CodeVisionAVR pada Mikrokontroler



Shift Register
1. Ulangi langkah 1 hingga 7 pada percobaan digital input/output.
2. Atur konfigurasi PORTC 0–7 sebagai output pada CodeWizardAVR.
3. Hubungkan pin pada tabel 1.2 menggunakan kabel jumper.
Tabel 1.2 Konfigurasi MCU ATmega8535 dan LED

ATMEGA8535 BOARD LED


PC.0 LD1
PC.1 LD2
PC.2 LD3
PC.3 LD4
PC.4 LD5
PC.5 LD6
PC.6 LD7
PC.7 LD8

4. Sesuaikan hasil generate program dari CodeWizardAVR dengan program di bawah ini
//Program Shift Register

#include <mega8535.h>
#include <delay.h> //pustaka fungsi delay

void main(void)
{

unsigned char cnt; //insialisasi variabel untuk perulangan

//... Sesuaikan dengan hasil generate dari CodeWizardAVR ...//

while (1)
{
PORTC=0b00000001; //menyalakan LED 1
for(cnt=0;cnt<7;cnt++)
{
delay_ms(500); // jeda waktu 0.5 detik
PORTC<<= 1; // menggeser register ke kiri
}
PORTC=0b10000000; //menyalakan LED 8
for(cnt=0;cnt<7;cnt++)
{
delay_ms(500); // jeda waktu 0.5 detik
PORTC >>= 1; // menggeser register ke kanan
}
}
}

5. Ulangi langkah 10 – 11 pada percobaan digital input/output.



7 Segment
1. Ulangi langkah 1 hingga 7 pada percobaan digital input/output.
2. Atur Konfigurasi PORTB 0-3 dan PORTC 0–7 sebagai output pada CodeWizardAVR.
3. Hubungkan pin pada tabel 1.3 menggunakan kabel jumper.
Tabel 1.3 Konfigurasi rangkaian ATmega 8535 dengan 7 Segment
ATMEGA8535 BOARD 7 SEGMENT
PC.0 A
PC.1 B
PC.2 C
PC.3 D
PC.4 E
PC.5 F
PC.6 G
PC.7 D.P
PB.0 C1
PB.1 C2
PB.2 C3
PB.3 C4

4. Sesuaikan hasil generate program dari CodeWizardAVR dengan program di bawah ini
//Program 7 Segment

#include <mega8535.h>
#include <delay.h>

// Declare your global variables here


void semua(void); //dekarasi sub-program
unsigned char count; //Deklarasi variabel
unsigned char number[4]={0x06,0x5B,0x4F,0x66}; //Array dari angka 1,2,3,4

void main(void)
{

... Sesuaikan dengan hasil generate dari CodeWizardAVR ...

while (1)
{

PORTB = 0B00001110; //mengaktifkan 7segment 1


PORTC=number[0]; //menampilkan angka 1
delay_ms(1000); //jeda waktu 1 detik
PORTB = 0B00001111; //mematikan 7 segment

PORTB = 0B00001101; //mengaktifkan 7segment 2


PORTC=number[1]; //menampilkan angka 2
delay_ms(1000);
PORTB = 0B00001111;
PORTB = 0B00001011; //mengaktifkan 7segment 3
PORTC=number[2]; //menampilkan angka 3
delay_ms(1000);
PORTB = 0B00001111;

PORTB = 0B00000111; //mengaktifkan 7segment 4


PORTC=number[3]; //menampilkan angka 4
delay_ms(1000);
PORTB = //mematikan setiap LED 7segment 0B00001111;
PORTC = 0x00;

delay_ms(1000);
semua(); //memanggil sub-program semua
delay_ms(1000);
}
}

void semua(void) //sub-program


{
for (count = 0;count<200;count++) //pengulangan selama 200
kali {
PORTB = 0B00001110;
PORTC=number[0];
delay_ms(1); //jeda waktu 1 milidetik
PORTB = 0B00001111;

PORTB = 0B00001101;
PORTC=number[1];
delay_ms(1);
PORTB = 0B00001111;

PORTB = 0B00001011;
PORTC=number[2];
delay_ms(1);
PORTB = 0B00001111;

PORTB = 0B00000111;
PORTC=number[3];
delay_ms(1);
PORTB = 0B00001111;
PORTC = 0X00;

5. Ulangi langkah 10–11 pada percobaan digital input/output.


1.6 TUGAS TAMBAHAN
• Buatlah keseluruhan LED menjadi blink dengan interval waktu 0,5 s.
• Buatlah program untuk menggeser nyala LED ke atas, jika tombol ditekan maka LED bergeser
ke arah bawah. Begitupula sebaliknya ketika tombol ditekan kembali
• Tampilkan 4 digit NRP terakhir pada 7 segment.
• Buatlah program counter up menggunakan 7 segment
• Buatlah program jam digital dengan dua digit 7 segment pertama sebagai menit dan dua digit
terakhir sebagai detik
HASIL DATA PERCOBAAN

-APA YANG PERBEDAAN MIKROPROSESOR DAN MIKROKONTROLER?


 Mikrokontroler adalah computer mikro dalam satu chip tunggal. Mikrokontroler
memadukan CPU, ROM, RWM, I/O paralel, I/O seri, counter-timer, dan
rangkaian clock dalam satu chip tunggal. Mikrokontroler berbeda dengan
mikroprosesor dalam beberapa hal. Mikrokontroler memadukan memori untuk
menyimpan program atau data pheriperal I/O untuk berkomunikasi dengan alat
luar.
 Mikroprosesor sering juga disebut dengan prosesor atau CPU. Mikroprosesor
diberi sebutan CPU karena fungsinya sebagai unit pemroses pusat. CPU bekerja
sebagai pusat pemroses dan pengendali bekerjanya sistim komputer. Sebagai
salah satu jenis chip dari berbagai jenis chip yang telah diproduksi, mikroprosesor
sering juga diberi sebutan Microprocessor Unit (MPU).

I. PERCOBAAN PERTAMA
Pada percobaan pertama kita mencoba percobaan menghidupkan LED dengan
menggunakan push button sebagai input untuk menyalakan LED. Pada
percobaan ini menggunakan 2 pushbutton yaitu PS1 dan PS2 ,PS 1 untuk
menghidupkan LED Merah dan PS 2 untuk menghidupkan LED Hijau.

//Program Digital Input/Output

#include <mega8535.h>
void main(void)
{
... Sesuaikan dengan hasil generate dari CodeWizardAVR ...
while (1)

{
if(PINB.0==0 && PINB.1==0)
{ //mengecek kedua tombol
PORTC=0xff; //menyalakan semua LED
}
else{
if(PINB.0==0){ //mengecek tombol 1
PORTC=0x0f; //menyalakan LED 1-4
}
else if(PINB.1==0){ //mengecek tombol 2
PORTC=0xf0; //menyalakan LED 5-8
}
else{
PORTC=0x00; //mematikan semua LED
}
}
}
Pada pemrograman diatas terdapat pemrograman Bahasa C, dimana pada AVR tidak hanya
Bahasa pemrograman C saja, melainkan ada Bahasa yang di gunakan selain Bahasa C,
seperti C++ dan Bahasa pemrograman yang lain. Seperti Void main() adalah fungsi tidak
bertipe data (kalau di pascal lebih dikenal dengan procedure), void main() // void itu sama
saja tidak dianggap. Void main() digunakan apabila sebuah fungsi tidak memerlukan
argument. Void berarti kosong. Lalu ada Perulangan atau biasa disebut juga looping sangat
sering digunakan dalam bahasa program, dengan adanya ini ketika kita ingin membuat
banyak kondisi maka gunakanlah perulangan agar kode menjadi lebih praktis dan mudah.
Terdapat tiga perulangan yaitu perulangan For, perulangan While, dan perulangan Do-
While.

Hasil Percobaan:

Gambar 1. Kondisi diamana Ps belum di tekan, semua LED masih pada posisi OFF
Gambar 2. Ketika Ps 1 ditekan lampu hijau menyala (LED 5-8).

Gambar 3 Ketika Ps 2 di tekan lampu LED merah semua menyala (LED 1-4)
II. PERCOBAAN KEDUA

Pada percobaan kedua kita mencoba percobaan shift register, dengan kondisi
LED 1 bergeser ke kiri dan LED 8 bergeser ke kanan dengan memberi delay
selama 0.5s

Hasil Percobaan:

Gambar 4. kondisi LED 1 bergeser ke kiri dan LED 8 bergeser ke kanan


III. PERCOBAAN KETIGA
Pada percobaan ketiga ini kita melakukan percobaan untuk menampilkan 7 Segment
diamana pada percobaan ini menampilkan angka secara berurutan dengan delay yang di
tentukan sehingga dapat di tampilkan sebagai berikut:

Gambar 5. Saat 7 segment menampilkan angka

Gambar 6. Saat 7 segment menunjukan angka bersamaan


ANALISA:
Pada 7 segment yang di tampilkan angka bersamaan karena akibat delay yang terlalu cepat
sehingga dari angka 4 ke angka 1 memunculkan angka bersamaan terlebih dahulu agar
dapat kembali ke angka 1, sehingga pengulangan terus terjadi karena terdapat WHILE.

IV. TUGAS TAMBAHAN

1. TUGAS TAMBAHAN PERTAMA


Pada tugas tambahan pertama kita melakukan percobaan mengidupkan
LED blink dengan interval 0.5s

Hasil listing program:

#include
<mega8535.h>
#include <delay.h>

Void main(void){
//… sesuaikan hasil generate program…//

While(1)
{
PORTC=0xff;
Delay_ms(500);
PORTC=0x00;
Delay_ms(500);
}
}
Hasil:

Interval waktu 0,5 s

Interval waktu 0,5 s

III. TUGAS TAMBAHAN KEEMPAT

Pada tugas keempat ini menampilkan nrp dengan 7 segment dengan tampilan tanpa delay.

Hasil program:

#include <mega8535.h>
#include <delay.h>

// Declare your global variables here


Void semua (void);
Unsigned char count;
Unsigned char number [4] = {0b00111111, 0b00111111, 0x4f, 0x5b};
{
For (count=0; count <200; count++)
{
PORTB = 0b00001110;
PORTC = number [0];
Delay_ms (1);
PORTB = 0b00001111;

PORTB = 0B00001101;
PORTC = number [0]
Delay_ms (1);
PORTB = 0B00001111

PORTB = 0B00000011
PORTC = number [3]
Delay_ms (1)
PORTB = 0B00001111
PORTC = 0x00
}
}

Hasilnya seperi gambar di bawah ini:

IV. TUGAS TAMBAHAN KEEMPAT

Pada tugas ini membuat counter up dengan 7 segment

Hasil Program:
~code AVR
#include <mega8535.h>
#include <delay.h>

// Declare your global variables here


Unsigned char number [4] = {0x06, 0x58, 0x4f, 0x66};
//Place your code here
PORTB=0B00001111;
PORTC = number[0];
Delay_ms (1000);

PORTB=0B00001111;
PORTC=number[1];
Delay_ms (1000);

PORTB=0B00001111;
PORTC=number[2];
Delay_ms (1000);

PORTB=0B00001111;
PORTC=number[3];
Delay_ms (1000);

PORTB=0B00001111;
PORTC=0x00;
Delay_ms (1000);

}
Hasil dari percobaanya :

Anda mungkin juga menyukai