Disusun Oleh:
Nama : Damara Achmad Fenanda
Nrp : 10311700010028
Kelompok: 8D
1.2 TUJUAN
• Praktikkan memahami digital input/output pada mikrokontroler
• Praktikkan mampu membuat aplikasi dari LED dan 7 Segment
1.4 PENDAHULUAN
• 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
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
5. Klik menu Ports, lakukan pengaturan PORTC 0-7 sebagai output, PORTB 0-1 sebagai input.
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.
11. Jika tidak ada error ketika proses compile, lanjutkan dengan mengupload program
pada mikrokontroler.
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)
{
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
}
}
}
4. Sesuaikan hasil generate program dari CodeWizardAVR dengan program di bawah ini
//Program 7 Segment
#include <mega8535.h>
#include <delay.h>
void main(void)
{
while (1)
{
delay_ms(1000);
semua(); //memanggil sub-program semua
delay_ms(1000);
}
}
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;
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.
#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:
#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:
Pada tugas keempat ini menampilkan nrp dengan 7 segment dengan tampilan tanpa delay.
Hasil program:
#include <mega8535.h>
#include <delay.h>
PORTB = 0B00001101;
PORTC = number [0]
Delay_ms (1);
PORTB = 0B00001111
PORTB = 0B00000011
PORTC = number [3]
Delay_ms (1)
PORTB = 0B00001111
PORTC = 0x00
}
}
Hasil Program:
~code AVR
#include <mega8535.h>
#include <delay.h>
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 :