T1 612006046 BAB III

(1)

13

PERANCANGAN DAN REALISASI ALAT

Pada bab ini akan dijelaskan secara rinci perancangan alat yang dibuat, dimulai dari penjelasan blok diagram sistem dan penjelasan bagian-bagiannya, kegunaan, cara kerja, dan perhitungannya. Perancangan sistem ini dibagi menjadi dua bagian utama, yaitu perancangan perangkat keras dan perangkat lunak.

Perancangan dan realisasi sistem yang terdiri dari perangkat keras dan perangkat lunak digabungkan dalam bentuk blok diagram yang ditunjukkan pada Gambar 3.1. Bagian-bagian penyusun sistem penampil teks bergerak RGB merupakan bagian perangkat kerasnya, sedangkan perangkat lunaknya ada pada program interface dan program mikrokontroler.

Gambar 3.1. Blok diagram sistem keseluruhan.

Sistem yang dibuat merupakan penggabungan sistem kendali digital, penyaklaran, dan komunikasi data serial komputer. Proses pengendalian baris dan kolom dilakukan secara otomatis oleh sistem, pengguna cukup menulis teks pada program interface, melakukan pengaturan animasi, memori penyimpanan, serta warna teks dan latar belakang, kemudian mengirimkannya ke mikrokontroler lewat komunikasi serial.

Sistem penampil teks bergerak RGB terhubung dengan komputer selain untuk komunikasi serialnya, juga untuk hubungan catu dayanya. Sistem penampil teks

Komputer

Program Interface

Sistem Penampil Teks Bergerak RGB

Modul mikrokontroler

AVR ATmega32

Modul kendali kolom Modul

kendali baris

Modul penampil teks bergerak Dot Matrix RGB 64 kolom x 7 baris

Koneksi catu daya Koneksi serial


(2)

bergerak RGB mendapat catu daya dari power supply komputer, dengan tegangan masukan tetap sebesar lima volt.

3.1. Perancangan dan Realisasi Perangkat Keras Sistem

Bagian ini menjelaskan tentang perancangan dan realisasi perangkat keras sistem. Perangkat keras sistem terdiri dari:

1. Modul mikrokontroler

2. Modul pengendali baris dan kolom 3. Modul penampil teks bergerak

Mikrokontroler berfungsi sebagai pengendali utama dari modul pengendali baris, pengendali kolom, dan komunikasi serial dengan komputer.

Modul pengendali baris berfungsi untuk mengatur baris LED yang akan dihidupkan, karena dalam satu kondisi hanya diperbolehkan satu baris saja yang dihidupkan. Proses pengendalian baris ini dilakukan secara bergantian dan berurutan.

Modul pengendali kolom berfungsi untuk mengatur kolom LED yang akan dihidupkan, kondisinya tergantung pada nilai logika baris yang dihidupkan.

Modul penampil berfungsi sebagai media untuk mengatur baris LED yang akan dihidupkan, sehingga dapat membentuk suatu teks dengan warna dan animasi tertentu, berikut juga warna latar belakangnya.

3.1.1. Perancangan dan Realisasi Modul Mikrokontroler

Mikrokontroler digunakan sebagai kendali utama dari keseluruhan sistem. Mikrokontroler terhubung dengan dua modul lain yang berfungsi sebagai pengendali khusus, yaitu:

1. Modul kendali baris, dan 2. Modul kendali kolom

Mikrokontrol dan PC berkomunikasi secara serial dengan kecepatan 9600 bps. Data yang dikirimkan dari PC akan melalui MAX232 terlebih dahulu untuk konversi level tegangannya, kemudian diteruskan ke mikrokontroler. Mikrokontroler pada perancangan diatur sebagai pengirim dan penerima, yaitu sebagai penerima data dari PC untuk masukan data, dan sebagai pengirim untuk memberi informasi bahwa data sudah


(3)

lengkap diterima. Kaki RX-TX pada PC dan MAX232 dihubungkan secara bersilangan untuk hubungan pengiriman dan penerimaan datanya, ditunjukkan pada Gambar 3.2.

Gambar 3.2. Komunikasi data antara PC dan ATmega32.

Pada perancanganada tiga PORT mikrokontroler yang digunakan sebagai kendali utama untuk baris dan shift register yang secara bersesuaian ditunjukkan pada Tabel 3.1.

Tabel 3.1. Koneksi baris dan shift register dengan PORT mikrokontroler.

PORT Urutan Fungsi Kendali

PORTA PORTA.0 K PORTA.6 Baris1 K Baris7

PORTC

PORTC.3

PORTC.0 K Shift register untuk warna red

PORTC.7

PORTC.4 K Shift register untuk warna blue

PORTB PORTB.0 K PORTB.3 Shift register untuk warna green

Komunikasi serial yang digunakan mikrokontroler adalah level tegangan TTL, sedangkan PC menggunakan level tegangan yang bersesuaian dengan protokol RS232. Oleh sebab itu dibutuhkan suatu konverter tegangan untuk mengubah level tegangan dari TTL ke RS232 dan sebaliknya, yaitu dengan menggunakan MAX232 produksi Maxim. Untai mikrokontroler, dan koneksinya untuk reset dan serial secara lengkap ditunjukkan pada Gambar 3.3.

TX

PC

RX

T1OUT T1IN

MAX232

R1IN R1OUT

TXD (PORTD.1)

ATmega32


(4)

Gambar 3.3. Untai mikrokontroler, reset, dan tx-rx serial.

3.1.2. Perancangan dan Realisasi Modul Pengendali Baris

Modul ini berfungsi sebagai kendali untuk baris, untuk memilih baris LED RGB mana yang akan dihidupkan. Dot matrix RGB yang digunakan pada perancangan yang menjadi kaki common-nya adalah anoda dari LED RGB, oleh sebab itu kaki common dari tiap-tiap baris dihubungkan ke kendali untuk masing-masing baris secara bersesuaian. Keluaran dari PORTA tidak dapat dihubungkan secara langsung ke kaki common untuk masing-masing baris, karena port I/O untuk keluaran hanya dapat memberikan arus sebesar 20mA, sehingga hanya dapat menghidupkan satu LED dengan satu warna dasar saja. Jadi jika port I/O keluaran ingin digunakan untuk mengendalikan piranti yang konsumsi arus maupun tegangannya lebih besar, maka harus ditambahkan rangkaian pengendali untuk piranti tersebut. Rangkaian pengendali tambahan yang digunakan pada perancangan adalah rangkaian penyaklaran, dengan menggunakan MOSFET sebagai komponen utamanya.

Kelebihan MOSFET dibanding transistor adalah lebih mudah dalam pengontrolannya, karena cukup memberikan bias tegangan saja. Selain itu penggunaan MOSFET juga lebih hemat daya dibanding transistor, dan dapat mengalirkan arus yang cukup besar. Untuk mengalirkan arus yang cukup besar dibutuhkan transistor yang ukurannya semakin besar pula, namun jika yang digunakan adalah MOSFET maka luasan rangkaian dapat diperkecil, karena ukuran MOSFET lebih kecil dari transistor daya. Pada rangkaian, MOSFET difungsikan sebagai saklar elektronik, yaitu untuk

PB1 PB2 PB3 PB4 PB5/MOSI PB6/MISO PB7/SCK RST VCC GND XTAL1 XTAL2 PD0/RXD PD1/TXD PD2 PD3 PD4 PD5

PD6 PD7

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 AVCC GND AREF PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PB0

IC1

ATMega32

1 2 3 4 5

6 7 8 9

11 10

J1

D Connector 9

1

M

A

X

2

3

2

IC2

SW1 SW2 SW3 SW4 SW5 SW6 SW7 C2

C1 VCC

C3

C4

VCC

DUA TIGA RX TX

DUA TIGA

VCC DT13 CL3 ST3 OE3 DT11 CL1 ST1 OE1 DT12

CL2 ST2 OE2

VCC

RX TX

RST RST

Y1 XTAL CX1

CX2 SR CR RR VCC 1

2

JPS VCC

1 2 3 4 5

JP2

1 2 3 4 5 6

JP1 RLD


(5)

melewatkan arus yang cukup dari sumber daya untuk menghidupkan LED untuk tiap barisnya. Rangkaian kendali baris yang dirancang dapat dilihat pada Gambar 3.4.

Gambar 3.4. Rangkaian kendali untuk tiap baris.

Pada rangkaian terlihat bahwa antara Gate (G) dan Source (S) dihubungkan dengan sebuah resistor 1 KΩ, resistor ini berfungsi sebagai R-pull up bagi masukan MOSFET yaitu pada kaki Gate. Saat PORTA.n bernilai logika 0, maka terdapat perbedaan tegangan antara kaki G dan S sebesar -5V, MOSFET akan berada dalam kondisi triode sehingga dapat melewatkan arus dari catu daya ke baris yang bersangkutan. Sebaliknya saat PORTA.n bernilai logika 1, maka antara kaki G dan S tidak terdapat perbedaan tegangan, MOSFET akan berada dalam kondisi cut-off, sehingga jalur antara catu daya dan baris yang bersangkutan menjadi terputus.

Dot matrix yang digunakan pada perancangan adalah tujuh baris, mulai dari baris satu sampai tujuh, sehingga PORTA yang digunakan adalah PORTA.0 hingga PORTA.6, yaitu bersesuaian dengan nilai n pada Gambar 3.4, dimulai dari nol hingga enam. Bersesuaian dengan Gambar 3.4, PORTA.n digunakan untuk mengendalikan MOSFET pada baris (n+1).

Komponen MOSFET yang digunakan dalam perancangan adalah HEXFET Power MOSFET tipe P-channel dengan nama IRF9540 buatan International Rectifier yang digunakan dalam perancangan karena memiliki beberapa keunggulan, antara lain:

1. Fast switching

2. Maximum drain current up to 23A

3. RDS(on) maks. = 0,117Ω, sehingga extremely efficient

Sedangkan kekurangan dari IRF9540 ditunjukkan pada lampiran B, yaitu mengenai pengaruh suhu terhadap arus drain maksimum yang dapat dilewatkan. Dari gambar terlihat bahwa pengaruh panas menyebabkan arus drain maksimum yang dapat


(6)

dilewatkan menjadi turun, faktor yang paling umum adalah paparan panas matahari, khususnya apabila sistem penampil diletakkan di tempat yang terkena panas matahari secara langsung, seperti yang ada pada lampu lalu lintas.

Arus maju puncak yang dilewatkan pada tiap warna dasar RGB berbeda-beda, untuk R = 105 mA, G = 52,5 mA, dan B = 105 mA, penjelasan perolehan nilai-nilai ini dapat dilihat pada penjelasan untuk persamaan (3.4). Jika ketiga LED dihidupkan bersama, maka hubungan konsumsi arus yang dibutuhkan untuk satu dot dengan duty cycle yang digunakan sesuai persamaan berikut:

(

I I I

)

dutycycle

Idot = R + G + B . ……….(3.1)

DenganIdot= arus satu dot, IR = arus LED red, IG = arus LED green, IB = arus LED

blue. Demikian nilai Idot untuk duty cycle satu per tujuh diperoleh:

(

105mA+52,5mA+105mA

)

. 17

=

dot I

mA 5 , 37 = dot

I

Penampil teks bergerak RGB yang dibuat standarnya menggunakan delapan buah dot matrix ukuran 7 baris x 8 kolom. Sehingga perhitungan total arus untuk satu baris penampil sebanyak 64 dot dengan duty cycle satu per tujuh adalah:

dot

dot I

I64 =64 x ………...(3.2)

mA 5 37 x 64

64 ,

I dot = A 4 , 2 64dot =

I

Didapatkan nilai arus maksimum yang lewat pada MOSFET adalah 2,4 Ampere. Dengan menggunakan nilai ini, maka disipasi daya maksimum yang terpakai oleh MOSFET dengan duty cycle satu per tujuh dapat dicari dengan menggunakan persamaan berikut:

(on) 2

.RDS I

P= ………(3.3)

(

)

= 2,4A 2.0,117 P

Watt 674 , 0 =

P

Saat MOSFET dalam kondisi triode maka disipasi daya maksimum yang terpakai adalah 0,674 Watt. Hal ini hanya berlaku apabila ketiga LED RGB dinyalakan


(7)

Q1 MOSFET-P

SW1 B1 VCC

Q2 MOSFET-P

SW2 B2 VCC

Q3 MOSFET-P

SW3 B3 VCC

Q4 MOSFET-P

SW4 B4 VCC

Q5 MOSFET-P

SW5 B5 VCC

Q6 MOSFET-P

SW6 B6 VCC

Q7 MOSFET-P

SW7 B7 VCC

RP1 RP2 RP3 RP4

RP5 RP6 RP7

bersama, selain daripada itu tentu nilainya lebih kecil dari 0,674 Watt. Perhitungan dapat dilakukan sama seperti yang sebelumnya, yaitu menggunakan persamaan (3.1), (3.2), dan (3.3).

Untai pengendali baris ada tujuh buah, yang masing-masing memiliki gambar untai yang sama, hanya koneksinya pada port yang bersesuaian yang berbeda. Gambar untai pengendali baris ditunjukkan pada Gambar 3.5.

Gambar 3.5.Untai pengendali baris dengan MOSFET tipe-P.

3.1.3. Perancangan dan Realisasi Modul Pengendali Kolom

Modul ini berfungsi sebagai kendali untuk kolom, untuk mengisi data kolom LED RGB yang akan dihidupkan. Kaki common katoda untuk tiap warna dasar dihubungkan ke kaki keluaran paralel shift register yang bersesuaian dengan masing-masing warnanya melalui sebuah resistor. Pemasangan kaki common katoda untuk tiap warna dasar bersesuaian dengan shift register-nya dapat dilihat pada Gambar 3.6.


(8)

Keterangan S.REG pada Gambar 3.6 menunjuk pada pin keluaran shift register yang digunakan. Komponen shift register yang digunakan pada perancangan adalah shift register HCF4094BE 8 stage tipe MOS buatan STMicroelectronics yang didalamnya telah dilengkapi store bus register dengan tri-state output. Keunggulan dari chip ini adalah memiliki pin strobe dan output enable, sehingga dapat diatur kapan data harus dikeluarkan ataupun ditahan, selain itu pada saat yang sama data yang baru dapat langsung diisikan dan disimpan tanpa mengubah data lama yang sudah ada. Konfigurasi kaki dari IC HCF4094BE dapat dilihat pada lampiran B bagian konfigurasi kaki.

Data masukan yang diterima dari 8-stage shift registerakan disimpan dalam 8-bit storage register, kemudian baru diteruskan ke tri-state output. Masukan datanya berupa serial dan hasil keluarannya berupa data paralel. Tabel kebenaran dari shift register HCF4094BE ditunjukkan pada lampiran C bagian Tabel Kebenaran HCF4094BE, yang digunakan sebagai pedoman pengendalian untuk masing-masing pin kendali pada shift register.

Saat output enable bernilai logika low, maka output akan berada dalam kondisi tri-state. Data pada tiap stage shift register akan dikirim ke storage register ketika masukan strobe bernilai logika high, sebaliknya ketika masukan strobe bernilai logika low, maka data yang tertampil adalah data terakhir yang ada pada storage register, dengan syarat output enable-nya bernilai logika high. Pada saat output enable dan strobe keduanya bernilai logika high, maka saat terjadi clock transisi dari low ke high, data yang ada pada Qn adalah data yang ada pada Qn-1 sebelumnya dan data yang ada

pada stage tujuh dipindahkan ke Q7 dan keluaran Qs. Keluaran Qs ini dihubungkan ke

pin data shift register selanjutnya untuk warna yang sama, melalui hubungan kaskade seperti yang ditunjukkan pada Gambar 3.7.

str = strobe, clk = clock, oe = output enable Gambar 3.7. Hubungan kaskade HCF4094BE.

Resistor kolom 1 ………..……….……… kolom ke 64

data

str clk

oe

Parallel output

data Qs

Parallel output

data Qs

Parallel output

data Qs


(9)

Karena jumlah kolom yang digunakan ada 64, maka dibutuhkan delapan shift register yang dihubungkan secara kaskade untuk masing-masing warna dasar. Pin output enable, strobe, data, dan clock diatur lewat port keluaran mikrokontroler. Jadi untuk tiap warna dasar R, G, dan B masing-masing membutuhkan empat port keluaran mikrokontroler untuk pengaturan shift register-nya.

Koneksi kontrol shift register dengan PORT pada mikrokontrol berdasarkan warna dasarnya secara bersesuaian ditunjukkan pada Tabel 3.2.

Tabel 3.2. Koneksi per bagian kontrol shift register dengan PORT mikrokontroler.

Kaki Kontrol Red Green Blue

Data PORTC.2 PORTB.2 PORTC.6

Clock PORTC.0 PORTB.0 PORTC.4

Strobe PORTC.1 PORTB.1 PORTC.5 Output enable PORTC.3 PORTB.3 PORTC.7

PORT pada mikrokontroler cukup mengeluarkan logika high mauupun low untuk mengontrol kaki kontrol pada shift register. Keluaran data dari kaki kontrol dianggap valid apabila memenuhi kriteria waktu tunda minimal yang ditunjukkan pada lampiran C bagian Tabel Karakteristik Elektrik HCF4094BE.

Shift register yang digunakan untuk pengendali kolom ada 24 buah, yang terdiri dari delapan shift register untuk warna red, delapan shift register untuk warna green, dan delapan shift register untuk warna blue. Untai pengendali baris yang digunakan ditunjukkan pada Gambar 3.8.

Gambar 3.8. Untai pengendali baris dengan menggunakan shift register. 1 S H IF T R E G IS T E R IC11 C11 VCC ST1 DT11 CL1 R11 R12 R13 R14 OE1 R15 R16 R17 R18 DT21 1 S H IF T R E G IS T E R IC21 C21 VCC ST1 DT21 CL1 R21 R22 R23 R24 OE1 R25 R26 R27 R28 DT31 1 S H IF T R E G IS T E R IC31 C31 VCC ST1 DT31 CL1 R31 R32 R33 R34 OE1 R35 R36 R37 R38 DT41 1 S H IF T R E G IS T E R IC41 C41 VCC ST1 DT41 CL1 R41 R42 R43 R44 OE1 R45 R46 R47 R48 DT51 1 S H IF T R E G IS T E R IC12 C12 VCC ST2 DT12 CL2 G11 G12 G13 G14 OE2 G15 G16 G17 G18 DT22 1 S H IF T R E G IS T E R IC13 C13 VCC ST3 DT13 CL3 B11 B12 B13 B14 OE3 B15 B16 B17 B18 DT23 1 S H IF T R E G IS T E R IC22 C22 VCC ST2 DT22 CL2 G21 G22 G23 G24 OE2 G25 G26 G27 G28 DT32 1 S H IF T R E G IS T E R IC32 C32 VCC ST2 DT32 CL2 G31 G32 G33 G34 OE2 G35 G36 G37 G38 DT42 1 S H IF T R E G IS T E R IC42 C42 VCC ST2 DT42 CL2 G41 G42 G43 G44 OE2 G45 G46 G47 G48 DT52 1 S H IF T R E G IS T E R IC23 C23 VCC ST3 DT23 CL3 B21 B22 B23 B24 OE3 B25 B26 B27 B28 DT33 1 S H IF T R E G IS T E R IC33 C33 VCC ST3 DT33 CL3 B31 B32 B33 B34 OE3 B35 B36 B37 B38 DT43 1 S H IF T R E G IS T E R IC43 C43 VCC ST3 DT43 CL3 B41 B42 B43 B44 OE3 B45 B46 B47 B48 DT53 RR11 RR12 RR13 RR14 RR15 RR16 RR17 RR18 RG11 RG12 RG13 RG14 RB11 RB12 RB13 RB14 RR21 RR22 RR23 RR24 RG21 RG22 RG23 RG24 RB21 RB22 RB23 RB24 RR31 RR32 RR33 RR34 RG31 RG32 RG33 RG34 RB31 RB32 RB33 RB34 RR41 RR42 RR43 RR44 RG41 RG42 RG43 RG44 RB41 RB42 RB43 RB44 RG15 RG16 RG17 RG18 RB15 RB16 RB17 RB18 RR25 RR26 RR27 RR28 RG25 RG26 RG27 RG28 RB25 RB26 RB27 RB28 RR35 RR36 RR37 RR38 RG35 RG36 RG37 RG38 RB35 RB36 RB37 RB38 RR45 RR46 RR47 RR48 RG45 RG46 RG47 RG48 RB45 RB46 RB47 RB48


(10)

Gambar 3.8 (Lanjutan). Untai pengendali baris dengan menggunakan shift register.

3.1.4. Perancangan dan Realisasi Modul Penampil Teks Bergerak

Modul ini terdiri dari delapan buah dot matrix RGB ukuran 7 baris x 8 kolom yang dihubungkan secara kaskade seperti yang ditunjukkan pada Gambar 3.9, berfungsi untuk menampilkan teks berikut warnanya dan warna latar belakang sesuai dengan masukan data sebelumnya pada program interface. Namun jika diinginkan penampil yang lebih panjang, modul ini dapat juga ditambah dengan melakukan expand hingga lima belas dot matrix RGB. Panjang sebanyak delapan buah dot matrix RGB ini disesuaikan dengan standar umum yang ada, yaitu kelipatan empat. Panjang minimal yang digunakan pada perancangan adalah delapan dot matrix RGB, yaitu 64 kolom x 7 baris.

Gambar 3.9. Hubungan kaskade dot matrix RGB 64 kolom x 7 baris.

Pemilihan dot matrix RGB ini didasarkan pada latar belakang yang telah dijelaskan sebelumnya. Satu piksel pada dot matrix RGB sesuai namanya terdiri dari tiga warna dasar, yaitu red, green, dan blue ditunjukkan pada Gambar 3.10, yang dapat dikombinasi sehingga dapat menghasilkan empat warna lain, yaitu cyan, magenta, yellow, dan white. Pemilihan warna teks dan latar belakang didasarkan pada tujuh pilihan warna yang tersedia tersebut.

1 S H IF T R E G IS T E R IC51 C51 VCC ST1 DT51 CL1 R51 R52 R53 R54 OE1 R55 R56 R57 R58 DT61 1 S H IF T R E G IS T E R IC61 C61 VCC ST1 DT61 CL1 R61 R62 R63 R64 OE1 R65 R66 R67 R68 DT71 1 S H IF T R E G IS T E R IC71 C71 VCC ST1 DT71 CL1 R71 R72 R73 R74 OE1 R75 R76 R77 R78 DT81 1 S H IF T R E G IS T E R IC81 C81 VCC ST1 DT81 CL1 R81 R82 R83 R84 OE1 R85 R86 R87 R88 DT91 1 S H IF T R E G IS T E R IC52 C52 VCC ST2 DT52 CL2 G51 G52 G53 G54 OE2 G55 G56 G57 G58 DT62 1 S H IF T R E G IS T E R IC62 C62 VCC ST2 DT62 CL2 G61 G62 G63 G64 OE2 G65 G66 G67 G68 DT72 1 S H IF T R E G IS T E R IC82 C82 VCC ST2 DT82 CL2 G81 G82 G83 G84 OE2 G85 G86 G87 G88 DT92 1 S H IF T R E G IS T E R IC72 C72 VCC ST2 DT72 CL2 G71 G72 G73 G74 OE2 G75 G76 G77 G78 DT82 1 S H IF T R E G IS T E R IC53 C53 VCC ST3 DT53 CL3 B51 B52 B53 B54 OE3 B55 B56 B57 B58 DT63 1 S H IF T R E G IS T E R IC63 C63 VCC ST3 DT63 CL3 B61 B62 B63 B64 OE3 B65 B66 B67 B68 DT73 1 S H IF T R E G IS T E R IC73 C73 VCC ST3 DT73 CL3 B71 B72 B73 B74 OE3 B75 B76 B77 B78 DT83 1 S H IF T R E G IS T E R IC83 C83 VCC ST3 DT83 CL3 B81 B82 B83 B84 OE3 B85 B86 B87 B88 DT93 RR51 RR52 RR53 RR54 RG51 RG52 RG53 RG54 RB51 RB52 RB53 RB54 RR61 RR62 RR63 RR64 RG61 RG62 RG63 RG64 RB61 RB62 RB63 RB64 RR71 RR72 RR73 RR74 RG71 RG72 RG73 RG74 RB71 RB72 RB73 RB74 RR81 RR82 RR83 RR84 RG81 RG82 RG83 RG84 RB81 RB82 RB83 RB84 RR55 RR56 RR57 RR58 RG55 RG56 RG57 RG58 RB55 RB56 RB57 RB58 RR65 RR66 RR67 RR68 RG65 RG66 RG67 RG68 RB65 RB66 RB67 RB68 RR75 RR76 RR77 RR78 RG75 RG76 RG77 RG78 RB75 RB76 RB77 RB78 RR85 RR86 RR87 RR88 RG85 RG86 RG87 RG88 RB85 RB86 RB87 RB88 Dot matrixRGB(1) 7 baris x 8 kolom

8 Dot

matrixRGB(2) 7 baris x 8 kolom

………

Dot

matrixRGB(8) 7 baris x 8 kolom


(11)

Gambar 3.10. Komposisi satu piksel dot matrix RGB

Gambar untuk satu dot matrix RGB lebih lengkapnya dapat dilihat pada lampiran D bagian Gambar Koneksi Pin. Sesuai dengan gambar tersebut, yang menjadi kaki common pada LED yang berbeda warna untuk satu baris adalah kaki anoda, oleh sebab itu kaki common anoda tersebut dihubungkan ke kendali baris, dan kaki common katoda untuk satu kolom LED dengan warna yang sama dihubungkan ke kendali kolom yang bersesuaian. Spesifikasi untuk dot matrix RGB yang digunakan dapat dilihat pada lampiran D bagian Tabel Karakteristik Elektrik.

Arus yang dilewatkan untuk tiap warna dibuat berbeda, yaitu untuk mendapatkan warna dengan intensitas yang sama untuk ketiga warna dasar di tiap piksel yang digunakan, agar ketika ketiga warna dasar tersebut dinyalakan, diharapkan dapat memiliki intensitas cahaya yang sama sehingga dapat dimunculkan warna white. Perhitungan nilai resistansi yang digunakan untuk tiap kolom tiap warna mengacu pada lampiran C bagian Grafik intensitas cahaya. Pada grafik lampiran terlihat bahwa dengan menurunkan arus typical menjadi setengah, maka intensitas cahaya typical-nya juga turun menjadi setengahnya. Hal ini hanya diterapkan untuk warna hijau, karena sesuai datasheet dot matrix yang digunakan warna hijau memiliki intensitas cahaya dua kali lebih besar dibanding dua warna yang lain. Nilai resistor yang dipasang untuk tiap warna dasar dapat dihitung dan ditentukan dengan persamaan sebagai berikut:

(

)

warna warna typ warna

I

duty cycle V

Vi

R = − . .

………..……(3.4)

(

)

29,52Ohm 30Ohm

mA 15

. V 9 , 1

5 17

≈ =

− =

red

R

(

)

32

,

38

Ohm

33

Ohm

mA

5

,

7

.

V

3

,

3

5

17

=

=

green

R

(

)

16,19Ohm 18Ohm

mA 15

. V 3 , 3

5− 17 = ≈

= blue


(12)

Pada kenyataannya, nilai-nilai resistansi yang didapat dari perhitungan sulit untuk didapatkan. Oleh sebab itu nilai yang ada pada sisi paling kanan digunakan sebagai nilai pendekatan dari nilai-nilai yang didapat dari perhitungan.

Pada perancangan digunakan nilai duty cycle-nya adalah satu per tujuh, karena metode yang digunakan adalah scanning baris, dengan jumlah baris yang digunakan ada tujuh. Perhitungan arus maksimum yang digunakan untuk penampil teks bergerak sudah dilakukan pada bagian pembahasan kendali baris persamaan (3.2), yaitu maksimal sebesar 2,4 A. Nilai arus yang dibutuhkan tersebut tidak terlalu besar karena perangkat keras yang dirancang menggunakan kendali yang dilakukan secara scanning, sehingga meminimalkan arus yang digunakan.

Nilai daya maksimum yang digunakan oleh penampil dengan duty cycle satu per tujuh dapat dihitung dengan menggunakan persamaan di bawah ini.

dot penampil V I

P = . 64 ……….(3.5)

A 2,4 . V 5 = penampil P Watt 12 = penampil P

Penampil teks bergerak RGB yang digunakan disusun dari 8 buah dot matrix RGB ukuran 7 baris x 8 kolom yang disusun memanjang ke samping, dan terhubung dengan MOSFET dan resistor pada shift register yang bersesuaian. Untai penampil yang digunakan ditunjukkan pada Gambar 3.11.

Gambar 3.11. Untai penampil teks bergerak RGB.

B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM1 B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM2 B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM3 B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM4

B

7 B6 B5 G11

G 1 2 G 1 3 G 1 4 G 1 5 G 1 6 G 1 7 G 1 8 B

4 B3 B2 B1 B7 B6 B5 G21

G 2 2 G 2 3 G 2 4 G 2 5 G 2 6 G 2 7 G 2 8 B

4 B3 B2 B1 B7 B6 B5 G31

G 3 2 G 3 3 G 3 4 G 3 5 G 3 6 G 3 7 G 3 8 B

4 B3 B2 B1 B7 B6 B5 G41

G 4 2 G 4 3 G 4 4 G 4 5 G 4 6 G 4 7 G 4 8 B

4 B3 B2 B1

B 1 1 B 1 2 B 1 3 B 1 4 B 1 5 B 1 6 B 1 7 B 1 8 R 1 1 R 1 2 R 1 3 R 1 4 R 1 5 R 1 6 R 1 7 R 1 8 R 2 8 R 2 7 R 2 6 R 2 5 R 2 4 R 2 3 R 2 2 R 2 1 B 2 8 B 2 7 B 2 6 B 2 5 B 2 4 B 2 3 B 2 2 B 2 1 R 3 8 R 3 7 R 3 6 R 3 5 R 3 4 R 3 3 R 3 2 R 3 1 B 3 8 B 3 7 B 3 6 B 3 5 B 3 4 B 3 3 B 3 2 B 3 1 R 4 8 R 4 7 R 4 6 R 4 5 R 4 4 R 4 3 R 4 2 R 4 1 B 4 8 B 4 7 B 4 6 B 4 5 B 4 4 B 4 3 B 4 2 B 4 1 B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM5 B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM6 B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM7 B K 1 B K 2 B K 3 B K 4 B K 5 B K 6 B K 7 B K 8 R K 1 R K 2 R K 3 R K 4 R K 5 R K 6 R K 7 R K 8 B 1 B 2 B 3 B 4 G K 8 G K 7 G K 6 G K 5 G K 4 G K 3 G K 2 G K 1 B 5 B 6 B 7 B 8

DOT MATRIX RGB 8x8

DM8 B 7 B 6 B 5 G 5 1 G 5 2 G 5 3 G 5 4 G 5 5 G 5 6 G 5 7 G 5 8 B 4 B 3 B 2 B 1 B 7 B 6 B 5 G 6 1 G 6 2 G 6 3 G 6 4 G 6 5 G 6 6 G 6 7 G 6 8 B 4 B 3 B 2 B 1 B 7 B 6 B 5 G 7 1 G 7 2 G 7 3 G 7 4 G 7 5 G 7 6 G 7 7 G 7 8 B 4 B 3 B 2 B 1 B 7 B 6 B 5 G 8 1 G 8 2 G 8 3 G 8 4 G 8 5 G 8 6 G 8 7 G 8 8 B 4 B 3 B 2 B 1 R 5 8 R 5 7 R 5 6 R 5 5 R 5 4 R 5 3 R 5 2 R 5 1 B 5 8 B 5 7 B 5 6 B 5 5 B 5 4 B 5 3 B 5 2 B 5 1 R 8 8 R 8 7 R 8 6 R 8 5 R 8 4 R 8 3 R 8 2 R 8 1 B 8 8 B 8 7 B 8 6 B 8 5 B 8 4 B 8 3 B 8 2 B 8 1 R 7 8 R 7 7 R 7 6 R 7 5 R 7 4 R 7 3 R 7 2 R 7 1 B 7 8 B 7 7 B 7 6 B 7 5 B 7 4 B 7 3 B 7 2 B 7 1 R 6 8 R 6 7 R 6 6 R 6 5 R 6 4 R 6 3 R 6 2 R 6 1 B 6 8 B 6 7 B 6 6 B 6 5 B 6 4 B 6 3 B 6 2 B 6 1


(13)

3.2. Perancangan dan Realisasi Perangkat Lunak Sistem

Bagian ini menjelaskan tentang perancangan dan realisasi perangkat lunak sistem. Perangkat lunak sistem terdiri dari dua bagian, yaitu program interface dan program mikrokontroler. Kedua program tersebut menggunakan bahasa pemrograman yang berbeda, program interface dibuat dengan bahasa pemrograman Visual Basic, sedangkan program mikrokontroler dibuat dengan bahasa pemrograman C.

Program interface digunakan oleh pengguna untuk menuliskan data teks yang akan dikirimkan, mengatur pengaturan memori penyimpanan data, animasi, warna teks dan latar belakang, dan pengiriman data keseluruhan.

Program mikrokontroler digunakan untuk mengendalikan proses pengendalian baris dan kolom pada sistem penampil teks bergerak RGB, sehingga data teks yang ditampilkan sesuai dengan yang diharapkan.

3.2.1. Perancangan dan Realisasi Program Interface

Program interface merupakan suatu program untuk tampilan yang digunakan pengguna untuk menuliskan atau mengubah data teks, melakukan pengaturan memori penyimpanan, animasi, warna teks dan latar belakang, dan mengirimkan keseluruhan data. Proses kerja dari program interface mengacu pada diagram alir program yang ditunjukkan pada Gambar 3.12.

Gambar 3.12. Diagram alir program interface.

Mulai

Inisialisasi tampilan awal

ubah teks, animasi,

warna teks dan latar belakang,

atau memori penyimpanan

Ya

Tidak Ya

Selesai Keluar kirim

Tidak


(14)

Program interface tidak harus aktif setiap saat, program ini hanya perlu diaktifkan pada saat pengguna ingin melakukan perubahan data, yang meliputi teks, warna, memori penyimpanan, dan animasi.

Setiap kali program interface diaktifkan atau dibuka, maka program akan melakukan inisialisasi data dan tampilan awal sebagai standar pengaturan agar program siap untuk digunakan. Setelah proses tersebut berlangsung pengguna dapat melakukan pengubahan data teks, warna teks atau latar belakang, memori penyimpanan, maupun animasi. Data yang sudah siap untuk dikirim akan terlebih dahulu dicek oleh program, jika data valid maka data segera dikirimkan melalui komunikasi serial ke mikrokontroler, sebaliknya bila data tidak valid maka pengguna diharuskan melakukan pengaturan ulang. Data dianggap valid apabila data teks yang dimasukkan pengguna tidak melebihi 50 karakter. Setelah proses pengiriman, pengguna dapat menutup aplikasi maupun kembali melakukan pengaturan data. Berikut adalah tampilan program interface yang dibuat, ditunjukkan pada Gambar 3.13.

Gambar 3.13. Tampilan program interface.

Gambar di atas merupakan tampilan ketika aplikasi mula-mula diaktifkan, tombol kirim belum ada karena belum ada teks yang dituliskan pada kotak tempat menulis teks. Penempatan tombol kirim berada tepat di bawah tombol keluar dan

Pengaturan

warna teks

Pengaturan

warna latar belakang

Pengaturan

memori

Pengaturan

animasi Tempat

menulis teks

Sisa ruang kosong karakter yang tersedia

Tombol keluar

Contoh tampilan berdasar

pengaturan warna teks dan


(15)

textbox_TextChanged()

{ label_remain= 50 – TextLength

If(TextLength == 0) hide(button_kirim) Else

show(button_kirim) }

application_Open()

{ list_textcolor_1 = “Red”

list_textcolor_2 = “Red” list_textcolor_3 = “Red” list_backcolor_1 = “No color” list_backcolor_2 = “No color” list_memory = “RAM”

list_animation = “Shift Left” button_kirim = hide()

}

letaknya sejajar. Saat ada teks yang dituliskan pada kotak teks, maka tombol kirim akan muncul. Tombol kirim akan kembali tidak terlihat apabila isi kotak teks kosong. Tampilan mula-mula aplikasi dapat terjadi demikian karena pada saat awal program melakukan inisialisasi untuk warna teks dan latar belakang, memori, dan animasi. Pengaturan tersebut merupakan pengaturan awal standar, yang akan selalu menghasilkan tampilan demikian setiap kali aplikasi diaktifkan. Program melakukan inisialisasi tampilan setiap kali aplikasi diaktifkan dengan algoritma yang ditunjukkan pada Kode 3.1.

Kode 3.1. Inisialisasi tampilan awal aktif.

Pada tampilan aplikasi terdapat sebuah label bertuliskan “Remain: 50”, ini merupakan label penunjuk sisa karakter, yang fungsinya sebagai indikator bagi pengguna untuk mengetahui sisa ruang kosong karakter yang tersedia. Proses pengisian nilai sisa karakter ini berada didalam fungsi penerimaan data karakter pada kotak teks yang ditunjukkan pada Kode 3.2.

Kode 3.2. Penerimaan data karakter pada kotak teks.

Setiap kali pengguna menuliskan suatu karakter maka nilai sisa karakter ini akan berkurang satu, jadi sisa karakter ini dapat bernilai positif atau nol. Positif terjadi bila


(16)

jumlah data teks yang dituliskan kurang dari 50, nol jika jumlah data teks sama dengan 50. Terdapat proteksi saat nilai sisa karakter mencapai nol, kotak teks tidak dapat diisi kembali, tujuannya adalah agar karakter yang dituliskan tidak melebihi 50 karakter.

Ada beberapa bagian yang nilainya telah dideklarasi terdahulu di bagian properti sistem, antara lain adalah warna dari form aplikasi dan contoh tampilan, daftar isi dari memori, animasi, warna teks, dan warna latar belakang. Terdapat tujuh pilihan memori penyimpanan yang dapat digunakan, deklarasi isi dari daftar memori yang tersedia ditunjukkan pada Tabel 3.3.

Tabel 3.3. Daftar isi pilihan memori penyimpanan. Indeks Nama Memori

0 EEPROM 1 1 EEPROM 2 2 EEPROM 3 3 EEPROM 4 4 EEPROM 5 5 EEPROM 6 6 EEPROM 7 7 EEPROM 8

8 RAM

Setiap kali ada perubahan pada memori yang dipilih maka secara otomatis program menyimpan indeks dari nama memori yang dipilih dari daftar, sehingga tidak perlu ada fungsi pada kode program untuk mendeteksi memori yang dipilih oleh pengguna. Lain halnya dengan daftar animasi yang pemilihannya terkait erat dengan jumlah karakter dari teks yang dimasukkan. Terdapat lima pilihan animasi yang tersedia, ditunjukkan pada Tabel 3.4.

Tabel 3.4. Daftar isi pilihan animasi dan persyaratan penggunaannya.

Indeks Nama Animasi Syarat Penggunaan

0 Shift Left Tersedia untuk jumlah karakter pada kotak teks dari 1 sampai 50 1 Static

Tersedia apabila jumlah karakter yang dituliskan pada kotak teks tidak melebihi 10 karakter 2 Blink

3 Scroll Down 4 Show Horizontal


(17)

list_anim_Open()

{ if(TextLength > 10) hide(“Static”) hide(“Blink”)

hide(“Scroll Down”) hide(“Show Horizontal”) Else

show(“Static”) show(“Blink”)

show(“Scroll Down”) show(“Show Horizontal”) }

Proses pendeteksian jumlah karakter yang ada pada kotak teks, terjadi setiap kali saat pengguna membuka daftar animasi untuk memilih. Proses ini dilakukan dengan mengikuti algoritma yang ditunjukkan pada Kode 3.3.

Kode 3.3. Pemilihan animasi pada daftar.

Setiap kali ada perubahan pada animasi yang dipilih maka secara otomatis program menyimpan indeks dari nama animasi yang dipilih pada daftar. Fungsi yang ada pada Kode 3.3 digunakan sebagai proteksi yang berkaitan dengan jumlah karakter yang ada pada kotak teks, sesuai dengan persyaratan yang ada pada Tabel 3.4. Pada saat pengguna membuka daftar animasi dan jumlah karakter pada saat itu kurang dari atau sama dengan sepuluh maka nama animasi pada indeks satu sampai empat tetap ditampilkan, sebaliknya bila jumlah karakter pada saat itu lebih besar dari sepuluh maka nama animasi pada indeks satu sampai empat disembunyikan.

Pengaturan untuk warna teks dan latar belakang tampilan dilakukan dalam dua tahapan, yaitu pemilihan banyaknya variasi warna dan jenis warna yang ingin digunakan. Banyaknya variasi warna hanya satu saja yang dapat dipilih dari beberapa pilihan yang tersedia, yaitu maksimal tiga untuk warna teks dan dua untuk warna latar belakang. Jumlah daftar warna yang tertampil sesuai dengan pilihan banyaknya variasi warna yang dipilih. Daftar warna diletakkan tepat di sebelah kanan pilihan jumlah variasi warna, yang hanya akan tertampil pada saat pilihan jumlah variasi warna yang ada tepat di sebelah kirinya dipilih, konsepnya sesuai dengan petunjuk yang ada pada Tabel 3.5.


(18)

optionbutton_tc1_Select()

{ show(list_tc1)

hide(list_tc2) hide(list_tc3) }

optionbutton_tc2_Select()

{ show(list_tc2)

hide(list_tc3) }

optionbutton_tc3_Select()

{ show(list_tc3)

}

optionbutton_bc1_Select()

{ show(list_bc1)

hide(list_bc2) }

optionbutton_bc2_Select()

{ show(list_bc2)

}

Tabel 3.5. Hubungan pemilihan jumlah variasi warna dan daftar yang tertampil.

Keperluan Jumlah Variasi Warna Daftar Warna yang Tertampil

Warna teks 1 Teks 1

2 Teks 1 dan 2

3 Teks 1, 2, dan 3 Warna latar belakang 1 Latar belakang 1

2 Latar belakang 1 dan 2

Konsep yang ada pada Tabel 3.5 digunakan sebagai algoritma untuk mengatur hubungan pemilihan jumlah variasi warna dan daftar yang ditampilkan. Penggunaan algoritma ini jelas terlihat ketika pilihan banyaknya variasi warna dipilih yang ditunjukkan pada Kode 3.4.

Kode 3.4. Penampilan daftar warna berdasarkan banyak variasi warna yang dipilih.

Pengubahan jenis warna yang dipilih dari daftar tidak akan berpengaruh terhadap tampilan pilihan banyaknya variasi warna, karena daftar warna yang tertampil bergantung pada banyaknya variasi warna yang dipilih. Pengubahan warna pada daftar hanya akan berpengaruh terhadap warna dari gambar contoh tampilan yang ada pada form, yaitu dengan mengatur nilai data RGB-nya dari 0 sampai 255. Dalam hal ini yang dipakai adalah nilai minimal atau maksimalnya saja, yaitu 0 atau 255. Warna yang ditampilkan pada gambar sesuai kombinasi nilai data RGB-nya ditunjukkan pada Tabel 3.6.


(19)

Tabel 3.6. Hubungan nilai data RGB dan warna yang ditampilkan.

Kombinasi Nilai Warna Warna yang

Ditampilkan

R G B

255 0 0 Red

0 255 0 Green

0 0 255 Blue

0 255 255 Cyan 255 0 255 Magenta 255 255 0 Yellow 255 255 255 White

0 0 0 No Color

Konsep yang digunakan pada daftar warna ini sama seperti yang digunakan pada daftar memori penyimpanan dan animasi, program secara otomatis menyimpan nilai indeks dari warna yang dipilih. Urutan indeks dari daftar warna ditunjukkan pada Tabel 3.7.

Tabel 3.7. Daftar warna berdasarkan urutan indeks.

Indeks Warna

0 Red 1 Green 2 Blue 3 Cyan 4 Magenta 5 Yellow 6 White 7 No Color

Data warna yang nantinya akan dikirimkan ke mikrokontroler tidak sama seperti yang digunakan pada memori penyimpanan dan animasi. Data memori penyimpanan dan animasi dikirimkan dalam bentuk karakter angka, sedangkan data warna dikirimkan dalam bentuk karakter huruf. Oleh sebab itu pada program diperlukan suatu fungsi untuk mengecek nilai indeks dari warna yang dipilih, kemudian menyimpannya dalam bentuk karakter huruf yang bersesuaian dengan warnanya. Algoritma dari fungsi tersebut ditunjukkan pada Kode 3.5.


(20)

cek_color()

{ If (index_color == 0)

set_color(255,0,0) data_color = ‘r’ Else If(index_color == 1)

set_color(0,255,0) data_color = ‘g’ Else If(index_color == 2)

set_color(0,0,255) data_color = ‘b’ Else If(index_color == 3)

set_color(0,255,255) data_color = ‘c’ Else If(index_color == 4)

set_color(255,0,255) data_color = ‘m’ Else If(index_color == 5)

set_color(255,255,0) data_color = ‘y’ Else If(index_color == 6)

set_color(255,255,255) data_color = ‘w’

}

Send_Serial_Data(alldata)

{ port_name = COM1

baudrate = 9600 parity = none data_bit = 8 stop_bit = 1

serial_port_send(alldata) }

Kode 3.5. Hubungan indeks warna dan data warna.

Setelah semua pengaturan selesai dilakukan, pengguna hanya perlu menekan tombol kirim untuk mengirimkan data ke mikrokontroler. Data dikirimkan dari komputer ke mikrokontroler menggunakan komunikasi serial RS232. Untuk dapat melakukan pengiriman data maka diperlukan fungsi untuk menangani inisialisasi port dan pengiriman data, yang ditunjukkan pada Kode 3.6, sedangkan fungsi deteksi penekanan tombol kirim ditunjukkan pada Kode 3.7.


(21)

button_send_Click() {

Send_serial_data(alldata) Message(“Success”)

}

Kode 3.7. Deteksi penekanan tombol kirim.

Ketika tombol kirim ditekan maka fungsi pada Kode 3.7 akan dijalankan, data akan dikirimkan dan terdapat pesan bahwa data pengaturan telah berhasil dikirimkan. Pada Kode 3.7, “alldata” menunjuk pada keseluruhan data pengaturan yang akan dikirimkan, yang terdiri dari indeks memori penyimpanan, indeks animasi, warna teks, warna latar belakang, jumlah karakter teks, dan data teks. Format dari data serial yang dikirimkan ditunjukkan pada Gambar 3.14.

Gambar 3.14. Format dari data yang dikirimkan secara serial.

Keseluruhan data yang dikirim dikemas dalam suatu tipe data string / array karakter. Nilai dari indeks memori dan animasi adalah suatu karakter angka, nilai data warna teks dan latar belakang adalah suatu karakter huruf, nilai dari jumlah karakter adalah suatu karakter angka dengan array[8] menyimpan nilai puluhan, dan array[9]

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] ……… dst.

Index memori

Data warna teks (tc1, tc2, dan tc3)

Data warna latar belakang (bc1, dan bc2)

Jumlah karakter (puluhan, dan satuan)

Data karakter Index animasi

array data pengaturan

Mikrokontroler


(22)

menyimpan nilai satuannya. Array yang berikutnya digunakan untuk menampung data teks yang dimasukkan oleh pengguna, yang panjangnya dapat bervariasi, mulai dari 1 hingga 50. Jadi panjang array maksimal keseluruhan adalah 60 array, 10 array pertama untuk data pengaturan, dan 50 array terakhir untuk data teks.

Tombol keluar pada tampilan digunakan untuk keluar dari aplikasi. Program interface ini merupakan program tambahan, tidak mutlak harus ada namun keberadaannya sangat membantu dan memudahkan pengguna dalam melakukan pengaturan keseluruhan data. Program tidak perlu aktif setiap saat, hanya perlu dijalankan saat pengguna ingin melakukan perubahan data dan mengirimkannya ke memori penyimpanan yang diinginkan saja. Setelah proses pengaturan dan pengiriman keseluruhan selesai dilakukan, program dapat dinon-aktifkan.

3.2.2. Perancangan dan Realisasi Program Mikrokontroler

Program mikrokontroler merupakan program utama dari keseluruhan sistem, tidak seperti program interface yang keberadaanya hanya sebagai tambahan. Program mikrokontroler merupakan program yang mutlak harus ada, karena program ini berisi algoritma yang mengatur keseluruhan fungsi dan kendali dari sistem.

Data warna, memori, animasi, dan teks disimpan dalam memori yang ada di dalam mikrokontroler, sebagian besar data disimpan dalam memori penyimpanan primer dan sebagian lagi disimpan dalam memori penyimpanan sekunder. Memori penyimpanan primer yang dimaksud adalah Electrically Erasable Programmable Read-Only Memory (EEPROM), sedangkan memori penyimpanan sekunder yang dimaksud adalah Random Access Memory (RAM). Memori penyimpanan primer digunakan sebagai tempat penyimpanan permanen, yang akan tetap tersimpan meskipun catu daya dimatikan. Sedangkan memori penyimpanan sekunder digunakan sebagai tempat penyimpanan sementara, yang akan hilang ketika catu daya dimatikan.

Program mikrokontroler terdiri dari dua bagian, yaitu program utama dan program interupsi. Program utama berisi kendali untuk baris dan pengiriman data untuk kendali kolom, sedangkan program interupsi digunakan untuk menangani interupsi pengiriman data dari komputer ke mikrokontroler, dan menyimpannya ke dalam memori yang bersesuaian. Pengendalian baris lebih mudah dilakukan dibandingkan pengendalian kolom, karena dalam satu kali proses dapat mengendalikan tujuh baris secara bersamaan. Sedangkan pengendalian kolom membutuhkan teknik yang lebih


(23)

rumit, karena pengisian datanya dilakukan secara serial dan nilai tiap baris penampil umumnya berbeda, sehingga pengubahannya lebih sering dilakukan. Proses kerja dari program mikrokontroler mengacu pada diagram alir program yang ditunjukkan pada Gambar 3.15.

Gambar 3.15.Diagram alir program mikrokontroler.

Setiap kali mikrokontroler dihidupkan, maka program akan selalu dimulai dengan insialisasi variabel penyimpan data. Tujuan inisialisasi tersebut adalah menyiapkan variabel-variabel yang akan digunakan program untuk proses perhitungan dan penyimpanan data sementara. Proses kemudian dilanjutkan ke pembacaan data yang tersimpan pada EEPROM, kemudian menyalin data tersebut ke array penampungan data sementara. Algoritma pengisian data dari EEPROM ke array penampungan sementara ditunjukkan pada Kode 3.8.

Mulai

Inisialisasi variabel

penyimpan data

Baca data dari EEPROM

dan salin ke array

Cek dan inisialisasi

index penyimpanan data

Proses tampil:

Teks EEPROM 1

Teks EEPROM 2

Teks EEPROM 3 Teks EEPROM 4

Teks EEPROM 5

Teks EEPROM 6 Teks EEPROM 7

Teks EEPROM 8 Teks RAM Interupsi

terima data serial

Salin data ke


(24)

eeprom_to_array(index) {

puluhan = data_eeprom[index][8] satuan = data_eeprom[index][9] ulang = puluhan x 10 + satuan i=0

repeat(from i to (ulang + 9))

{ data_array[i] = data_eeprom[index][i]

i=i+1 }

}

init_specific_data()

{ index_memori = data_array[1]

index_animasi = data_array[2] warna_teks[0] = data_array[3] warna_teks[1] = data_array[4] warna_teks[2] = data_array[5]

warna_background[0] = data_array[6] warna_background[1] = data_array[7]

jml_teks = data_array[8] x 10 + data_array[9] i=0

repeat(from i to (i < jml_teks))

{ data_teks[i]=data_array[i + 10]

i=i+1 }

}

Kode 3.8. Penyalinan data EEPROM ke array penampung sementara.

Setelah penyalinan data dari EEPROM ke array penampung sementara selesai dilakukan, maka langkah selanjutnya adalah pemeriksaan dan inisialisasi indeks penyimpan data. Pada langkah ini, data yang sudah ditampung dalam array penampung sementara dipecah ke tempat penampung khusus, tujuannya adalah menempatkan data pada tempat yang bersesuaian. Tempat penampung khusus tersebut mencakup data warna teks dan latar belakang, indeks animasi dan memori penyimpanan, serta data teks. Proses inisialisasi masing-masing tempat penyimpanan khusus tesebut ditunjukkan pada Kode 3.9.

Kode 3.9. Penyalinan data array penampung sementara ke data penampung khusus.

Dengan menempatkan data pada tempat penyimpanan khusus yang bersesuaian, maka akan memudahkan pembuat program dalam melakukan proses penyeleksian, dan kendali untuk baris dan kolom. Langkah selanjutnya adalah mengisi nilai array


(25)

A b …. Array data teks

MSB

Nilai satu elemen array penampil

Nilainya adalah 7F heksa

penampil, array penampil berbeda dengan array untuk data teks. Perbedaannya adalah satu karakter pada data teks hanya membutuhkan satu elemen saja, sedangkan satu karakter untuk penampil membutuhkan enam buah elemen yang masing-masing nilainya elemennya dapat berbeda-beda. Satu elemen pada data teks direpresentasikan pada penampil dalam enam buah elemen yang ditunjukkan pada Gambar 3.16. Dibutuhkan enam elemen karena satu karakter penampil membutuhkan ruang tujuh baris dan lima kolom, satu kolom tersisa digunakan untuk spasi.

Gambar 3.16. Representasi array data teks ke array penampil.

Tipe data untuk masing-masing elemen adalah karakter, namun yang membuat berbeda adalah kegunaannya. Satu elemen array data teks digunakan untuk menyimpan satu karakter, sedangkan enam elemen array penampil digunakan untuk menyimpan nilai-nilai tampilan dari karakter tersebut. Contoh representasi dari array data teks ke array penampil ditunjukkan pada Gambar 3.17. Nilai tiap elemen dapat dituliskan dalam bentuk biner maupun heksadesimal.

Gambar 3.17. Contoh representasi isi array data teks ke array penampil.

Karena enam elemen array penampil digunakan untuk merepresentasikan satu karakter pada data teks, maka array penampil membutuhkan tempat yang lebih besar dibanding array data teks. Perbandingan kapasitas array data teks dibandingkan array

[0] [1] …. Array data teks

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [9] [10] ….

Array penampil Elemen untuk spasi Elemen untuk spasi


(26)

penampil adalah satu berbanding enam. Nilai Least Significant Bit (LSB) data pada penampil dapat diisi dengan bebas karena tidak digunakan, namun untuk bit yang lain tidak boleh terjadi kesalahan dalam pengisian nilainya. Nilai-nilai tampilan dari sebuah karakter dan indeks dari dari daftar karakter digunakan program untuk pengisian data tampilan, sehingga karakter yang tertampil sesuai dengan karakter yang tersimpan pada data teks.

Setelah pengisian semua data selesai dilakukan, program berlanjut ke fungsi penampilan, yaitu mencakup kendali untuk baris dan kendali kolom. Proses pengendalian untuk penampil dilakukan dengan metode scanning baris. Pengendalian baris lebih mudah dilakukan karena dapat dilakukan secara paralel, tujuh baris dapat dikendalikan secara bersamaan. Sedangkan pengendalian kolom lebih sulit dilakukan karena menggunakan teknik pengiriman data serial, dengan 64 buah kolom yang dikendalikan untuk masing-masing warna dasar RGB.

Pengendalian baris mengikuti syarat bahwa dalam setiap kondisi hanya diperbolehkan satu baris saja yang dalam kondisi hidup, dan baris yang lain harus dalam kondisi mati. Proses ini dilakukan secara bergantian mulai dari baris satu hingga baris tujuh, kemudian diulangi kembali mulai dari baris satu dan seterusnya, dengan proses pengendalian yang diulang-ulang selama beberapa waktu lamanya. Karena masukan kendali baris adalah aktif low, maka untuk menghidupkan suatu baris, pin yang terhubung dengan baris tersebut harus bernilai logika nol, dan baris yang lain bernilai logika satu. Kendali untuk baris mengikuti syarat yang ditunjukkan pada Tabel 3.8.

Tabel 3.8. Hubungan nilai PORT A dan baris yang aktif.

Nilai Biner PORT A(Kendali Baris) Baris yang Aktif

10111111 1

11011111 2

11101111 3

11110111 4

11111011 5

11111101 6

11111110 7

Meskipun proses pengendalian dilakukan secara scanning, namun nampak bahwa ketujuh baris seolah-olah menyala secara bersamaan, hal ini dikarenakan frekuensi scanning terjadi sangat cepat, sehingga mata manusia tidak dapat mendeteksi


(27)

selection_coloumn_data(line) {

case 1 : if((data_tampil[index] AND 80H) == 80H) set_color(text(line))

else

set_color(background(line))

case 2 : if((data_tampil[index] AND 40H) == 40H) set_color(text(line))

else

set_color(background(line))

case 3 : if((data_tampil[index] AND 20H) == 20H) set_color(text(line))

else

set_color(background(line))

case 4 : if((data_tampil[index] AND 10H) == 10H) set_color(text(line))

else

set_color(background(line))

case 5 : if((data_tampil[index] AND 08H) == 08H) set_color(text(line))

else

set_color(background(line))

case 6 : if((data_tampil[index] AND 04H) == 04H) set_color(text(line))

else

set_color(background(line))

case 7 : if((data_tampil[index] AND 02H) == 02H) set_color(text(line))

else

set_color(background(line)) }

perubahan tersebut. Pada saat awal program dijalankan, ketujuh baris harus dalam kondisi mati, dan hanya diaktifkan saat akan dihidupkan saja. Proses pengisian data kolom dilakukan dengan melakukan perbandingan antara data penampil dengan suatu data menggunakan logika AND. Algoritma seleksi data kolom penampil ditunjukkan pada Kode 3.10, tujuan menggunakan perbandingan logika AND adalah untuk mengetahui nilai bit dari data yang akan dicek, karena nilai tiap bit data menunjukkan kondisi lampu yang sebenarnya dari baris dan kolom penampil yang bersesuaian.

Kode 3.10. Prosedur seleksi data kolom penampil.

Prosedur set_color(color) digunakan untuk pengaturan data warna dari kolom penampil. Nilai dari text(line) dan background(line) adalah suatu karakter yang merepresentasikan data warna. Saat prosedur set_color(color) dipanggil, maka program


(28)

set_color(color) {

case ‘r’ : data_r = 0, data_g = 1, data_b = 1 case ‘g’ : data_r = 1, data_g = 0, data_b = 1 case ‘b’ : data_r = 1, data_g = 1, data_b = 0 case ‘c’ : data_r = 1, data_g = 0, data_b = 0 case ‘m’ : data_r = 0, data_g = 1, data_b = 0 case ‘y’ : data_r = 0, data_g = 0, data_b = 1 case ‘w’ : data_r = 0, data_g = 1, data_b = 1

clock_r = 1, clock_g = 1, clock_b = 1 delay(1us)

clock_r = 0, clock_g = 0, clock_b = 0 delay(1us)

}

akan menginisialisasi data warna dari teks maupun latar belakang yang bersesuaian. Algoritma dari prosedur set_color(color) ditunjukkan pada Kode 3.11.

Kode 3.11. Prosedur pengisian data warna kolom penampil.

Sama seperti kendali baris, kendali kolom juga bersifat aktif low. Oleh sebab itu untuk menghidupkan suatu warna maka nilai data warna tersebut harus bernilai logika nol, dan data warna lain bernilai logika satu. Pengubahan nilai clock bertujuan untuk menggeser nilai data sejauh satu bit, yaitu pada saat terjadi transisi nilai clock dari logika nol ke satu. Pada program, pergeseran data warna untuk R, G, dan B dapat dianggap dilakukan secara bersama-sama, karena selisih waktu terjadinya sangat sedikit. Pengisian data untuk kolom dilakukan sebanyak 64 kali, yang berarti setiap kali berganti kendali baris program harus melakukan pengisian data untuk kolom sebanyak 64 kali, dengan teknik pengisian data yang digeser, hal ini harus selalu dilakukan karena nilai data-data kolom untuk tiap baris penampil tidaklah selalu sama. Beberapa nama variabel yang digunakan sebagai kendali kolom dan hubungannya pin yang ada pada mikrokontroler ditunjukkan pada Tabel 3.9.


(29)

Tabel 3.9. Hubungan nama variabel dengan pin kendali pada mikrokontroler. Nama Variabel Pin Mikrokontroler

clock_g PORTB.0

strobe_g PORTB.1

data_g PORTB.2

output_enable_g PORTB.3

clock_r PORTC.0

strobe_r PORTC.1

data_r PORTC.2

output_enable_r PORTC.3

clock_b PORTC.4

strobe_b PORTC.5

data_b PORTC.6

output_enable_b PORTC.7

Pin kendali output enable nilainya tidak diubah-ubah selama jalannya program, pin ini bernilai logika satu pada saat inisialisasi awal variabel penyimpan data. Sedangkan pin kendali strobe nilainya diubah-ubah saat berganti baris penampil. Saat pin strobe bernilai logika satu, maka data keluaran shift register nilainya sama dengan data yang ada pada buffer shift register. Sebaliknya saat pin strobe bernilai logika nol, perubahan data pada buffer shift register tidak akan berpengaruh terhadap keluaran shift register, atau dapat dikatakan bahwa keluaran shift register masih merupakan data lama. Proses yang terjadi sebenarnya adalah data kolom yang dikirimkan ke shift register tidak dikeluaran langsung oleh shift register, melainkan ditampung terlebih dahulu di buffer shift register, pin strobe hanya perlu diaktifkan pada saat data sudah siap untuk dikeluarkan. Pin strobe dinon-aktifkan hanya pada saat terjadi pengisian data ke buffer shift register.

Teknik pengendalian dengan menggunakan scanning baris dilakukan dengan mengisi nilai semua data kolom terlebih dahulu, setelah itu memilih baris yang dihidupkan. Proses ini berlaku sama juga ketika akan menghidupkan baris yang lain. Pengendalian baris dan kolom ditentukan dari animasi yang akan ditampilkan, kombinasi pengaturan baris dan kolom yang berbeda-beda dapat menghasilkan tampilan animasi yang berbeda-beda pula. Animasi yang berbeda menggunakan algoritma penampilan yang berbeda pula. Algoritma untuk animasi indeks satu sampai empat pada Tabel 3.4 lebih mudah dibuat dibanding animasi indeks nol, karena variasi lebih banyak dilakukan pada pengaturan kendali baris. Sedangkan animasi pada indeks nol lebih banyak memvariasikan nilai data pada kolom, nilai data yang ditampilkan berubah


(30)

vertical_scanning()

{ i=0

Repeat(from i to 1000)

{ fill_colomn(line_1), strobe_all(on)

PORTA = 10111111b, delay(100us) strobe_all(off)

fill_colomn(line_2), strobe_all(on) PORTA = 11011111b, delay(100us) strobe_all(off)

fill_colomn(line_3), strobe_all(on) PORTA = 11101111b, delay(100us) strobe_all(off)

fill_colomn(line_4), strobe_all(on) PORTA = 11110111b, delay(100us) strobe_all(off)

fill_colomn(line_5), strobe_all(on) PORTA = 11111011b, delay(100us) strobe_all(off)

fill_colomn(line_6), strobe_all(on) PORTA = 11111101b, delay(100us) strobe_all(off)

fill_colomn(line_7), strobe_all(on) PORTA = 11111110b, delay(100us) strobe_all(off)

}

PORTA = 11111111b }

setiap kali teks pada tampilan bergeser. Prinsip pengendalian dengan menggunakan teknik scanning baris secara umum menggunakan algoritma yang ditunjukkan pada Kode 3.12.

Kode 3.12. Pengendalian dengan menggunakan teknik scanning baris.

Nilai PORT A yang ada di akhir prosedur vertical_scanning() digunakan untuk menonaktifkan semua baris sehingga tidak ada penampil tersisa yang masih dalam kondisi hidup. Arti dari strobe_all menunjukkan kondisi strobe untuk kendali tiap-tiap shift register masing-masing warna dasar.


(1)

A b …. Array data teks

MSB Nilai satu elemen array penampil

Nilainya adalah 7F heksa

penampil, array penampil berbeda dengan array untuk data teks. Perbedaannya adalah satu karakter pada data teks hanya membutuhkan satu elemen saja, sedangkan satu karakter untuk penampil membutuhkan enam buah elemen yang masing-masing nilainya elemennya dapat berbeda-beda. Satu elemen pada data teks direpresentasikan pada penampil dalam enam buah elemen yang ditunjukkan pada Gambar 3.16. Dibutuhkan enam elemen karena satu karakter penampil membutuhkan ruang tujuh baris dan lima kolom, satu kolom tersisa digunakan untuk spasi.

Gambar 3.16. Representasi array data teks ke array penampil.

Tipe data untuk masing-masing elemen adalah karakter, namun yang membuat berbeda adalah kegunaannya. Satu elemen array data teks digunakan untuk menyimpan satu karakter, sedangkan enam elemen array penampil digunakan untuk menyimpan nilai-nilai tampilan dari karakter tersebut. Contoh representasi dari array data teks ke array penampil ditunjukkan pada Gambar 3.17. Nilai tiap elemen dapat dituliskan dalam bentuk biner maupun heksadesimal.

Gambar 3.17. Contoh representasi isi array data teks ke array penampil.

Karena enam elemen array penampil digunakan untuk merepresentasikan satu karakter pada data teks, maka array penampil membutuhkan tempat yang lebih besar dibanding array data teks. Perbandingan kapasitas array data teks dibandingkan array

[0] [1] …. Array data teks

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [9] [10] ….

Array penampil Elemen untuk spasi Elemen untuk spasi


(2)

penampil adalah satu berbanding enam. Nilai Least Significant Bit (LSB) data pada penampil dapat diisi dengan bebas karena tidak digunakan, namun untuk bit yang lain tidak boleh terjadi kesalahan dalam pengisian nilainya. Nilai-nilai tampilan dari sebuah karakter dan indeks dari dari daftar karakter digunakan program untuk pengisian data tampilan, sehingga karakter yang tertampil sesuai dengan karakter yang tersimpan pada data teks.

Setelah pengisian semua data selesai dilakukan, program berlanjut ke fungsi penampilan, yaitu mencakup kendali untuk baris dan kendali kolom. Proses pengendalian untuk penampil dilakukan dengan metode scanning baris. Pengendalian baris lebih mudah dilakukan karena dapat dilakukan secara paralel, tujuh baris dapat dikendalikan secara bersamaan. Sedangkan pengendalian kolom lebih sulit dilakukan karena menggunakan teknik pengiriman data serial, dengan 64 buah kolom yang dikendalikan untuk masing-masing warna dasar RGB.

Pengendalian baris mengikuti syarat bahwa dalam setiap kondisi hanya diperbolehkan satu baris saja yang dalam kondisi hidup, dan baris yang lain harus dalam kondisi mati. Proses ini dilakukan secara bergantian mulai dari baris satu hingga baris tujuh, kemudian diulangi kembali mulai dari baris satu dan seterusnya, dengan proses pengendalian yang diulang-ulang selama beberapa waktu lamanya. Karena masukan kendali baris adalah aktif low, maka untuk menghidupkan suatu baris, pin yang terhubung dengan baris tersebut harus bernilai logika nol, dan baris yang lain bernilai logika satu. Kendali untuk baris mengikuti syarat yang ditunjukkan pada Tabel 3.8.

Tabel 3.8. Hubungan nilai PORT A dan baris yang aktif.

Nilai Biner PORT A(Kendali Baris) Baris yang Aktif

10111111 1

11011111 2

11101111 3

11110111 4

11111011 5

11111101 6

11111110 7

Meskipun proses pengendalian dilakukan secara scanning, namun nampak bahwa ketujuh baris seolah-olah menyala secara bersamaan, hal ini dikarenakan frekuensi scanning terjadi sangat cepat, sehingga mata manusia tidak dapat mendeteksi


(3)

selection_coloumn_data(line) {

case 1 : if((data_tampil[index] AND 80H) == 80H) set_color(text(line))

else

set_color(background(line))

case 2 : if((data_tampil[index] AND 40H) == 40H) set_color(text(line))

else

set_color(background(line))

case 3 : if((data_tampil[index] AND 20H) == 20H) set_color(text(line))

else

set_color(background(line))

case 4 : if((data_tampil[index] AND 10H) == 10H) set_color(text(line))

else

set_color(background(line))

case 5 : if((data_tampil[index] AND 08H) == 08H) set_color(text(line))

else

set_color(background(line))

case 6 : if((data_tampil[index] AND 04H) == 04H) set_color(text(line))

else

set_color(background(line))

case 7 : if((data_tampil[index] AND 02H) == 02H) set_color(text(line))

else

set_color(background(line)) }

perubahan tersebut. Pada saat awal program dijalankan, ketujuh baris harus dalam kondisi mati, dan hanya diaktifkan saat akan dihidupkan saja. Proses pengisian data kolom dilakukan dengan melakukan perbandingan antara data penampil dengan suatu data menggunakan logika AND. Algoritma seleksi data kolom penampil ditunjukkan pada Kode 3.10, tujuan menggunakan perbandingan logika AND adalah untuk mengetahui nilai bit dari data yang akan dicek, karena nilai tiap bit data menunjukkan kondisi lampu yang sebenarnya dari baris dan kolom penampil yang bersesuaian.

Kode 3.10. Prosedur seleksi data kolom penampil.

Prosedur set_color(color) digunakan untuk pengaturan data warna dari kolom penampil. Nilai dari text(line) dan background(line) adalah suatu karakter yang merepresentasikan data warna. Saat prosedur set_color(color) dipanggil, maka program


(4)

set_color(color) {

case ‘r’ : data_r = 0, data_g = 1, data_b = 1 case ‘g’ : data_r = 1, data_g = 0, data_b = 1 case ‘b’ : data_r = 1, data_g = 1, data_b = 0 case ‘c’ : data_r = 1, data_g = 0, data_b = 0 case ‘m’ : data_r = 0, data_g = 1, data_b = 0 case ‘y’ : data_r = 0, data_g = 0, data_b = 1 case ‘w’ : data_r = 0, data_g = 1, data_b = 1 clock_r = 1, clock_g = 1, clock_b = 1

delay(1us)

clock_r = 0, clock_g = 0, clock_b = 0 delay(1us)

}

akan menginisialisasi data warna dari teks maupun latar belakang yang bersesuaian. Algoritma dari prosedur set_color(color) ditunjukkan pada Kode 3.11.

Kode 3.11. Prosedur pengisian data warna kolom penampil.

Sama seperti kendali baris, kendali kolom juga bersifat aktif low. Oleh sebab itu untuk menghidupkan suatu warna maka nilai data warna tersebut harus bernilai logika nol, dan data warna lain bernilai logika satu. Pengubahan nilai clock bertujuan untuk menggeser nilai data sejauh satu bit, yaitu pada saat terjadi transisi nilai clock dari logika nol ke satu. Pada program, pergeseran data warna untuk R, G, dan B dapat dianggap dilakukan secara bersama-sama, karena selisih waktu terjadinya sangat sedikit. Pengisian data untuk kolom dilakukan sebanyak 64 kali, yang berarti setiap kali berganti kendali baris program harus melakukan pengisian data untuk kolom sebanyak 64 kali, dengan teknik pengisian data yang digeser, hal ini harus selalu dilakukan karena nilai data-data kolom untuk tiap baris penampil tidaklah selalu sama. Beberapa nama variabel yang digunakan sebagai kendali kolom dan hubungannya pin yang ada pada mikrokontroler ditunjukkan pada Tabel 3.9.


(5)

Tabel 3.9. Hubungan nama variabel dengan pin kendali pada mikrokontroler. Nama Variabel Pin Mikrokontroler

clock_g PORTB.0

strobe_g PORTB.1

data_g PORTB.2

output_enable_g PORTB.3

clock_r PORTC.0

strobe_r PORTC.1

data_r PORTC.2

output_enable_r PORTC.3

clock_b PORTC.4

strobe_b PORTC.5

data_b PORTC.6

output_enable_b PORTC.7

Pin kendali output enable nilainya tidak diubah-ubah selama jalannya program, pin ini bernilai logika satu pada saat inisialisasi awal variabel penyimpan data. Sedangkan pin kendali strobe nilainya diubah-ubah saat berganti baris penampil. Saat pin strobe bernilai logika satu, maka data keluaran shift register nilainya sama dengan data yang ada pada buffer shift register. Sebaliknya saat pin strobe bernilai logika nol, perubahan data pada buffer shift register tidak akan berpengaruh terhadap keluaran shift register, atau dapat dikatakan bahwa keluaran shift register masih merupakan data lama. Proses yang terjadi sebenarnya adalah data kolom yang dikirimkan ke shift register tidak dikeluaran langsung oleh shift register, melainkan ditampung terlebih dahulu di buffer shift register, pin strobe hanya perlu diaktifkan pada saat data sudah siap untuk dikeluarkan. Pin strobe dinon-aktifkan hanya pada saat terjadi pengisian data ke buffer shift register.

Teknik pengendalian dengan menggunakan scanning baris dilakukan dengan mengisi nilai semua data kolom terlebih dahulu, setelah itu memilih baris yang dihidupkan. Proses ini berlaku sama juga ketika akan menghidupkan baris yang lain. Pengendalian baris dan kolom ditentukan dari animasi yang akan ditampilkan, kombinasi pengaturan baris dan kolom yang berbeda-beda dapat menghasilkan tampilan animasi yang berbeda-beda pula. Animasi yang berbeda menggunakan algoritma penampilan yang berbeda pula. Algoritma untuk animasi indeks satu sampai empat pada Tabel 3.4 lebih mudah dibuat dibanding animasi indeks nol, karena variasi lebih banyak dilakukan pada pengaturan kendali baris. Sedangkan animasi pada indeks nol lebih banyak memvariasikan nilai data pada kolom, nilai data yang ditampilkan berubah


(6)

vertical_scanning()

{ i=0

Repeat(from i to 1000)

{ fill_colomn(line_1), strobe_all(on)

PORTA = 10111111b, delay(100us) strobe_all(off)

fill_colomn(line_2), strobe_all(on) PORTA = 11011111b, delay(100us) strobe_all(off)

fill_colomn(line_3), strobe_all(on) PORTA = 11101111b, delay(100us) strobe_all(off)

fill_colomn(line_4), strobe_all(on) PORTA = 11110111b, delay(100us) strobe_all(off)

fill_colomn(line_5), strobe_all(on) PORTA = 11111011b, delay(100us) strobe_all(off)

fill_colomn(line_6), strobe_all(on) PORTA = 11111101b, delay(100us) strobe_all(off)

fill_colomn(line_7), strobe_all(on) PORTA = 11111110b, delay(100us) strobe_all(off)

}

PORTA = 11111111b }

setiap kali teks pada tampilan bergeser. Prinsip pengendalian dengan menggunakan teknik scanning baris secara umum menggunakan algoritma yang ditunjukkan pada Kode 3.12.

Kode 3.12. Pengendalian dengan menggunakan teknik scanning baris.

Nilai PORT A yang ada di akhir prosedur vertical_scanning() digunakan untuk menonaktifkan semua baris sehingga tidak ada penampil tersisa yang masih dalam kondisi hidup. Arti dari strobe_all menunjukkan kondisi strobe untuk kendali tiap-tiap shift register masing-masing warna dasar.