Laporan Praktikum Mikrokontrolle 2

12
LAPORAN PRAKTIKUM MIKROKONTROLLER Dosen Pembimbing : Triwiyanto, SSi., MT Adib Maulana Akhmad Tornado (P27838012059) MediaPengembangan Mikrokontroler AVR dengan CodeVision LABORATORIUM MIKROKONTROLLER

description

Mikrokontroller

Transcript of Laporan Praktikum Mikrokontrolle 2

Page 1: Laporan Praktikum Mikrokontrolle 2

LAPORAN PRAKTIKUM MIKROKONTROLLER

Dosen Pembimbing :Triwiyanto, SSi., MT

Adib Maulana Akhmad Tornado (P27838012059)

MediaPengembangan Mikrokontroler

AVR dengan CodeVision

LABORATORIUM MIKROKONTROLLERJURUSAN TEKNIK ELEKTROMEDIKPOLTEKKES KEMENKES SURABAYA

Page 2: Laporan Praktikum Mikrokontrolle 2

PERCOBAAN 3DISPLAY 7 SEGMEN

Gambar Rangkaian

Gambar rangkaian decoder dan driver 7 segmen

Untuk percobaan ke 3 ini akan menggunakan 7 segmen. 7segmen dibagi menjadi 2 jenis yaitu commont anoda dan commont katoda. Perbedaannya yaitu untuk 7 segmen commont anoda dikendalikan menggunakan transistor PNP melalui decoder 74LS138, apabila diberi logika 0 pada basis transistor, maka 7 segmen akan menyala, dan jika di beri logika 1 maka 7 segmen akan padam. Untuk 7 segmen commont katoda sebaliknya dengan anoda yaitu dikendalikan menggunakan transistor NPN melalui decoder 74LS138, apabila diberi logika 1 akan menyala dan apabila diberi logika 0 akan padam.

Pada IC decoder 74LS138 terdapat output yang akan menentukan urutan keberapa 7segmen tersebut akan muncul, dan hal itu dapat di atur melalui inputan yang ada pada decoder 74LS138 pada pin 1(PD5),2(PD6) dan 3(PD7) yaitu A,B dan C. Sehingga akan terjadi tabel kebenaran seperti di bawah ini.

Page 3: Laporan Praktikum Mikrokontrolle 2

Selanjutnya pada 7 segmen itu sendiri terdapat pin-pin yang akan membentuk angka ataupun huruf-huruf tertentu. Yaitu pin a,b,c,d,e,f,dan g. Seperti yang tertera pada tabel dibawah ini.

Page 4: Laporan Praktikum Mikrokontrolle 2

Listing Program Percobaan Display 7 Segmen

#include <mega8535.h> //Mendeklarasikan program AVR (Tipe IC)#include<delay.h> // Mendeklarasikan program delay (waktu jeda)unsigned char data; //Mendeklarasi variable datavoid convert(){ //Mengkonversikan desimal ke 7 segmenswitch(data) // mengubah bilangan decimal menjadi biner { // gfedcba case 0: PORTC=0b11000000;break; //Data inputan untuk memunculkan angka 0case 1: PORTC=0b11111001;break; //Data inputan untuk memunculkan angka 1case 2: PORTC=0b10100100;break; //Data inputan untuk memunculkan angka 2case 3: PORTC=0b10110000;break; //Data inputan untuk memunculkan angka 3case 4: PORTC=0b10011001;break; //Data inputan untuk memunculkan angka 4case 5: PORTC=0b10010010;break; //Data inputan untuk memunculkan angka 5case 6: PORTC=0b10000010;break; //Data inputan untuk memunculkan angka 6case 7: PORTC=0b11111000;break; //Data inputan untuk memunculkan angka 7case 8: PORTC=0b10000000;break; //Data inputan untuk memunculkan angka 8case 9: PORTC=0b10010000;break; //Data inputan untuk memunculkan angka 9default: PORTC=0xff; // Apabila tidak di masukkan data maka akan kembali ke default yaitu semua LED pada 7 segmen akan padam} } void main (void) // menandakan fungsi main tidak bertipe{ DDRC=DDRD=PORTC=0xff; //Konfigurasi PORTC dan D sebagai Output PORTD.5=1; // Menentukan letak urutan 7 segmen yang akan menyalaPORTD.6=1; // Menentukan letak urutan 7 segmen yang akan menyalaPORTD.7=1; // Menentukan letak urutan 7 segmen yang akan menyala

while(1) //Perintah yang akan terus berjalan selama program bernilai benar (1).

{ data=5; convert(); //Data yang akan di ambil yaitu angka 5} }

Page 5: Laporan Praktikum Mikrokontrolle 2

Flow Chart Program Percobaan Display 7 Segmen

Proteus Program Percobaan Display 7 Segmen

Inisialisasi data dan PORTC

START

END

Case 0 - 9

Inisialisasi PORTD

Data yang di ambil data ke 5

Page 6: Laporan Praktikum Mikrokontrolle 2

Listing Program Percobaan Display 7 Segmen Increament data 0 sampai dengan 9

#include <mega8535.h> //Mendeklarasikan program AVR (Tipe IC)#include<delay.h> // Mendeklarasikan program delay (waktu jeda)unsigned char data; //Mendeklarasi variable datavoid convert(){//Mengkonversikan desimal ke 7 segmenswitch(data) { // mengubah bilangan decimal menjadi biner// gfedcba case 0: PORTC=0b11000000;break; //Data inputan untuk memunculkan angka 0

case 1: PORTC=0b11111001;break; //Data inputan untuk memunculkan angka 0case 2: PORTC=0b10100100;break; //Data inputan untuk memunculkan angka 0case 3: PORTC=0b10110000;break; //Data inputan untuk memunculkan angka 0case 4: PORTC=0b10011001;break; //Data inputan untuk memunculkan angka 0case 5: PORTC=0b10010010;break; //Data inputan untuk memunculkan angka 0case 6: PORTC=0b10000010;break; //Data inputan untuk memunculkan angka 0case 7: PORTC=0b11111000;break; //Data inputan untuk memunculkan angka 0case 8: PORTC=0b10000000;break; //Data inputan untuk memunculkan angka 0case 9: PORTC=0b10010000;break; //Data inputan untuk memunculkan angka 0default: PORTC=0xff; // Apabila tidak di masukkan data maka akan kembali ke default yaitu semua LED pada 7 segmen akan padam

}}

void main (void) // menandakan fungsi main tidak bertipe{ DDRC=DDRD=PORTC=0xff; // PORT C dan PORT D sebagai OutputPORTD.5=1; // Menentukan letak urutan 7 segmen yang akan menyala PORTD.6=1; // Menentukan letak urutan 7 segmen yang akan menyala while(1) //Perintah yang akan terus berjalan selama program bernilai benar (1).{ convert(); data=data+1; //Data akan muncul dari angka 0 dan dilanjutkan terus ke bawahif(data==10) // Apabila data sampai ke urutan 10, maka akan terjadi perintah dibawah ini{ data=0; //Data akan mulai dari 0 lagi}; delay_ms(1000); //terjadi delay setiap perpindahan urutan data} }

Page 7: Laporan Praktikum Mikrokontrolle 2

Flow Chart Percobaan Display 7 Segmen Increament data 0 sampai dengan 9

Proteus Percobaan Display 7 Segmen Increament data 0 sampai dengan 9

Inisialisasi data dan PORTC

END

Case 0 - 9

Inisialisasi PORTD

Data yang di ambil data+1 (data1, 2, 3 dan seterusnya)

START

Page 8: Laporan Praktikum Mikrokontrolle 2

Listing Program Display 7 Segmen dengan Simulasi Setting Data

#include <mega8535.h> //Mendeklarasikan program AVR (Tipe IC)#include <delay.h> // Mendeklarasikan program delay (waktu jeda)void convert(); //Mengkonversikan desimal ke 7 segmen int data,dataTemp,dataPul,dataSat; void main(void) // menandakan fungsi main tidak bertipe { DDRC=0xFF; // PORTC OutputDDRB=0x00; //PORTB IntputPORTB=0xFF; //PORTB tidak aktif (logika 1)PORTC=0xFF; // LED matiDDRD=0xFF; //PORT D outputdata=00; //pada display akan muncul 00while(PINB.2==1) // Apabila pin B ke 2 belum ditekan terjadi proses di bawah ini{ if (PINB.0==0) //Jika PIN B ke 0 detekan akan terjadi proses dibawah ini{ data=data+1; //data akan diproses secara berurutan dari atas ke bawah }else if (PINB.1==0) //Apabila pin B 1 ditekan akan terjadi proses dibawah ini{ data=data-1; //data akan diproses secara berurutan dari bawah ke atas} dataTemp=data; //Mendeklarasikan varibel datadataSat = dataTemp % 10; // sat=sisa data dibagi 10 //data satuan merupakan data hasil bagi /10dataPul = dataTemp / 10; //data puluhan merupakan data hasil dari data /10dataTemp=dataSat; //mendeklarasika variable dataconvert(); PORTD.5=1; // Menentukan letak urutan 7 segmen yang akan menyalaPORTD.6=0; // Menentukan letak urutan 7 segmen yang akan menyaladelay_ms(30); //terjadi delay setiap perpindahan urutan datadataTemp=dataPul; //mendeklarasikan variable dataconvert(); PORTD.5=0; // Menentukan letak urutan 7 segmen yang akan menyalaPORTD.6=0; // Menentukan letak urutan 7 segmen yang akan menyalaDelay_ms(30); //terjadi delay setiap perpindahan urutan data} PORTC=0x00; delay_ms(2000); //terjadi delay setiap perpindahan urutan data}void convert() //Mengkonversikan desimal ke 7 segmen{switch(dataTemp) { // pg fe dcba

Page 9: Laporan Praktikum Mikrokontrolle 2

case 0: PORTC=0b11000000;break; //Data inputan untuk memunculkan angka 0case 1: PORTC=0b11111001;break; //Data inputan untuk memunculkan angka 0case 2: PORTC=0b10100100;break; //Data inputan untuk memunculkan angka 0case 3: PORTC=0b10110000;break; //Data inputan untuk memunculkan angka 0case 4: PORTC=0b10011001;break; //Data inputan untuk memunculkan angka 0case 5: PORTC=0b10010010;break; //Data inputan untuk memunculkan angka 0case 6: PORTC=0b10000010;break; //Data inputan untuk memunculkan angka 0case 7: PORTC=0b11111000;break; //Data inputan untuk memunculkan angka 0case 8: PORTC=0b10000000;break; //Data inputan untuk memunculkan angka 0case 9: PORTC=0b10010000;break; //Data inputan untuk memunculkan angka 0default: PORTC=0xff; // Apabila tidak di masukkan data maka akan kembali ke default yaitu semua LED pada 7 segmen akan padam} }

Flow Chart Display 7 Segmen dengan Simulasi Setting Data

Inisialisasi data dan PORTC

END

Case 0 - 9

Inisialisasi PORTD

START

Data yang di ambil data-1 (data9, 8, 7

dan seterusnya)

Data yang di ambil data+1 (data1, 2, 3 dan

seterusnya)

Page 10: Laporan Praktikum Mikrokontrolle 2

Proteus Display 7 Segmen dengan Simulasi Setting Data