Anda di halaman 1dari 23

LAPORAN PRAKTIKUM

TEKNIK KOMPUTER dan KENDALI I


Modul 3
7-Segment

Oleh:

Nama : Christian Eumeric Louis Fallo


Nim : 1906030005

Jurusan Teknik Elektro


Fakultas Sains dan Teknik
Universitas Nusa Cendana
Kupang
2021
A. Tujuan
Menampilkan dan mengendalikan data pada seven segment.
B. Dasar Teori
Seven Segment (7-Seg) tidak asing lagi, yang sering dijumpai pada kehidupan sehari-
sehari, seperti pada jam tangan, jam dinding, mesin cuci, serta alat-alat elektronik
lainnya. Walaupun bisa dikatakan bahwa 7-Seg merupakan tampilan yang sudah lama
ada, akan tetapi trend pengguanaanya tidak bisa digantikan dengan tampilan lain. Hal
inilah yang menjadikan 7-seg tetap masih dipertahankan sebagai salah satu tampilan
pada segala jenis alat-alat elektronik.Pada dasarnya 7-seg terdiri dari 7 buah LED, yang
dirangkai menjadi satu sehingga dapat membentuk angka-angka 0-9. Pada
perkembangannya 7-seg ditambahkan satu bagian lagi sebagai tanda titik (dot point).
Berdasarkan standart penamaan setiap bagian pada 7-seg dapat dituliskan dengan
ilustrasi gambar sebagai berikut :

a
f b
g
e c
d dp

Gb.1. Konfigurasi penamaan masing-masing segment


Gb.2. Bentuk fisik 7-Segment

7-seg terdiri dari 2 jenis atau type yang beredar dipasaran, yaitu Common Anode dan
Common Cathode. Common memiliki terjemahan “bersama”, artinya salah satu kutup pada
7-seg dijadikan menjadi satu, atau dapat dikatakan satu kaki 7-seg dipakai bersama
dengan jenis kutup yang sejenis. Pengetahuan akan common pada setiap penggunaan 7-
seg sangatlah penting, dikarena berkaitan dengan cara untuk menghidupkannya
apakah active high atau active low. Secara skematik dua jenis tersebut dapat
digambarkan sebagai berikut :

dp g f e d c b a

Gb.3. Skematik 7-seg Common Cathode


Gb.4. Skematik 7-seg Common Anode

Secara program untuk menghidupkan 7-seg seperti halnya menghidupkan 8 buah LED.
Pengaturan Port sebagai keluaran dengan nilai keluaran sesuai dengan common 7-seg
yang dipakai. Berikut table daftar data kelauran untuk menghidupkan 7-seg :
Common Anode (active Low) Common Cathode (active High)
Angka Hexa Biner Angka Hexa Biner

0 0xC0 0b11000000 0 0x3F 0b00111111


1 0xF9 0b11111001 1 0x06 0b00000110
2 0xA4 0b10100100 2 0x5B 0b01011011
3 0xB0 0b10110000 3 0x4F 0b01001111
4 0x99 0b10011001 4 0x66 0b01100110
5 0x92 0b10010010 5 0x6D 0b01101101
6 0x82 0b10000010 6 0x7D 0b01111101
7 0xF8 0b11111000 7 0x07 0b00000111
8 0x80 0b10000000 8 0x7F 0b01111111
9 0x90 0b10010000 9 0x6F 0b01101111

Peng-aksesan 7-seg dapat dilakukan dengan data hexa atau biner seperti pada table
diatas. Untuk menghidupkan 7-seg common anode maka dibutuhkan sinyal keluaran
rendah (active low), sedangkan untuk menghidupkan common cathode dibutuhkan sinyal
keluaran tinggi (active high). Pada table diatas segment dp (dot point) tidak diaktifkan.
Segment ini dipakai untuk fungsi bilangan-bilangan tertentu, seperti penada
ribuan,pecahan, decimal dan masih banyak lainnya.
Pemasangan 7-seg untuk menampilkan suatu informasi data biasanya dirangkai lebih dari
satu. Seperti untuk menampilakan bilangan puluhan, ratusan, ribuan dan seterusnya. Pada
prinsip pengiriman data hampir sama dengan yang satu 7-seg, akan tetapi untuk menghidupkan
dua tau lebih 7-seg dengan karakter yang berbeda maka dibutuhkan teknik penyalaan yang
bergantian. Pemilihan nyala 7-seg diikuti dengan data yang ingin ditampilkan secara serentak,
hal ini dapat dilihat pada ilustrasi berikut ini :
Contoh: Algoritma menampilkan 2 digit angka yaitu 26 dengan 7-seg common Anode
Label ulang:
Hidupkan 7-seg satuan dan matikan 7-seg puluhan Kirim data biner angka 6 (0b10010010)
Tunda 1 mili detik
Hidupkan 7-seg puluhan dan matikan 7-seg satuan
Kirim data biner angka 2 (0b10100100)
Tunda 1 mili detik Kembali ke label ulang
Sebenarnya untuk menampilkan pada 2 7-seg atau lebih dengan tampilan data yang
berbeda antara 7-seg satu dengan yang lain, dihidupkan secara bergantian dan
bersamaan data yang akan ditampilkan. Penampilan data dilakukan dengan kecepatan
tinggi dalam orde mili detik, sehingga mata akan terkelabuhi yang terlihat bahwa tampilan
7-seg 2 digit atau lebih nyala bersamaan. Pada teknik penyalaan 7-seg dua digit atau lebih
dikenal dua istilah, yaitu jalur data (PORT data) dan jalur control (PORT control). Jalur data
merupakan jalur dimana data-data biner/hexa dikirim untuk menampilkan karakter pada
7-seg. Sedangkan jalur control merupakan kendali untuk memilih 7-seg mana yang
akan dinyalakan sesuai dengan data yang ingin ditampilkan.

Pada jalur control bisa terhubung langsung dari mikrokontroller ke 7-seg atau melalui
transistor, keduanya berfungsi seperti saklar yang digunakan untuk memilih 7-seg mana
yang akan dihidupkan. Berikut secara ilustrasi daripada jalur control dan jalur data :

Gb.5. Jalur data dan jalur control Multi 7-seg


C. Alat dan Bahan
 Proteus 8.9
 Code Vision AVR

D. Gambar Simulasi Rangkaian


D.1

Keyword Komponen
Nama Komponen Keyword ISIS
Mikrokontroler ATMega16 ATMEGA16
7-Segment Com Anode 7SEG-COM-AN-BLUE
D.2

Keyword Komponen
Nama Komponen Keyword ISIS
Mikrokontroler ATMega16 ATMEGA16
7-Segment Com Anode 7SEG-COM-AN-BLUE
D.3

Keyword Komponen
Nama Komponen Keyword ISIS
Mikrokontroler ATMega16 ATMEGA16
7-Segment Com Anode 7SEG-COM-AN-BLUE
Resistor 1k RESISTOR
Push button BUTTON
Power POWER
Ground GROUND
E. Hasil Tugas Mandiri
D.1

Dari flowchart dapat dijelaskan :

 Tahap 1 (Terminator) :
Permulaan program
 Tahap 2 (Preparation) :
Proses inisialisasi/pemberian harga awal. Dalam tahap ini program harus menyertai
library dari mikroprosessor yang digunakan. Karena dalam project ini saya
menggunakan mikroprosessor jenis Atmega16, jadi library yang digunakan adalah
mega16.h. selain itu, karena dalam program menggunakan selang waktu, maka
saya akan menyertai library waktu, yaitu delay.h.
 Tahap 3 (Input/Output Data) :
Proses input/output data, parameter, dan informasi. Dalam dalam program ini,
PORTB digunakan sebagai proses input/output data.
 Tahap 4 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. Dalam program, digunakan looping jenis while(). Dalam
program digunakan while(1) : artinya program akan terus berjalan/looping atau
lanjut lagi ke tahap 5, karena perbandingan pernyataan bernilai 1(TRUE/Yes). Jika
tidak atau perbandingan pernyataan bernilai 0(FALSE/No), maka program akan
lanjut ke tahap 6.
 Tahap 5 (Proses) :
Proses perhitungan dan pengelolahan data. Dalam tahap ini sesuai dengan
program, seven segment akan counter down dari 9 sampai 0, lalu kembali ke tahap
3.
 Tahap 6 (Terminator) :
Akhir program.
Script ini saya diprogram untuk menyalakan dan mengendalikan data seven segment
counter down dari 9 sampai 0 menggunakan mikrokontroler ATmega16. Pada dasarnya
CVAVR di tulis dalam bahasa pemrograman C.
#include <mega16.h>, dimaksudkan untuk menyertakan library dari chip ATmega16.
#include <delay.h>, dimaksudkan untuk menyertakan file fungsi delay.

Void main(void) {…}, dimaksudkan bahwa progaram utama yang akan dijalankan.

DDRB=0XFF; dimaksudkan bahwa seluruh port B merupakan output/keluaran.

While(1), adalah infinite looping. “1” berarti “true” dimana program didalamnya akan terus
berjalan loop salama tidak ada false (0).

PORTB=0x90; ditulis dalam hexa yang berarti seven segment membentuk angka 9.

delay_ms(500); delay selama 500 mili detik.

PORTB=0x80; ditulis dalam hexa berarti seven segment membentuk angka 8.

delay_ms(500); delay selama 500 mili detik.

PORTB=0xF8; ditulis dalam hexa yang berarti seven segment membentuk angka 7.

delay_ms(500); delay selama 500 mili detik.

PORTB=0x82; ditulis dalam hexa berarti seven segment membentuk angka 6.

delay_ms(500); delay selama 500 mili detik.


PORTB=0x92; ditulis dalam hexa yang berarti seven segment membentuk angka 5.

delay_ms(500); delay selama 500 mili detik.

PORTB=0x99; ditulis dalam hexa berarti seven segment membentuk angka 4.

delay_ms(500); delay selama 500 mili detik.

PORTB=0xB0; ditulis dalam hexa yang berarti seven segment membentuk angka 3.

delay_ms(500); delay selama 500 mili detik.

PORTB=0xA4; ditulis dalam hexa berarti seven segment membentuk angka 2.

delay_ms(500); delay selama 500 mili detik.

PORTB=0xF9; ditulis dalam hexa yang berarti seven segment membentuk angka 1.

delay_ms(500); delay selama 500 mili detik.

PORTB=0xC0; ditulis dalam hexa yang berarti seven segment membentuk angka 0.

delay_ms(500); delay selama 500 mili detik.


D.2

Dari flowchart dapat dijelaskan :

 Tahap 1 (Terminator) :
Permulaan program
 Tahap 2 (Preparation) :
Proses inisialisasi/pemberian harga awal. Dalam tahap ini program harus menyertai
library dari mikroprosessor yang digunakan. Karena dalam project ini saya
menggunakan mikroprosessor jenis Atmega16, jadi library yang digunakan adalah
mega16.h. selain itu, karena dalam program menggunakan selang waktu, maka
saya akan menyertai library waktu, yaitu delay.h.
 Tahap 3 (Input/Output Data) :
Proses input/output data, parameter, dan informasi. Dalam dalam program ini,
PORTC digunakan sebagai proses input/output data.
 Tahap 4 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. Dalam program, digunakan looping jenis while(). Dalam
program digunakan while(1) : artinya program akan terus berjalan/looping atau
lanjut lagi ke tahap 5, karena perbandingan pernyataan bernilai 1(TRUE/Yes). Jika
tidak atau perbandingan pernyataan bernilai 0(FALSE/No), maka program akan
lanjut ke tahap 6.
 Tahap 5 (Proses) :
Proses perhitungan dan pengelolahan data. Dalam tahap ini sesuai dengan
program, seven segment akan counter up dari 0 sampa 9 kemudian, seven
segment akan counter down dari 9 sampai 0, lalu kembali ke tahap 3.
 Tahap 6 (Terminator) :
Akhir program.
Script ini saya diprogram untuk menyalakan dan mengendalikan data seven segment
counter up dari 0 sampai 9 kemudian, counter down dari 9 sampai 0 menggunakan
mikrokontroler ATmega16. Pada dasarnya CVAVR di tulis dalam bahasa pemrograman C.

#include <mega16.h>, dimaksudkan untuk menyertakan library dari chip ATmega16.


#include <delay.h>, dimaksudkan untuk menyertakan file fungsi delay.

Void main(void) {…}, dimaksudkan bahwa progaram utama yang akan dijalankan.

DDRC=0XFF; dimaksudkan bahwa seluruh port C merupakan output/keluaran.

While(1), adalah infinite looping. “1” berarti “true” dimana program didalamnya akan terus
berjalan loop salama tidak ada false (0).

PORTC=0xC0; ditulis dalam hexa yang berarti seven segment membentuk angka 0.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xF9; ditulis dalam hexa yang berarti seven segment membentuk angka 1.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xA4; ditulis dalam hexa berarti seven segment membentuk angka 2.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xB0; ditulis dalam hexa yang berarti seven segment membentuk angka 3.

delay_ms(500); delay selama 500 mili detik.


PORTC=0x99; ditulis dalam hexa berarti seven segment membentuk angka 4.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x92; ditulis dalam hexa yang berarti seven segment membentuk angka 5.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x82; ditulis dalam hexa berarti seven segment membentuk angka 6.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xF8; ditulis dalam hexa yang berarti seven segment membentuk angka 7.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x80; ditulis dalam hexa berarti seven segment membentuk angka 8.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x90; ditulis dalam hexa yang berarti seven segment membentuk angka 9.

delay_ms(500); delay selama 500 mili detik.

Lalu, saat seven segment counter up sampai angka 9, seven segment akan counter down
9 sampai 0.

PORTC=0x90; ditulis dalam hexa yang berarti seven segment membentuk angka 9.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x80; ditulis dalam hexa berarti seven segment membentuk angka 8.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xF8; ditulis dalam hexa yang berarti seven segment membentuk angka 7.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x82; ditulis dalam hexa berarti seven segment membentuk angka 6.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x92; ditulis dalam hexa yang berarti seven segment membentuk angka 5.

delay_ms(500); delay selama 500 mili detik.

PORTC=0x99; ditulis dalam hexa berarti seven segment membentuk angka 4.

delay_ms(500); delay selama 500 mili detik.


PORTC=0xB0; ditulis dalam hexa yang berarti seven segment membentuk angka 3.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xA4; ditulis dalam hexa berarti seven segment membentuk angka 2.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xF9; ditulis dalam hexa yang berarti seven segment membentuk angka 1.

delay_ms(500); delay selama 500 mili detik.

PORTC=0xC0; ditulis dalam hexa yang berarti seven segment membentuk angka 0.

delay_ms(500); delay selama 500 mili detik.


D.3

Dari flowchart dapat dijelaskan :

 Tahap 1 (Terminator) :
Permulaan program
 Tahap 2 (Preparation) :
Proses inisialisasi/pemberian harga awal. Dalam tahap ini program harus menyertai
library dari mikroprosessor yang digunakan. Karena dalam project ini saya
menggunakan mikroprosessor jenis Atmega16, jadi library yang digunakan adalah
mega16.h. selain itu, karena dalam program menggunakan selang waktu, maka
saya akan menyertai library waktu, yaitu delay.h.
 Tahap 3 (Input/Output Data) :
Proses input/output data, parameter, dan informasi. Dalam dalam program ini,
PORTA dan PORTC digunakan sebagai proses input/output data.
 Tahap 4 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. Dalam program, digunakan looping jenis while(). Dalam
program digunakan while(1) : artinya program akan terus berjalan/looping atau
lanjut lagi ke tahap 5 dan tahap 7, karena perbandingan pernyataan bernilai
1(TRUE/Yes). Jika tidak atau perbandingan pernyataan bernilai 0(FALSE/No),
maka program akan lanjut ke tahap 9.
 Tahap 5 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. Jika sw1 ditekan (PINC.0 == 0) maka akan lanjut ke tahap 6,
jika tidak akan kembali tahap 3.
 Tahap 6 (Proses) :
Proses perhitungan dan pengelolahan data. Dalam tahap ini sesuai dengan
program, seven segment akan counter up dari 0 sampai 9, lalu kembali ke tahap 3.
 Tahap 7 (Decison) :
Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk
langkah selanjutnya. Lalu Jika sw2 ditekan (PINC.1 == 0) maka akan lanjut ke
tahap 8, jika tidak akan kembali tahap 3.
 Tahap 8 (Proses) :
Proses perhitungan dan pengelolahan data. Dalam tahap ini sesuai dengan
program, seven segment akan counter down dari 9 sampai 0, lalu kembali ke tahap
3.
 Tahap 9 (Terminator) :
Akhir program.

Dalam pengaturan port, portC pada bit 0 dan bit 1 diatur sebagai PULL. Artinya bit 0 dan bit
1 adalah input/masukan
Script ini saya diprogram untuk menyalakan dan mengendalikan data seven segment
counter up dari 0 sampai 9, jika sw1 ditekan. kemudian, counter down dari 9 sampai 0, jika
sw2 ditekan. Pada dasarnya CVAVR di tulis dalam bahasa pemrograman C.
#include <mega16.h>, dimaksudkan untuk menyertakan library dari chip ATmega16.
#include <delay.h>, dimaksudkan untuk menyertakan file fungsi delay.

Void main(void) {…}, dimaksudkan bahwa progaram utama yang akan dijalankan.

DDRC=0XFF; dimaksudkan bahwa seluruh port C merupakan output/keluaran.

While(1), adalah infinite looping. “1” berarti “true” dimana program didalamnya akan terus
berjalan loop salama tidak ada false (0).

if (PINC.0 == 0){...}, dimaksudkan bahwa jika sw1 (PINC.0) ditekan atau sebanding
dengan 0, maka syarat terpenuhi dan program/logika didalamnya akan berjalan.

PORTA=192; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 0.

delay_ms(500); delay selama 500 mili detik.

PORTA=249; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 1.

delay_ms(500); delay selama 500 mili detik.

PORTA=164; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 2.

delay_ms(500); delay selama 500 mili detik.

PORTA=179; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 3.

delay_ms(500); delay selama 500 mili detik.

PORTA=153; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 4.

delay_ms(500); delay selama 500 mili detik.

PORTA=146; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 5.

delay_ms(500); delay selama 500 mili detik.

PORTA=130; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 6.

delay_ms(500); delay selama 500 mili detik.

PORTA=248; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 7.

delay_ms(500); delay selama 500 mili detik.

PORTA=128; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 8.

delay_ms(500); delay selama 500 mili detik


PORTA=144; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 9.

delay_ms(500); delay selama 500 mili detik.

else if(PINC.1 == 0){...}, dimaksudkan bahwa jika sw2 (PINC.1) ditekan atau sebanding
dengan 0, maka syarat terpenuhi dan program/logika didalamnya akan berjalan.

PORTA=144; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 9.

delay_ms(500); delay selama 500 mili detik.

PORTA=128; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 8.

delay_ms(500); delay selama 500 mili detik.

PORTA=248; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 7.

delay_ms(500); delay selama 500 mili detik.

PORTA=130; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 6.

delay_ms(500); delay selama 500 mili detik.

PORTA=146; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 5.

delay_ms(500); delay selama 500 mili detik.

PORTA=153; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 4.

delay_ms(500); delay selama 500 mili detik.

PORTA=179; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 3.

delay_ms(500); delay selama 500 mili detik.

PORTA=164; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 2.

delay_ms(500); delay selama 500 mili detik.

PORTA=249; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 1.

delay_ms(500); delay selama 500 mili detik.

PORTA=192; ditulis dalam decimal yang berarti seven segmen akan membentuk angka 0.

delay_ms(500); delay selama 500 mili detik.


F. Kesimpulan
Dari percobaan/simulasi yang saya lakukan dapat disimpulkan bahwa untuk menampilkan
data pada seven segment kita cukup mengkobinasikan bit pada mikroprosessor sesuai
dengan port pada seven segment. Pada percobaan ini saya gunakan seven segment
common anode, yang berarti seven segment active low. Dia akan aktif jika inputnya
bernilai rendah/0. Seven segement pada dasarnya merupakaan rangkaian yang terdiri dari
7 LED (jika dot di nonaktifkan), biasa disimbolkan dengan a,b,c,d,e,f,g,h.
Contoh, jika ingin menampilkan data 9 pada seven segment com-anode, kita cukup
meginput data 0b10010000(Dalam binary) atau 0x90(Dalam hexa) atau 144(Dalam
decimal).
Lalu jika, kita ingin membuat seven segment counter up dari 0 sampai 9, kita cukup
menginput data 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90 (Dalam
hexa). Ditambah delay pada setiap pergantian data.
Jika kita ingin membuat seven segment counter down dari 9 sampai 0, kita cukup
menginput data 0x90, 0x80, 0xf8, 0x82, 0x92, 0x99, 0xb0, 0xa4, 0xf9, 0xc0 (Dalam
hexa). Ditambah delay pada setiap pergantian data.
Jika kita ingin membuat seven segment counter up-down dari 0 sampai 9 dan 9 kembali 0,
kita cukup menginput data 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,
0x90, 0x80, 0xf8, 0x82, 0x92, 0x99, 0xb0, 0xa4, 0xf9, 0xc0 (Dalam hexa). Ditambah
delay pada setiap pergantian data.

Anda mungkin juga menyukai