Anda di halaman 1dari 20

LAPORAN PRAKTIKUM

MIKROPROSSESOR

Modul II : Scanning Display Seven Segment and Keypad

Disusun Oleh :

Hanif Rifkha Pambudi

13101055

Rekan Praktikum : Hendro Bayu Pramono (13101056)

Asisten Praktikum : Andika Agung

Khoirun Ni’mah

Henny Mahendali

LABORATURIUM SWITCHING

SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM

PURWOKERTO

2015
MODUL II

SCANNING DISPLAY SEVEN SEGMENT AND KEYPAD

I. Dasar Teori

Seven Segment Display ( 7 Segment Display) adalah komponen elektroni-


ka yang dapat menampilkan angka desimal melalui kombinasi-kombinasi
segmennya. Seven Segment Display pada umumnya dipakai pada Jam Digital,
Kalkulator, Penghitung atau Counter Digital, Multimeter Digital dan juga panel
display digital seperti pada microwave oven ataupun pengatur suhu digital . Seven
Segment Display pertama diperkenalkan dan dipatenkan pada tahun 1908 oleh
Frank. W. Wood dan mulai dikenal luas pada tahun 1970-an setelah aplikasinya
pada LED (Light Emitting Diode).

Seven Segment Display memiliki 7 Segmen setiap segmen dikendalikan


secara ON dan OFF untuk menampilkan angka yang diinginkan. Angka-angka
dari 0 (nol) sampai 9 (Sembilan) dapat ditampilkan dengan menggunakan
beberapa kombinasi Segmen. Selain 0 – 9, Seven Segment Display juga dapat
menampilkan Huruf Hexadecimal dari A sampai F. Segmen atau elemen-elemen
pada Seven Segment Display diatur menjadi bentuk angka “8” yang agak miring
ke kanan dengan tujuan untuk mempermudah pembacaannya. Pada beberapa jenis
Seven Segment Display, terdapat juga penambahan “titik” yang menunjukan
angka koma decimal. “LED 7 Segmen ada dua type yaitu “7 Segmen common
Cathode” dan “ 7 Segmen common Anode”.[1]

Perbedaan antara dua layar, seperti namanya, adalah bahwa katoda umum
memiliki semua katoda dari 7-segmen terhubung langsung bersama-sama dan
anoda umum memiliki semua anoda dari 7-segmen terhubung bersama-sama dan
diterangi sebagai berikut.

1. Common Katoda (CC) - Dalam tampilan katoda umum, semua koneksi katoda
dari segmen LED bergabung bersama untuk logika "0" atau tanah. Segmen
individu diterangi oleh aplikasi dari "TINGGI", atau logika "1" sinyal melalui
resistor yang membatasi arus ke bias maju terminal Anoda individu.
Gambar A.1 Common Catoda.

2. Common Anode (CA) - Dalam tampilan anoda umum, semua koneksi anoda
dari segmen LED bergabung bersama untuk logika "1". Segmen individu
diterangi dengan menerapkan dasar, logika "0" atau "LOW" sinyal melalui
cocok resistor yang membatasi arus ke katoda dari segmen tertentu.[2]

Gambar A.2. Common Anoda

Gambar A.3. Tampilan display seven segment[2]

Tabel 4.1 kendali seven segment Common Anode (Anoda):

Numerik Dp G f e d c b a Dalam hex


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 1 0 0 0 98

Metode untuk memahami scanning display berisi 4 buah 7 segmen


common anoda yang dapat diakses dengan 12 pin I/O. Masukan pin common
dapat dikendalikan pada pin Ed1 hingga Ed4. Masukan pin segmen a-b-c-d-e-f-g-
dot (active low) dapat diakses melalui jumper Jdr. Jadi prinsipnya adalah
mengaktifkan salah satu pin Ed1..Ed4 dengan memberikan logika ’1’. Kemudian
data segmen yang sudah disiapkan diberikan ke masukan a..g dan dot dengan
syarat memberikan logika ’0’ agar led segmen menyala.[1]

Gambar A.4 skematik scanning seven segment

Keypad adalah kumpulan beberapa switch yang tersusun atas baris dan kolom, yang
mempunyai sifat yang unik yaitu kolom dan barisnya tidak dapat dirubah. Dalam
melakukan proses pembacaan dan pengiriman data keypad dapat bekerja dengan
menggunakan dua metoda, yaitu metoda scanning dan pollong. Keypad ATMega 8535
yang digunakan menggunakan metoda scanning yang berfungsi untuk menerima input
tombol keypad serta menampilkan digit atau karakter yang diinginkan ke
alat penampil seperti seven segment atau LCD. Keypad merupakan susunan
saklar push-button menurut baris dan kolom, hampir sama dengan dot matriks,
hanya saja dot matrix tersusun dari LED. Bentuk dan susunan keypad dapat
dilihat pada gambar 2.3. Hubungkan pin keypad dengan pin mikrokontroler. Cara
untuk mengetahui saklar mana yang ditekan adalah dengan memeriksa baris dan kolom.
Agar mikrokontroler mengetahui.[3]

Keypad Matrix adalah tombol - tombol yang disusun secara matrix (baris
x kolom) sehingga dapat mengurangi penggunaan Port. Sebagai contoh, Keypad
Matriks 4×4 cukup menggunakan 8 pin untuk 16 tombol push button. Hal tersebut
dimungkinkan karena rangkaian tombol disusun secara horizontal membentuk
baris dan secara vertical membentuk kolom.[1]

Gambar A.5 Rangkaian Keypad

Gambar A.6 Skematik scanning keypad


II. Hasil Data

Pada praktikum modul 2 kali ini kita membahas tentang scanning display
seven segment dan keypad . Hasil akhir yang akan diketahui setelah praktikum ini
bisa menampilkan angka pada display seven segment. Pada praktikum kali ini
berbeda dengan praktikum hari sebelumnya. Karena pada praktikum ini dalam
pembuatan projek harus membuat source juga setelah kita membuat projek.

Gambar B.1

Pilih Project > OK, lalu muncul gambar dibawah ini.

Gambar B.2.

Ketika muncul jendela di atas pilih “No”, maka setelah itu akan muncul gambar
seperti ini,

Gambar B.3.
Ketik nama file yang akan dibuat, lalu klik “Save”. Lalu akan muncul jendela
seperti ini

Gambar B.4.

Pilih menu pada taskbar “C Compiler” maka isi Chip dengan ATmega 324A,dan
Clock sebesar 11.0592 > OK. Setalah itu pilih file > New maka akan tampil
gambar berikiut

Gambar B.5.

Pada jendela ini pilih source lalu OK, setelah itu pilih menu setting >
Programmer pastikan bahwa USB Downloader sudah terdeteksi maka pilih OK.
Seperti gambar pada berikut.

Gambar B.6.
Setelah itu ketikkan list coding yang telah tertulis dalam modul. Setelah coding
dimasukan kemudian langkah selanjutnya yaitu configure project dengan cara
memilih menu Project kezmudian pilih Configure kemudian pilih After Build
kemudian centang Program the Chip klik OK.

Gambar B.7. – B.9.


Gambar B.10.

Setelah itu klik menu Add dan pilih nama project yang telah kita simpan tadi lalu
klik OK.

Setelah itu tekan F9 untuk melihat apakah masih ada coding yang salah atau sudah
benar. Jika coding sudah benar semua maka pilih menu Project kemudian Build
All atau langsung menekan ctrl+F9 setelah itu pilih Program the Chip untuk
melihat hasil dari program yang dibuat.

Gambar B.11.
Berikut hasil yang di dapat ketika melakukan praktik scanning seven segment and
keypad.

Gambar B.12. Hasil dari Projek 2

Gambar B.15. Hasil dari projek 3

Gambar B.13. Hasil dari Projek 2

Gambar B.16. Hasil dari projek 4

Gambar B.14. Hasil dari projek 3


III. Analisa Pembahasan

Praktikum modul 2 scanning display seven segment and keypad untuk mem-
buat projrect berbeda dengan modul sebelumnya, jika pada modul 1 membuat
CodeVision Autowizard, pada modul 2 tidak membuatnya. Jadi, dalam
pembuatannya membuat source setelah kita membuat projek.

Pada projek pertama praktikum membuat untuk menampilkan angka 1 dan


berikut coding dan flowchartnya.

#include <mega324a.h> Start

void main (void)

{ Port A sebagai output

DDRA=0xff;
PORTA=0b11111001
DDRD=0x00;

while(1)
Out put No
{
=1
PORTA=0b11111001;
yes
PORTD.1=1;

} End

Pada list coding pada baris pertama yang tertulis di atas mempunyai
maksud bahwa compiler diminta untuk menyertakan file ATmega 324a karena

pada praktikum juga menggunakan mikro tersebut. Dan untuk baris selanjutnya,
tertulis perintah DDRA=0xff; merupakan baris register DDRx untuk mengatur
orientasi port. DDRD=0x00; berarti kita mengatur Port D sebagai tempat keluaran
DDRA. Dan baris selanjutnya perintah while(1) untuk mengulang setiap
perintah yang ditulis. Untuk baris list koding selanjurnya PORTA=0b11111001; //
Cetak Numerik 1 | PORTD.1=1;, perintah koding ini adalah Port A
menampilkan angka biner kedalam bentuk hexa dengan Port D sebagai
keluarannya dan angka tersebut berbentuk angka 1. Dan perintah ini akan
berulang karena terdapat perintah while (1), untuk mengakhiri projek tidak
lupa tanda kurung kurawal dikasih.
Untuk projek praktikum yang kedua adalah menampilakan angka 1 dan C.
berikut list koding yang ditulis dan Flowchart dari projek kedua..

#include <mega324a.h> Start

#include <delay.h>

void main (void)


Port A sebagai
output
{

DDRA=0xff; out
PORTA=0b11111001
DDRD=0x00;

while(1)

{
Output no
PORTA=0b11111001; =1

PORTD.0=0;

PORTD.1=1; Delay = 50 detik

delay_ms(50);
PORTA=0b11000110
PORTA=0b11000110;

PORTD.0=1;

PORTD.1=0; Output No
=C
Delay_ms(50);

}
Delay = 50 detk
}

End

Pada projek kedua, hampir sama dengan projek pertama hanya menambah satu
karakter saja, pada awal list koding hampir sama dan tetap mengulangi perintah
itu selamanya karena terdapat perintah while(1). PORTA = 0b11111001;
//Cetak Numerik “1” | PORTD.0=0; | PORTD.1=1; | delay_ms(50);.
Untuk list koding berikut berfungsi untuk mengubah angka biner tersebut menjadi
bilangan hexadecimal dengan Port A menampilkan angka dan Port D.0 sebagai
inputannya dan bernilai 1 sedangkan Port D.1 sebagai outputnya dan bernilai 0
atau lebih jelasnya menampilkan dan mematikan. Untuk delay angka pertama ini
sebesar 50 milisecond karena terdapat perintah delay_ms(50);. Dan dibawahnya
terdapat koding berikut PORTA=0b11000110; //Cetak Karakter “C” |

PORTD.0=1; | PORTD.1=0; | Delay_ms(50);, fungsi koding tersebut, Port A


untuk menampilkan karakter “C”. karena angka biner tersebut menunjukkan huruf
C, yang sebelumnya angka biner tersebut diubah menjadi bilangan hexadecimal.
Untuk Port D.0 sebagai outputnya yang bernilai 1 sedangkan port D.1 sebagai
inputnya dan bernilai 0. Serta delaynya selama 50 milisecond. Untuk hasil dari
projek dua ini akan tampil angka 1 dan C pada seven segment secara bersamaan
dan hidup selama 50 milisecond dan mati 50 milisecond sesuai dengan perintah.

Untuk projek ketiga dari praktikum kali ini, kami membuat seven segment
untuk menampilkan angka urut dua digit dari 00 hingga 29. Untuk perintah
pertama dari coding ini adalah #include <mega324a.h> | include <delay.h>
| #define DS1 PORTD.0 | #define DS2 PORTD.1 | #define data_segmen
PORTA, perintah dari coding ini adlah bahwa kita menggunakan ATmega 324a
sebagai microprossesor dan Port D.0 dan Port D.1 digunakan sebagia input dari
mikro ke display seven segmentnya. Dan Port A sebagai tempat untuk mengatur
dimana tempat hasil compiler yang akan ditampilkan. Koding selanjutnya adalah
unsigned char bil[10] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};| int kiri,
kanan, i;, untuk coding tersebut menandakan bahwa perintah untuk
menampilkan karakter – karakter tulisan hasil dari peralihan angka hexa ke angka
decimal, yang akan ditampilkan pada display seven segment. Dan untuk coding
selanjuntnya PORTA=0x00; | DDRA=0xFF; | PORTD=0x00; |
DDRD=0xFF;seperti projek sebelumnya koding ini berfungsi sama halnya dengan
praktikum sebelumnya. while(1) fungsi koding ini untuk mengulang hasil projek
selamanya tanpa harus berhenti. Dan perintah koding selanjutnya kiri=0; |
kanan=0; | for (kiri=0; kiri<2;kiri++) | { | for (kanan=0;
kanan<10; kanan++) { | for (i=0; i<50; i++) {, fungsi dari perintah ini
adalah perintah kiri yang bernilai 0 dan kanan yang bernilai 0. Serta untuk kiri
sama dengan 0 maka kiri lebih besar 2 atau bernilai satuan, dan kanan yang
bernilai sama dengan 0 makan kanan lebih besar 10 atau bernilai puluhan. Untuk
perintah koding selanjutnya adalah data_segmen = bil[kanan]; |
DS2=0;DS1=1; : delay_ms(5); | data_segmen = bil[kiri]; |
DS2=1;DS1=0; | delay_ms(5);, maksud perintah ini adalah bilangan bagian
kanan yang merupakan data segmen akan tampil jika DS2=0 dan DS1=1 dengan
delay tampil 5 detik, selanjutnya data segmen bilangan kiri akan tampil jika DS2
= 1 dan DS1=0 serta delaynya selama 5 detik.

Untuk projek keempat ini kita melakukan scanning menggunakan keypad.


Pada projek ini terlebih dahulu kita mengcopy dulu script yang ada dalam modul
lalu dipindahkan ke dalam CodeVisionAVR. Setelah itu kita mengkompile script
dan mendownload kedalam micro. Untuk coding baris pertama #include
<mega324a.h> | #include <delay.h> berfungsi sebagai Lib ATmega 324a
serta Lib delay atau waktu tunda. Untuk script koding selanjutnya #define DS1
PORTD.0 | #define DS2 PORTD.1 | #define DS3 PORTD.2 | #define DS4
PORTD.3 berfungsi untuk mendeklarasikan masukan common anoda DS1 – DS4
ke Port D.0 – Port D.3. Dan baris selanjutnya #define data_segmen PORTA
| #define K1 PINB.0 | #define K2 PINB.1 | #define K3 PINB.2 |
#define K4 PINB.3 pada script selanjutnya berfungsi sebagai mendeklarasikan
data seven segment (active low) serta untuk mendeklarasikan kolom keypad K1 –
K4 di Pin B.0 – Pin B.3. Untuk script selanjutnya adalah #define B1 PORTC.4
| #define B2 PORTC.5 | #define B3 PORTC.6 | #define B4 PORTC.7
untuk koding ini kita mendeklarasikan baris keypad B1 – B4 ke Port C.4 – Port
C.7. Baris script selanjutnya adalah unsigned char segmen[]=
{0b11000000,0b11111001,0b10100100,0b10110000, //0-1-2-3 |
0b10011001,0b10010010,0b10000010,0b11111000, //4-5-6-7 |
0b10000000,0b10010000,0b10001000,0b10000011, //8-9-A-B |
0b11000110,0b10100001,0b10000110,0b10001110}; //C-D-E-F | unsigned
char d1=0,d2=0,d3=0,d4=0,d=0; | unsigned char a,tombol; mempunyai
fungsi sebagi table tengok untuk data seven segment, serta berfungsi mengaktifasi
variable common anoda display, serta variabel a dan data tombol, dan subrutin
menampilkan ke scanning display. Setelah itu koding berikut d1=d+1; |
d2=d+2; | d3=d+3; | d4=d+4; | for(a=0;a<10;a++, untuk koding ini
berfungsi untuk display akan menampilkan angka yang berada dalam D
menambah angka 1, 2,3, dan 4. Untuk script data_segmen = segmen[d1]; |
DS1=1;DS2=0;DS3=0;DS4=0;|delay_ms(5); | data_segmen = segmen[d2];|
DS1=0;DS2=1;DS3=0;DS4=0;|delay_ms(5);|data_segmen=segmen[d3];|DS1=
0;DS2=0;DS3=0;DS4=0; | delay_ms(5);| data_segmen = segmen[d4]; |
DS1=0;DS2=0;DS3=0;DS4=0; | delay_ms(5);, untuk script ini berfungsi
untuk menampilkan angka dibagian D mana yang akan nampak serta yang tidak
nampak hal ini bisa diatur dengan mengganti angka 1 yang di DS1 atau yang lain
dengan angka 0. void detek(){ | B1=1;B2=0;B3=0;B4=0; |
delay_us(100); | if(K1==1) tombol=0; | if(K2==1) tombol=1; |
if(K3==1) tombol=2; | if(K4==1) tombol=3; | B1=0;B2=1;B3=0;B4=0;
| delay_us(100);,dst berfungsi sebagai subrutin pendeteksian tombol. Dan
untuk ini void main(void) { | #pragma optsize- | CLKPR=0x80; |
CLKPR=0x00; | #ifdef _OPTIMIZE_SIZE_ | #pragma optsize+ | #endif,
berfungsi sebagai program utama crystal ocsilator divisi factor 1. Untuk koding
terakhir detek(); | tampil(); }}, koding terakhir ini berfungsi sebagai
panggilan subrutin deteksi tombol dan panggilan subrutin untuk tampil pada
scanning display.
V. Kesimpulan dan Saran
Kesimpulan yang bisa diambil dari praktikum kali ini adalah :
1. Seven Segment merupakan komponen elektronika yang dapat
menampilkan angka desimal melalui kombinasi-kombinasi segmennya.
2. Untuk Scanning seven segment kita bisa menggunakan common kathoda
serta bisa common anoda.
3. Scanning seven segment merupakan teknik untuk menampilkan perintah
yang sudah didownload dari mikro akan ditransfer kedalam display
seven segment.
4. Scanning Keypad merupakan teknik scanning yang akan menampilan
elemen elemen angka yang yang sudah didownload kedalam seven
segment dan bisa diubah lewat tombol keypad yang tersedia.
5. Scanning seven segment dan scanning keypad saling berhubungan dan
berkaitan.

Saran yang bisa diberikan pada praktikum kali ini adalah :

1. Dalam praktikum disarankan menggunakan windows 7


2. Software yang digunakan untuk praktikum adalah CodeVision AVR dan
Proteus 8, tapi untuk Proteus disarankan menggunakan Proteus 7.x.
3. Untuk penulisan coding harus teliti serta di awali dan di akhiri dengan
tanda kurung kurawal setiap perintah ({}).
4. Peralatan praktikum sebaiknya di cek kelayakannya sebelum praktikum
berlangsung.
VI. Daftar Pustaka

1. Pramono, S. (2015). Modul Praktikum Microprossesor Scanning Display Seven


Segment dan Keypad. Purwokerto.

2. Anynomous. (n.d.). http://www.electronics-tutorials.ws/blog/7-segment-


display-tutorial.html. Retrieved May 05, 2015, from electronics-tutorial.ws:
http://www.electronics-tutorials.ws/blog/7-segment-display-tutorial.html

3. Anonymous. (n.d.).
https://www.academia.edu/9071984/Seven_Segment_Keypad_dan_LCD.
Retrieved May 05, 2015, from Academia.edu:
https://www.academia.edu/9071984/Seven_Segment_Keypad_dan_LCD
VII. Lampiran
A. Pertanyaan
1. Apa fungsi dari “PORTD.1=1”?
Jawab : Perintah PORTD.1=1 yaitu mengaktifkan Pin 1 pada Port D.
2. Apa fungsi dari delay_ms (50)?
Jawab : Fungsi dari delay ms (50) adalah untuk mengatur delay atau
waktu lamanya jeda selama 50 mili second atau 0.05 detik.
3. Apa fungsi dari unsigned char bil [10]?
Jawab : Char berarti variabelnya akan ditampung dalam tipe data char
(karakter). Sedangkan [10] berarti array yang akan ditampilkan
mempunyai 10 kolom, yaitu dari index 0 sampai dengan 9.
4. Apa maksud dari for (kiri=0; kiri<2; kiri++)?
Jawab : berarti akan terjadi pengulangan dimana variable dengan nama
kiri mula-mula bernilai nol, kemudian jika variable kiri lebih kecil dari 2
maka variable kiri akan ditambah 1.
5. Pada saat kanan bernilai 5, berapani lai dari Port A dalam hexa dan
binernya ?
Jawab : Untuk nilai Port A adalah LED 6 yang menyala, sedangkan
dalam hexa adalah 6 dan binernya adalah 0110.
6. Apa keunggulan menggunakan Subrutin ?
Jawab : Dapat membagi program kedalam sub-sub program yang lebih
kecil sehingga memudahkan dalam penulisan code listing.
7. Apa fungsi daridelay_us (100) ?
Jawab : Fungsidari delay us (100) adalah untuk mengatur delay atau
waktu lamanya jeda selama 100 mikro second atau 0.1 milli second atau
0.0001 detik.

8. Apa perbedaan scanning seven segment pada point 5 & 7?

Jawab: Pada Scanning Seven Segment point 5 menggunakan listing code


perulagan while sedangkan pada Scanning Seven Segment Point
menggunakan perulangan For.
B. Tugas
1. Simulasi dan program Up counter yang menghitung dari 0 hingga
100+XYZ.
2. Simulasi dan Program Up down counter dengan ketentuan
a. Bila Push buttom 1 ditekan counter bertambah 1
b. Bila Push buttom 2 ditekan counter berkurang 1
c. Bila Push buttom 3 ditekan counter akan reset ke “000”

Berikut script list codingnya


Berikut gambar simulasinya.