Anda di halaman 1dari 17

LAPORAN PRAKTIKUM

SISTEM MIKROPROSESOR DAN MIKROKONTROLER

Kelas : 2B

Nama/NIM Praktikan : Fitra Sartivian / 191311047

No. Urut Percobaan :3

No/Nama Modul
: SEVEN SEGMENT DISPLAY
Percobaan

Tanggal Penugasan : 5 April 2021

Tanggal Pelaporan : 12 April 2021

PROGRAM STUDI D3 TEKNIK ELEKTRONIKA


POLITEKNIK NEGERI BANDUNG
Semester 4 2020/2021
1. Tujuan
Sesudah praktikum diharapkan mampu :
➢ Membuat program dalam Bahasa C, mengcompile, memprogram ke modul mikro dan
menjalankan di modul mikro.
➢ Memahami dan dapat menggunakan Paralel I/O AVR.
➢ Memahami dan merangkai seven segment.
➢ Membuat program seven segment, seven segment dengan system scanning.

2. Landasan Teori
AVR adalah salah satu 8-bit mikrokontroller berarsitektur RISC buatan ATMEL/
MICROCHIP. AVR memiliki kecepatan eksekusi instruksi sekitar 1 MIPS perMHz.
Sevent segment adalah display yang terdiri dari 8 buah led. Jika Anodanya digabungkan
disebut common anoda dan jika Katodanya yang digabung disebut common
catoda.

3. Alat dan Komponen yang Digunakan


1. Komputer PC/Laptop
2. Compiler Codevision
3. Simulator Simulide atau Proteus

4. Langkah-langah percobaan

1) Buat folder kerja dan berinama, misal : seven_segment


2) Jalankan Codevision, buat new project dengan tidak menggunakan CodeWizardAvr Pilih
folder yang tadi dibuat seven_segment, beri namafile misal seven_segment,
Gambar 1.
3) Klik save, pilih device ATmega32 lalu klik Ok
4) Pada submenu C compiler pilih clock 8MHz
5) Lalu klik Ok
6) Edit program berikut dibawah ini
/*
* seven_segment.c
*
* Created: 01/04/2021 19:45:49
* Author: dell
*/
#include <mega32.h>
void main(void) {
char x=1;
DDRA= 0xff;
while (1)
{
PORTA = x;
X=(x<<1);
delay_ms(1000);
}
7) Compile program dan edit ulang program hingga tidak ada error
Gambar 2

8) Build program untuk mengcreate file *.hex


Gambar 3
9) Buat rangkaian seperti gambar 4 pada simulator Simulide
Gambar 4

10) Click kanan IC ATmega32, load firmware, pilih file.hex dari project tadi yang
telah di-compile dan di build pada langkah 7 dan 8.
Gambar 5

11) Click open jika sudah menemukan file yang dimaksud pada langkah no.10
Gambar 6
12) Aktifkan simulator dengan mengklik “power circuit”, amati outputnya.
13) Jika ada perubahandi program setelah dicompile dan dibuild ulang, kemudian di load
firmware atau reload firmware
14) Pada codevision, buat project baru dan ikuti langkah 1 sampai 13 untuk program berikut
void main (void)
{ unsigned char lookup[20]={ 63,6,91};

DDRA= 0xff;
while (1)
{
PORTA = lookup[0];
delay_ms(500);
PORTA = lookup[1];
_delay_ms(500);
PORTA = lookup[2];
_delay_ms(500);
}
}
15) Modifikasi program diatas untuk menampilkan angka 0 sampai 9 dengan
menggunakan looping
16) Buat project baru ikuti langkah 1 sampai 13 untuk gambar rangkaian gambar 7 dan
program dibawah ini
void main (void){
unsigned char lookup[20]={63,6,91} Gambar 7
DDRA=0xff;
DDRC=0xff;
While(1){
PORTA=lookup[0];
PORTC=0x7f
Delay_ms(500);
PORTA=lookup[1];
PORTC=0xbf;
Delay_ms(500);}}

17) Amati output seven segment


18) Ubah delay menjadi 1ms, amati output seven segment ambil kesimpulan
19) Buat project baru,modif program diatas buat fungsi dengan input bilangan
integer antara 0 sampai dengan 99 dan displaykan di seven segment dan test
dengan mainprogram untuk menampilkan bilangan 0, 12, 34, 56, 78, 99.
20) Buat project baru dan buat program up counter dari 00 – 99 di seven segment
21) Buat project baru dan buat program down counter dari 99 – 00 di seven
segment
22) Buat project baru dan buat program upcounter 00 -99, down counter 99 – 00
dan berulang di seven segment

5. Hasil Pengamatan

1) Tuliskan hasil pengamatan dari percobaan 1 s.d. 13

Seluruh bagian dari 7 Segment akan menyala mulai dari A hingga COM dengan delay 1
detik dalam setiap perpindahannya setelah itu akan mati.

2) Program dan hasil pengamatan


a. Program
#include <mega32.h>
#include <delay.h>
void main(void)
{
unsigned char lookup[20]={63,6,91};
while (1)
{
PORTA=lookup[0];
delay_ms(500);
PORTA=lookup[1];
delay_ms(500);
PORTA=lookup[2];
delay_ms(500);
}
}
b. Output

7 Segment menyala dan menampilkan angka mulai dari 0 sampai 2 dengan deay
perpindahan 500ms,setelah sampai 2 kemudian program akan mengulang kembali
dari 0 sampai 2

3) Tuliskan hasil pengamatan


#include <mega32.h>
#include <delay.h>
void main(void)
{
unsigned char lookup[10]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
while (1)
{
PORTA=lookup[0];
delay_ms(1000);
PORTA=lookup[1];
delay_ms(1000);
PORTA=lookup[2];
delay_ms(1000);
PORTA=lookup[3];
delay_ms(1000);
PORTA=lookup[4];
delay_ms(1000);
PORTA=lookup[5];
delay_ms(1000);
PORTA=lookup[6];
delay_ms(1000);
PORTA=lookup[7];
delay_ms(1000);
PORTA=lookup[8];
delay_ms(1000);
PORTA=lookup[9];
delay_ms(1000);
}
}

7 Segment menyala dan menampilkan angka mulai dari 0 sampai 9 dengan delay
perpindahan 1 detik,setelah sampai 9 kemudian program akan mengulang kembali
dari 0 sampai 9

4) Program dan hasil pengamatan


a. Program
#include <mega32.h>
#include <delay.h>
void main(void)
{
unsigned char lookup[20]={63,6,91};
DDRA=0xff;
DDRC=0xff;
while (1)
{
PORTA=lookup[0];
PORTC=0x7f;
delay_ms(500);
PORTA=lookup[1];
PORTC=0xbf;
delay_ms(500);
}
}
b. Output

7 Segment menyala bergantian dengan 7 segment yang atas menampilkan angka 1


dan 7 segment yang di bawah menampilkan angka 0 pergantiannya selama 500ms

5) Tuliskan hasil pengamatan


Seven Segment akan bergantian menyala dengan delay setengah detik, dan seven
segment yg dibawah akan menampilkan angka 0 saja, dan seven segment yang diatas
hanya menampilkan 1.
6) Program dan hasil pengamatan
a. Program
#include <mega32.h>
#include <delay.h>
void main(void)
{
unsigned char lookup[20]={63,6,91};
DDRA=0xff;
DDRC=0xff;
while (1)
{
PORTA=lookup[0];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[1];
PORTC=0xbf;
delay_ms(1);
}
}
b. Output

Kedua 7 Segment menyala menampilkan masing masing angka 0 dan angka 1.Sekila
keduanya seperti menyala bersamaan namun pada kenyataannya kedua 7 segment
tersebut menyala dengan sangat cepat karena diberi delay 1ms sehingga akan terihat
seperti menyala secara bersamaan

7) Program dan hasil pengamatan


a. Program
#include <mega32.h>
#include <delay.h>
void main(void)
{
unsigned char lookup[20]={63,6,91,79,102,109,125,7,127,111};
DDRA=0xff;
DDRC=0xff;

while (1)
{
int a;
for (a=0;a<1000;a++) {
PORTA=lookup[0];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[0];
PORTC=0xbf;
delay_ms(1);
}
for (a=0;a<1000;a++) {
PORTA=lookup[1];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[2];
PORTC=0xbf;
delay_ms(1);
}
for (a=0;a<1000;a++) {
PORTA=lookup[3];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[4];
PORTC=0xbf;
delay_ms(1);
}
for (a=0;a<1000;a++) {
PORTA=lookup[5];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[6];
PORTC=0xbf;
delay_ms(1);
}
for (a=0;a<1000;a++) {
PORTA=lookup[7];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[8];
PORTC=0xbf;
delay_ms(1);
}
for (a=0;a<1000;a++) {
PORTA=lookup[9];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[9];
PORTC=0xbf;
delay_ms(1);
}
}
}
b. Output
7 Segment akan menampilkan angka masing masing 7 segment menyala dengan
keadaan yang bawah bernilai 0 dan atas 0,kemdian 1 dan 2,3 dan 4,5 dan 6,7 dan 8,9
dan 9 dengan delay perpindahan 1 detik,Setelah itu akan kembali mengulang.

8) Program dan hasil pengamatan


a. Program
#include <mega32.h>
#include <delay.h>

void main(void)
{
int a,b;
int tunggu;
unsigned char lookup[20]={63,6,91,79,102,109,125,7,127,111};
DDRA=0xff;
DDRC=0xff;

while (1)
{
for (a=0;a<10;a++)
{
for (b=0;b<10;b++)
{
for (tunggu=0;tunggu<1000;tunggu++)
{
PORTA=lookup[a];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[b];
PORTC=0xbf;
delay_ms(1);
}
}
}
}
}
b. Output
7 segment akan menjadi counter up yang akan menghitung mulai dari 00 sampai 99
dengan delay perpindahan selama 1 detik kemudian akan mengulang kembali setelah
mencapai 99

9) Program dan hasil pengamatan


a. Program
#include <mega32.h>
#include <delay.h>

void main(void)
{
int a,b;
int tunggu;
unsigned char lookup[20]={63,6,91,79,102,109,125,7,127,111};
DDRA=0xff;
DDRC=0xff;

while (1)
{
for (a=10;a>0;a--)
{
for (b=10;b>0;b--)
{
for (tunggu=0;tunggu<1000;tunggu++)
{
PORTA=lookup[a];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[b];
PORTC=0xbf;
delay_ms(1);
}
}
}
}
}
b. Output

7 segment akan menjadi counter down yang akan menghitung mulai dari 99 sampai
00 dengan delay perpindahan selama 1 detik kemudian akan mengulang kembali
setelah mencapai 00

10) Output Program dan hasil pengamatan


a. Program
/*
* program 7.c
*
* Created: 08/04/21 14:34:38
* Author: Anwar
*/

#include <mega32.h>
#include <delay.h>

void main(void)
{
int a,b;
int tunggu;
unsigned char lookup[20]={63,6,91,79,102,109,125,7,127,111};
DDRA=0xff;
DDRC=0xff;

while (1)
{
for (a=0;a<10;a++)
{
for (b=0;b<10;b++)
{
for (tunggu=0;tunggu<1000;tunggu++)
{
PORTA=lookup[a];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[b];
PORTC=0xbf;
delay_ms(1);
}
}
}
for (a=9;a>=0;a--)
{
for (b=9;b>=0;b--)
{
for (tunggu=0;tunggu<1000;tunggu++)
{
PORTA=lookup[a];
PORTC=0x7f;
delay_ms(1);
PORTA=lookup[b];
PORTC=0xbf;
delay_ms(1);
}
}
}
}
}
b. Output

7 Segment menyala dengan menjadi counter up mulai dari 00 hingga 99 setelah itu
berubah menjadi counter down mulai dari 99 hingga 00 dan kembali lagi menjadi
counter up begitupun seterusnya adapun erpindahnnya delay selama 1 detik

6. Kesimpulan
Dari praktikum kali ini dapat disimpulkan bahwa
1. Codevision dan Simulide dapat digunakan untuk memprogram ATMega 32 untuk mengatur
jalannya rangkaian 7 segment
2. Codevision dan Simulide dapat digunakan untuk membuat counter up dan down

Anda mungkin juga menyukai