Anda di halaman 1dari 22

LAPORAN PRAKTIKUM

MIKROKONTROLLER

OLEH :
RIZKY FAJAR RAMADHAN
16130052

PROGRAM STUDI TEKNIK ELEKTRO INDUSTRI


JURUSAN ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS NEGERI PADANG
2018
I. Tujuan
1. Mengimplementasikan program mikrokontroler menggunakan LED 7-Segmen.
2. Menyusun rancangan program untuk menyalakan LED 7-Segmen.
3. Menyusun rancangan prorgram perhitungan menggunakan 1 digit.
4. Menyusun rancangan prorgram perhitungan menggunakan 2 digit.

II. Teori Singkat


Aplikasi tampilan elektronika yang sering digunakan salah satunya LED 7-segmen.
Tampilan dari LED 7-segmen terdiri dari tujuh buah LED/dioda pemancar cahaya yang saling
terpisah dan dikemasdalam sebuah paket LED 7-segmen seperti gambar 4.1.

Tampilan LED 7-Segmen


Tampilan LED 7-seven segmen umumnya mempunyai delapan buah LED yang dilengkapi
keperluan titik desimal seperti gambar 4.1. yang menujukan sebuah LED 7-segmen
tampak depan.
Tampilan LED 7- segmen mempunyai dua macam konfigurasi yaitu common
anode dan common cathode. Common anode mempunyai konfigurasi ketujuh pin anoda
dari LED dihubungkan secara pararel seperti yang ditunjukan gambar 4.2. gambar ini
memperlihatkan bahwa masing-masing segmen dari anoda LED akan dihubungkan
dengan tegangan sumber sebesar 5 V-DC melalui VCC.
Konfigurasi LED 7-Segmen Common Anode

Untuk menghidupkan cahaya pada LED, maka katoda harus terhubung dengan
tahanan seri. Untuk mendapat pencahayaan LED, tahanan pembatas dapat dicari dengan
mengambil jatuh tegangan pada LED 1,7V dan arus sekitar 10 mA, nilai tahanan dapat
dicari dengan cara:
Rlimmit =(5,0-1,7)V / 10mA= 330 ohm
Nilai tahanan yang digunakan adalah 330 ohm untuk mendapatkan pencahayaan yang
baik dari masing -masing segmen. Tampilan comon anoda merupakan divais yang aktif
aktif-LOW, sebab LED mendapatkan tegangan LOW untuk pencahayaan setiap segmen.
Sedangkan untuk LED dengan comon kotoda harus mendapatkan tegangan aktif-HIGH.
Sirkuit antar muka mikrokntroller AVR ketampilan LED 7-segmen yang digunakan
adalan konfigurasi comon anoda . Konfigurasi comon anoda harus mendapat sinyal data
logika LOW masing-masing segmen menyala dan sebaliknya, jikan mendapat sinyal data
logika HIGHT maka tampilan masing-masing segmen akan padam. Sinyal data yang
merupakan representasi karakter yang ditampilkan harus dialirkan melalui pin a, b, c, d,
e, f, g, dan dp yang papat dilihat pada gambar 4.2. untuk pemberian suplai daya dialirkan
melalui sebuah transistor tipe PNP 2N3906 yang berfungsi sebagai driver. Driver
berfungsi selain mengendalikan pemberian saplay daya ke LED 7-segmen juga berfungsi
sebagai penyangga (buffer) supaya mikrokontroller AVR tidak terbebani sebagai sumber
arus (source current).
Untuk dapat menampilakan sebuah karakter pada sebuah LED 7-segmen,maka harus

diatur hanya segmen-segmen tertentu yang nyala sesuai dengan bentuk tampialan. Misalnya

untuk menampilkan angka 1, maka hanya segmen b dan c, sedangkan segmen lainnya (a,

d, e, f, g, dan dp) dimatikan dengan memberi nilai 1 (HIGH). Kombinasi untuk tampilan

karakter LED 7-segmen dapat dilihat pada tabel 4.1.


pengkodean karakter LED 7-segmen comon anoda
Tampilan dp g f E d C b A Heksa
Karakter
0 1 1 0 0 0 0 0 0 C0
1 1 1 1 1 1 0 0 1 F9
2 1 0 1 0 0 1 0 0 A4
3 1 0 1 1 0 0 0 0 B0
4 1 0 0 1 1 0 0 1 99
5 1 0 0 1 0 0 1 0 92
6 1 0 0 0 0 0 1 0 82
7 1 1 1 1 1 0 0 0 F8
8 1 0 0 0 0 0 0 0 80
9 1 0 0 1 0 0 0 0 90

Tabel 4.1 dapat digunakan untuk pemasangan segmen dengan pengaturan pin a ke Px0,
segmen b ke Px1, segmen c ke Px2, segmen d ke Px3, segmen e ke Px4, segmen f ke Px5,
segmen g ke Px6, dan segmen dp ke Px7.
III. Gambar Kerja
Gambar Kerja LED 7-Segmen Tunggal

Gambar Kerja dengan 2 buah LED 7-Segmen

IV. Alat dan Bahan


1. Rangkaian downloader
2. Rangkaian minimal
3. Rangkaian LED 7-Segmen Tunggal
4. Komputer/Laptop
5. Aplikasi CV-AVR
6. Aplikasi driver downloader
7. Konektor
V. Langkah Kerja

1. Rangkaian praktikum MC diasumsikan seperti pada gambar rangkaian 4.3

2. Buatlah program list program 4.1, dengan membuat projek baru dengan mengguna code
vision AVR, dengan memilih nama mikrokontroler yang digunakan. Silahkan pilih sesuai
degan jenis mikrokontroler yang anda gunakan. Pilih pula berapa besar frekuensi yang
digunakan, sesuaikan dengan frekuensi kristal yang digunakan pada MC. Selanjutnya
simpan dengan nama program SEGMEN1 dan kompilasi.

List program 4.1. menghidupkan


LED 7-Segmen
#include <mega32.h>
#include <delay.h>
void main(void)
{
DDRA=0xFF;
PORTA=0x00;
while (1)
{
PORTA=0x00;
delay_ms(500);
}
}

3. Upload hasil program Segmen1 ke MC, selanjutnya amati dan catat kejadian yang
muncul. Berikan analisis kejadian selama berlangsungnya.
4. Pastikan rangkaian anda masih terhubung pada posisi port A, Kemudia ketik list
program 4.2, simpan dengan nama SEGMEN2, kompilasi dan upload ke MC.

List program 4.2 menghitung LED


7-Segmen dari 1 sampai 9 #include
<mega32a.h>
#include <delay.h>
void main(void)
{
DDRA=0xff;
PORTA=0x00;
while (1)
{

PORTA=0xc0;
delay_ms(500);
PORTA=0xf9;
delay_ms(500);
PORTA=0xa4;
delay_ms(500);
PORTA=0xb0;
delay_ms(500);
PORTA=0x99;
delay_ms(500);
PORTA=0x92;
delay_ms(500);
PORTA=0x82;
delay_ms(500);
PORTA=0x80;
delay_ms(500);
PORTA=0x90;
delay_ms(500);
}
}

5. Amati apakah yang terjadi pada lampu LED setelah program di jalankan pada MC?
Apakah perbedaannya dengan program Segmen1? Catat semua kejadianya dan
analisis perbedaanya dengan program Segmen2.
6. Kompilasi perogram Segmen2 kemudian simpan dengan nama SEGMEN3 buat
program menghitung 0-9 dan 9-0 serta terus berulang kemunian program dijalankan
pada MC? Apakah perbedaannya pada program segmen3? Catat semua kejadianya
dan analisis perbedaanya dengan program segmen2.
7. Pastikan rangkaian anda masih terhubung pada posisi port A, Kemudia ketik list
program 4.3 dan beri nama SEGMEN4.

List program 4.3 menghitung LED 7-Segmen

dari 1 sampai 99
#include <mega32a.h>
#include <delay.h>
int sat,pul,i;
unsigned char
bil[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0
x82,0xF8,0x80,0x90};
void counter_up()
{
for(sat=0;sat<10;sat++)
{
for(pul=0;pul<10;pul++)
{
for(i=0;i<1000;i++)
{
PORTB=0x02;
PORTA=bil[sat];
delay_us(250);
PORTB=0x01;
PORTA=bil[pul];
delay_us(250);
}
}
}
}
void main(void)
{
PORTA=0x00;
DDRA=0xff;
PORTB=0x00;
DDRB=0xff;

{
while (1)
{
counter_up();
}
}
}

8. List program 4.3, setelah program di downlodkan ke MC. Pastikan apa yang terjadi,
amati dengan seksama dan catat apa yang terjadi pada LED 7-segmen tersebut!!
9. Kemudian cobakan untuk memodifikasi program list program 4.3, untuk proses
perhitungan dengan arah kebalikannya dan beri nama program SEGMEN5 . Lakukan
pengujian program tersebut dengan mengkompilasi dan upload program ke MC.
Apakah berhasil menjalankan? Jika tidak ulangi lagi sampai berhasil, dan catat segala
perubahan yang dilakukan hingga berhasil.
VI. Hasil simulasi
 Latihan dengan judul program segmen1

Pada simulasinya akan terlihat seperti ini

*semua led pada sevensegment menyala, simulasi ini bisa digunakan untuk mengetes
apakah ada led yg terputus pada seven segmen kita.

Adapun source programnya adalah

#include <mega32.h>
#include <delay.h>
void main(void) {
DDRC=0xFF;
PORTC=0x00;
while (1) {
PORTC=0x00;
delay_ms(500);
}
}
Percobaan pada sismin

 Latihan dengan judul program segmen2

Pada simulasinya akan terlihat seperti ini

*pada simulasinya seven segmen bergerak dari 0 menuju angka 9.


Adapun source programnya adalah

#include <mega32.h>
#include <delay.h>
void main(void){
char
az=0xC0,a1=0xF9,a2=0xA4,a3=0xB0,a4=0x99,a5=0x92,a6=0x82,a7=0xF8,a8=0x80,a9=0x9
0,
bz=0xC0,b1=0xF9,b2=0xA4,b3=0xB0,b4=0x99,b5=0x92,b6=0x82,b7=0xF8,b8=0x80,b9=0x
90;
DDRA=0xFF;
DDRC=0xFF;
while (1){
PORTA=az;
delay_ms(20);
PORTA=bz;
delay_ms(20);
PORTC=az;
delay_ms(30);
PORTC=bz;
delay_ms(30);
PORTA=a1;
delay_ms(20);
PORTA=b1;
delay_ms(20);
PORTC=a1;
delay_ms(30);
PORTC=b1;
delay_ms(30);
PORTA=a2;
delay_ms(20);
PORTA=b2;
delay_ms(20);
PORTC=a2;
delay_ms(30);
PORTC=b2;
delay_ms(30);
PORTA=a3;
delay_ms(20);
PORTA=b3;
delay_ms(20);
PORTC=a3;
delay_ms(30);
PORTC=b3;
delay_ms(30);
PORTA=a4;
delay_ms(20);
PORTA=b4;
delay_ms(20);
PORTC=a4;
delay_ms(30);
PORTC=b4;
delay_ms(30);
PORTA=a5;
delay_ms(20);
PORTA=b5;
delay_ms(20);
PORTC=a5;
delay_ms(30);
PORTC=b5;
delay_ms(30);
PORTA=a6;
delay_ms(20);
PORTA=b6;
delay_ms(20);
PORTC=a6;
delay_ms(30);
PORTC=b6;
delay_ms(30);
PORTA=a7;
delay_ms(20);
PORTA=b7;
delay_ms(20);
PORTC=a7;
delay_ms(30);
PORTC=b7;
delay_ms(30);
PORTA=a8;
delay_ms(20);
PORTA=b8;
delay_ms(20);
PORTC=a8;
delay_ms(30);
PORTC=b8;
delay_ms(30);
PORTA=a9;
delay_ms(20);
PORTA=b9;
delay_ms(20);
PORTC=a9;
delay_ms(30);
PORTC=b9;
delay_ms(30);

}
}
Percobaan pada sismin

 Latihan dengan judul program segmen3

Pada simulasinya akan terlihat seperti ini

*untuk simulasi ini sama dengan simulasi kedua hanya saja ketika dia sudah mencapai
angka sembilan maka dia akan mulai menghitung mundur dari 9 sampai 1 begitu
seterusnya.

Adapun source programnya adalah

#include <mega32.h>
#include <delay.h>
void main(void){
char
az=0xC0,a1=0xF9,a2=0xA4,a3=0xB0,a4=0x99,a5=0x92,a6=0x82,a7=0xF8,a8=0x80,a9
=0x90,
bz=0xC0,b1=0xF9,b2=0xA4,b3=0xB0,b4=0x99,b5=0x92,b6=0x82,b7=0xF8,b8=0x80,b
9=0x90;
DDRA=0xFF;
DDRC=0xFF;
while (1){
PORTA=az;
delay_ms(20);
PORTA=bz;
delay_ms(20);
PORTC=az;
delay_ms(30);
PORTC=bz;
delay_ms(30);
PORTA=a1;
delay_ms(20);
PORTA=b1;
delay_ms(20);
PORTC=a1;
delay_ms(30);
PORTC=b1;
delay_ms(30);
PORTA=a2;
delay_ms(20);
PORTA=b2;
delay_ms(20);
PORTC=a2;
delay_ms(30);
PORTC=b2;
delay_ms(30);
PORTA=a3;
delay_ms(20);
PORTA=b3;
delay_ms(20);
PORTC=a3;
delay_ms(30);
PORTC=b3;
delay_ms(30);
PORTA=a4;
delay_ms(20);
PORTA=b4;
delay_ms(20);
PORTC=a4;
delay_ms(30);
PORTC=b4;
delay_ms(30);
PORTA=a5;
delay_ms(20);
PORTA=b5;
delay_ms(20);
PORTC=a5;
delay_ms(30);
PORTC=b5;
delay_ms(30);
PORTA=a6;
delay_ms(20);
PORTA=b6;
delay_ms(20);
PORTC=a6;
delay_ms(30);
PORTC=b6;
delay_ms(30);
PORTA=a7;
delay_ms(20);
PORTA=b7;
delay_ms(20);
PORTC=a7;
delay_ms(30);
PORTC=b7;
delay_ms(30);
PORTA=a8;
delay_ms(20);
PORTA=b8;
delay_ms(20);
PORTC=a8;
delay_ms(30);
PORTC=b8;
delay_ms(30);
PORTA=a9;
delay_ms(20);
PORTA=b9;
delay_ms(20);
PORTC=a9;
delay_ms(30);
PORTC=b9;
delay_ms(30);
PORTA=a8;
delay_ms(20);
PORTA=b8;
delay_ms(20);
PORTC=a8;
delay_ms(30);
PORTC=b8;
delay_ms(30);
PORTA=a7;
delay_ms(20);
PORTA=b7;
delay_ms(20);
PORTC=a7;
delay_ms(30);
PORTC=b7;
delay_ms(30);
PORTA=a6;
delay_ms(20);
PORTA=b6;
delay_ms(20);
PORTC=a6;
delay_ms(30);
PORTC=b6;
delay_ms(30);
PORTA=a5;
delay_ms(20);
PORTA=b5;
delay_ms(20);
PORTC=a5;
delay_ms(30);
PORTC=b5;
delay_ms(30);
PORTA=a4;
delay_ms(20);
PORTA=b4;
delay_ms(20);
PORTC=a4;
delay_ms(30);
PORTC=b4;
delay_ms(30);
PORTA=a3;
delay_ms(20);
PORTA=b3;
delay_ms(20);
PORTC=a3;
delay_ms(30);
PORTC=b3;
delay_ms(30);
PORTA=a2;
delay_ms(20);
PORTA=b2;
delay_ms(20);
PORTC=a2;
delay_ms(30);
PORTC=b2;
delay_ms(30);
PORTA=a1;
delay_ms(20);
PORTA=b1;
delay_ms(20);
PORTC=a1;
delay_ms(30);
PORTC=b1;
delay_ms(30);

}
}
Percobaan pada sismin

 Latihan dengan judul program segmen4

Pada simulasinya akan terlihat seperti ini

*kedua seven segmen akan menyala sampai pada angka 99

Adapun source programnya adalah

#include <mega32.h>
#include <delay.h>
int sat,pul,i;
unsigned char bil[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void counter_up() {
sat=0;
pul=0;
for(sat=0;sat<10;sat++) {
for(pul=0;pul<10;pul++) {
for(i=0;i<100;i++) {
PORTA=0x02;
PORTC=bil[sat];
delay_us(500);
PORTA=0x01;
PORTC=bil[pul];
delay_us(500);
}
}
}
}
void main(void) {
PORTA=0x00;
DDRA=0xff;
PORTC=0x00;
DDRC=0xff;

{
while (1)
{
counter_up();
}
}
}

 Latihan dengan judul program segmen5

Pada simulasinya akan terlihat seperti ini

*kedua seven segmen akan menghitung mundur dari 99 sampai 00.


Adapun source programnya adalah

#include <mega32.h>
#include <delay.h>
int sat,pul,i;
unsigned char bil[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void counter_down() {
for(sat=9;sat>=0;sat--) {
for(pul=9;pul>=0;pul--) {
for(i=0;i<100;i++) {
PORTA=0x02;
PORTC=bil[sat];
delay_us(500);
PORTA=0x01;
PORTC=bil[pul];
delay_us(500);
}
}
}
}
void main(void) {
PORTA=0x00;
DDRA=0xff;
PORTC=0x00;
DDRC=0xff;

{
while (1)
{
counter_down();
}
}
}
VII. Pertanyaan
1. Apa fungsi dari LED 7-Segmen?
2. Buatlah list program menggunakan algoritma lain yang cara kerjanya sama dengan
perogram 4.3?
3. Analisa perbedaan list program 4.3 dengan list program segmen5?
4. Apa fungsi dari list program di bawah ini pada list program 4.3?
{
while (1)
{
counter_up();
}
5. Buatlah perogram perhitungan angka dari kombinasi dari program 4.3 dan segmen5
menjadi program SEGMEN6?

Jawaban
1. Seven segment berfungsi untuk menampilkan angka-angka desimal dan beberapa
karakter tertentu melalui kombinasi aktif atau tidaknya LED penyususnan dalam seven
segment.
2. Source nya
#include <mega32.h>
#include <delay.h>
unsigned char bil[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int sevsegKiri, sevsegKanan, i;
sevsegKiri=0;
sevsegKanan=0;
for(sevsegKiri=0;sevsegKiri<10;sevsegKiri++)
{
for(sevsegKanan=0;sevsegKanan<10;sevsegKanan++)
{
for(i=0;i<1;i++)
{
PORTB.0=0;
PORTB.1=1;
PORTD=bil[sevsegKanan];
delay_ms(5);
PORTB.0=1;
PORTB.1=0;
PORTD=bil[sevsegKiri];
delay_ms(5);
}
}
}
3. Perbedaannya adalah penggunaan perintah counter up dan counter down, dimana
counter up merupakan suatu rangkaian terpadu yang dirancang untuk digunakan dalam
mencacah suatu bilangan decimal secara maju, atau dari bilangan decimal terkecil ke
nilai yang terbesar sesuai dengan perintah masukan yang dikehendaki. Sedangkan
Counter Down merupakan kebalikan dari Counter Up, yaitu Sistim pencacah dari yang
bilangan decimal terbesar menuju yang terkecil. Selain itu perbedaan juga terdapat
dalam range perintah for yang kita berikan.

4. Fungsidari counter up adalah mencacah suatu bilangan decimal secara maju, atau dari
bilangan decimal terkecil ke nilai yang terbesar sesuai dengan perintah masukan yang
dikehendaki.

5. Program untuk menghitung waktu per60 detik


Source program nya sebagai berikut
#include <mega32.h>
#include <delay.h>
int sat,pul,i;
unsigned char bil[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void counter_up() {
sat=0;
pul=0;
for(sat=0;sat<6;sat++) {
for(pul=0;pul<10;pul++) {
for(i=0;i<100;i++) {
PORTA=0x02;
PORTC=bil[sat];
delay_us(500);
PORTA=0x01;
PORTC=bil[pul];
delay_us(500);
}
}
}
}
void main(void) {
PORTA=0x00;
DDRA=0xff;
PORTC=0x00;
DDRC=0xff;

{
while (1)
{
counter_up();
}
}
}
VIII. Kesimpulan

Jadi kesimpulan yang bisa saya ambil dalam simulasi ini adalah bahwa penggunaan
dari seven segmen ini bisa digunakan dalam kehidupan sehari-hari selain itu saya
mengetahui fungsi dari counter up dan counter down dari sebuah source program yang ada
dan itu akan berpengaruh pada range yang kita inginkan pada perintah for nantinya.

Anda mungkin juga menyukai