Moving Text Menggunakan Metode Scan Dengan IC 74HC595 Berbasis Mikrokontroler Atemega 32 A

(1)

MOVING TEXT MENGGUNAKAN METODE SCAN DENGAN

IC 74HC595 BERBASIS MIKROKONTROLER ATmega 32A

TUGAS AKHIR

MUHAMMAD ABRAL 112408002

PROGRAM STUDI D-III FISIKA

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN

ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

MOVING TEXT MENGGUNAKAN METODE SCAN DENGAN

IC 74HC595 BERBASIS MIKROKONTROLER ATEMEGA 32A

TUGAS AKHIR

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh gelar Ahli Madya

PROGRAM STUDI D-III FISIKA

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN

ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN


(3)

PERSETUJUAN

Judul : MOVING TEXT MENGGUNAKAN METODE

SCAN DENGAN IC 74HC595 BERBASIS MIKROKONTROLER ATEMEGA 32A

Kategori : TUGAS AKHIR

Nama : MUHAMMAD ABRAL

No Induk Mahasiswa : 112408002

Program Studi : DIPLOMA III (D3) FISIKA Departement : FISIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Juli 2014 Disetujui oleh :

Ketua Program Studi D-III Fisika Pembimbing

Dr. Susilawati, M.Si Drs. Kurnia Brahmana, M.Si NIP. 197412072000122001 NIP. 1960092019860110011


(4)

PERNYATAAN

MOVING TEXT MENGGUNAKAN METODE SCAN DENGAN

IC 74HC595 BERBASIS MIKROKONTROLER ATEMEGA 32A

TUGAS AKHIR

Saya mengakui bahwa Laporan Tugas Akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2014

MUHAMMAD ABRAL 112408002


(5)

PENGHARGAAN

Alhamdulillahirobbil’alamin,

Segala puji dan syukur bagi Allah Subhanahuwata’ala yang telah melimpahkan barokah, rahmat, hidayah-Nya dan menganugerahkan kemudahan serta kelancaran sehingga penulis dapat menyelesaikan penulisan Tugas Akhir ini sesuai dengan judul “Moving Text Menggunakan Metode Scan Dengan IC 74HC595 Berbasis Mikrokontroler Atemega 32 A”. Sholawat dan salam semoga senantiasa tercurahkan kepada Rasulullah Sallallahu’alaihiwassalam sang pembawa petunjuk dan selalu menjadi inspirasi dan teladan bagi penulis.

Tugas Akhir ini disusun untuk melengkapi persyaratan dalam mencapai gelar Ahli Madya pada Program Studi DIII FISIKA Departemen Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.

Penulis menyadari bahwa tersusunnya Tugas Akhir ini dari Do’a, perhatian, bimbingan, motivasi dan dukungan berbagai pihak, sehingga dengan keikhlasan dan kerendahan hati pada kesempatan ini penulis mengucapkan terima kasih yang sebesar-besarnya kepada :

1. Bapak Dr. Sutarman.M.Sc, selaku Dekan Fak. Mipa Universitas Sumatra Utara 2. Ibu Dr. Susilawati, M.Si, selaku Ketua Program Studi Fisika Instrumentasi

Fakultas Matematika Dan Ilmu Pengetahuan Alam.

3. Bapak Drs. Ferdinand Sinuhaji, M.S, selaku Sekretaris Program Studi Fisika Instrumentasi Fakultas Matematika Dan Ilmu Pengetahuan Alam

4. Bapak Drs. Kurnia Brahmana,M.Si, selaku dosen pembimbing, yang telah banyak membantu dan mendukung penulis dalam menyelesaikan Tugas Akhir ini.

5. Teman – teman dari anak stambuk 2011 yang telah banyak membantu dalam penulisan Tugas akhir ini.

6. Putri Puspita Sari yang telah banyak memberikan motivasi, semangat dan dukungan sehingga Tugas Akhir ini terselesaikan.


(6)

8. Semua pihak yang telah membantu penulis dalam menyelesaikan buku laporan Tugas Akhir ini yang tidak dapat disebutkan satu-persatu oleh penulis.

9. Khusus Kedua orang tua penulis Ayahanda Abdul Munir dan Ibunda

Nurhadisah serta saudara kandung yang telah memberikan bantuan moril maupun materil, semangat dan do’a yang begitu besar kepada Penulis.

Penulis menyadari bahwa dalam laporan ini masih jauh dari kesempurnaan baik dari segi bahasa maupun sistematikanya, Untuk itu, dengan segala kerendahan hati penulis mengharapkan saran dan kritik yang membangun guna kesempurnaan laporan ini.

Akhir kata dengan segenap kerendahan hati penulis berharap semoga Buku Laporan Tugas akhir ini dapat memberikan manfaat dan menambah pengetahuan bagi kita semua. Amin.

Medan, 16 Juli 2014


(7)

ABSTRAK

Pada tugas akhir ini penulis membahas masalah yang berjudul “Moving Text Menggunakan Metode Scan Dengan IC 74HC595 Berbasis Mikrokontroler ATMega 32A”. Alat ini berfungsi untuk menampilkan program yang telah diatur oleh penulis. Dalam hal ini simulasi dilakukan dengan menggunakan Mikrokontroller ATMega 32A, dan Dot Matriks. Mikrokontroller sebagai suatu system yang dapat bekerja sama untuk mendapatkan hasil yang lebih akurat. Selain menggunakan perangkat keras, alat ini juga alat ini juga menggunakan perangkat lunak berupa program yang ditanamkan dalam mikrokontroller sehingga kita dapat mengatir kerja dari alat itu sendiri. Alat ini berkerja secara manual dengan menjalankan program terlebih dahulu, mikrokontroller memproses data dengan menggunakan Keyboard.


(8)

DAFTAR ISI

Halaman

Persetujuan i

Pernyataan ii

Penghantar iii

Abstrak iv

Daftar Isi v

Daftar Gambar vii

Daftar Tabel viii

Bab 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Tujuan Penulisan 2

1.4 Batasan Masalah 3

1.5 Sistematika Penulisan 3

Bab 2 Landasan Teori

2.1 Dot Matriks atau Matriks LED 5

2.2 Moving Text dengan IC 74HC595 7

2.3 Mikrokontroller ATMega 32A 10

2.3.1 Fitur ATMega 32A 14

2.3.2 Konfigurasi ATMega 32A 14

2.3.3 Arsitektur CPU ATMega 32A 19

2.3.4 Program Memori 20

2.3.5 SRAM Data Memori 20

2.3.6 EEPROM Data Memori 21

2.3.7 Interupsi 21

2.3.8 Status Register (SREG) 21

2.4 IC74HC595 24

2.5 RTC DS1307 26

2.5.1 Fitur-fitur DS1307 26

2.5.2 Cara pembacaan 28

2.6 Rangkaian Elektronik LED 28

2.6.1 Fungsi/Kegunaan Rangkaian Elektronika LED 29

2.7 Pengertian Kapasitor 31

2.7.1

2.8 Memory 24C64 32

Fungsi dari kapasitor 31

Bab 3 Rancangan Sistem

3.1 Perancangan Sistem Rangkaian 35

3.2 Diagram Blok 36

3.3 Perancangan Power Supplay (PSA) 37

3.4 Relay 38

3.5 Perancangan rangkaian Real Time Clock (RTC) DS1307 40

3.6 Saklar 41


(9)

Bab 4 Pengujian Rangkain

4.1 Pengujian Rangkain Power Suplay 43 4.2 Pengujian Rangkaian Mikrokontroler ATMega32 43

4.3 Pengujian Rangkaian Relay 45

4.4 Analisa Program 46

4.5 Pengujian Rangkaian dengan Menjalankan Program 47

4.6 Pengujian Rangkaian DS 1307 47

Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 50

5.2 Saran-Saran 50

Daftar Pustaka 51


(10)

DAFTAR GAMBAR

Gambar 2.1 Dot Matriks 5

Gambar 2.2 Susunan Jalur-jalur Vertikal dan Horisontal 6

Gambar 2.3 Cara Pemasangan LED 6

Gambar 2.4 Rangkaian Moving Text Mode Scan dengan IC TTL 74HC595 7

Gambar 2.5 Rangkaian Belakang PCB 8

Gambar 2.6 Rangkaian Kabel yang dipasang Ke Dot Matriks 9

Gambar 2.7 Rangkaian Moving Text Menggunakan Dot Matriks 9 Gambar 2.8 Tampilan Program Baris Dan Kolom 11 Gambar 2.9 Pin-pin ATMega 32 17

Gambar 2.10 Status Register ATMega 32A 22

Gambar 2.11 Bentuk Fisis IC 74HC595 24

Gambar 2.12 Fitur-Fitur DS1307 26

Gambar 2.13 Rangkaian Memori RTC DS1307 27

Gambar 2.14 ADDRESS MAP DS1307 28

Gambar 2.15 Simbol dan Fisik LED 29

Gambar 2.16 Rangkaian Elektronika LED 30

Gambar 2.17 Simbol Kapasitor 32

Gambar 2.18 Pin Diagram 24C64 32

Gambar 2.19 Perangkat Addressing 24C64 EEPROM 33

Gambar 3.1 Gambar Blok Eeprom dari ATmega32 36

Gambar 3.2 Gambar Blok Eeprom dari ATmega32 37

Gambar 3.3 Rangkaian Power Supplay (PSA) 38

Gambar 3.4 Simbol Relay 39

Gambar 3.5 Relay Dengan Rangkaian Driver 39

Gambar 3.6 Antarmuka bagian RTC DS1307 40


(11)

DAFTAR TABEL

Table 2.1 Fungsi Khusus Port A 17

Table 2.2 Fungsi Khusus Port B 18

Table 2.3 Fungsi Khusus Port C 19

Table 2.4 Fungsi Khusus Port D 20

Table 2.5 Konfigurasi IC 74HC595 25

Table 2.6 Tegangan Maju LED 31


(12)

ABSTRAK

Pada tugas akhir ini penulis membahas masalah yang berjudul “Moving Text Menggunakan Metode Scan Dengan IC 74HC595 Berbasis Mikrokontroler ATMega 32A”. Alat ini berfungsi untuk menampilkan program yang telah diatur oleh penulis. Dalam hal ini simulasi dilakukan dengan menggunakan Mikrokontroller ATMega 32A, dan Dot Matriks. Mikrokontroller sebagai suatu system yang dapat bekerja sama untuk mendapatkan hasil yang lebih akurat. Selain menggunakan perangkat keras, alat ini juga alat ini juga menggunakan perangkat lunak berupa program yang ditanamkan dalam mikrokontroller sehingga kita dapat mengatir kerja dari alat itu sendiri. Alat ini berkerja secara manual dengan menjalankan program terlebih dahulu, mikrokontroller memproses data dengan menggunakan Keyboard.


(13)

BAB 1

PENDAHULUAN

1.1 Latar belakang

Seiring dengan perkembangan teknologi yang sangat cepat, kebutuhan manusia akan teknologi juga sangat dibutuhkan sehingga perlu dikembangkan alat-alat baru yang bertujuan untuk memudahkan kegiatan manusia dalam kehidupan sehari-hari.

Perkembangan teknologi mikrokontroler misalnya telah membawa era baru dalam dunia elektonika. Salah satu bentuk penerapannya adalah running text, dimana alat ini berfungsi untuk menampilkan informasi berupa tulisan berjalan menggunakan lampu LED sebagai displaynya. Dalam perancangan alat ini, menggunakan mikrokontroler ATmega32A sebagai pengolah data sekaligus menyimpan data-data biner yang diperlukan untuk mengendalikan matriks LED sebagai output data.

Penerapan moving text sudah banyak digunakan di tempat-tempat tertentu, misalnya sistem informasi yang ada di lampu lalu lintas, sign yang ada dikantor-kantor, universitas, dan lain sebagainya. Didalam Universitas, penggunaan moving text dapat digunakan untuk pemberian informasi ruang kelas dengan cara yang modern Penerapan moving text didalam rancangan ini bermanfaat dalam dunia informasi karena dapat menampilkan tulisan berupa huruf berjalan pada display yang terdiri dari susunan LED secara matriks.


(14)

1.2 Rumusan Masalah

Laporan proyek ini membahas tentang perangkat keras yang meliputi perakitan moving text yang terdiri dari Mikrokontroler ATMega 32A sebagai pusat kendalinya beserta software pemrogramannnya, Dot Matriks sebagai tampilannya, IC 74HC595 Trafo, PSA dan Keyboard.

1.3 Tujuan Penulisan

Adapun tujuan penulisan laporan proyek ini adalah untuk:

1. Sebagai salah satu syarat untuk dapat menyelesaikan program Diploma Tiga (D-III) Fisika Instrumentasi FMIPA Universitas Sumatera Utara. 2. Pengembangan kreatifitas mahasiswa dalam bidang ilmu instrumentasi

pengontrolan dan elektronika sebagai bidang diketahui.

3. Merancang suatu alat Moving Text dan Kemudian ditampilkan pada Dot Matriks dengan menggunakan Mikrokontroler ATMega 32A.

4. Mengetahui cara kerja Moving Text menggunakan Dot Matriks berbasis Mikrokontroler AtMega 32A.

5. Penulis ingin memberikan penjelasan tentang penggunaan dan cara kerja dari Moving menggunakan Dot Matriks Berbasis Mikrokontroler ATMega 32A.

1.4 Batasan Masalah

Mengacu pada hal diatas Penulis Merancang Moving Text Berbasis Mikrokontroler ATMega 32A, dengan batasan-batasan sebagai berikut :


(15)

1. Pembahasan mikrokontroler Atmega 32A.

2. Dot Matriks yang digunakan adalah LED Matriks sebagai tampilannya. 3. Pembahasan hanya meliputi rangkaian Mikrokontroler ATMega 32A,

Dot Matriks, beserta programnya.

4. Pembahasan hanya sebatas pemrograman mikrokontroler dan interfacing untuk pemrograman dari komputer ke mikrokontroler tidak dibahas.

1.5 Sistematika Penulisan

BAB I : PENDAHULUAN

Dalam hal ini berisikan mengenai latar belakang, rumusan Masalah, tujuan penulisan, batasan masalah, serta

istematika penulisan.

BAB II : LANDASAN TEORI

Dalam bab ini dijelaskan tentang teori pendukung yang digunakan untuk pembahasan dan cara kerja dari rangkaian teori pendukung itu antara lain tentang Mikrokontroler Atmega 32A, Dot Matriks, bahasa program yang dipergunakan, serta cara kerja dari mikrokontroler Atmega32A dan komponen pendukung. BAB III : RANCANGAN SISTEM

Pada bab ini akan dibahas perancangan dari alat , yaitu blok dari rangkaian, skematik dari masing-masing


(16)

rangkaian dan diagram alir dari program yang diisikan ke Mikrokontroler ATMega32A.

BAB IV : PENGUJIAN RANGKAIAN

Pada bab ini akan dibahas pengujian rangkaian dan hasil pengujian dari Masing – masing pada rangkaian serta di isikan program ke mikrokontroler ATMega32A.

BAB V : KESIMPULAN DAN SARAN

Bab ini merupakan penutup yang meliputi tentang Kesimpulan dari pembahasan yang dilakukan dari tugas akhir ini serta saran apakah rangkaian ini dapat dibuat lebih efisien dan dikembangkan perakitannya pada suatu metode lain yang mempunyai system kerja yang sama.


(17)

BAB 2

LANDASAN TEORI

2.1 Dot Matriks atau Matriks LED

Matriks LED adalah sejumlah LED yang disusun dalam kolom dan baris. LED-LED ini kemudian digunakan untuk menampilkan gambar-gambar atau tulisan yang biasanya ditampilkan dengan efek animasi tertentu. Oleh karena itu, matriks LED sering disebut sebagai Running Text atau Moving Sign.

Gambar 2.1 Dot Matriks

simulator ini, kita bisa mencoba program pengendali matriks LED walaupun tanpa hardware. MXLED membuat matriks LED dengan cara menyusun LED pada jalur-jalur vertikal dan jalur-jalur horisontal. Kita harus menyediakan jalur horisontal sebanyak jumlah baris (kita buat delapan baris). Kemudian, kita juga


(18)

membuat jalur vertikal sebanyak jumlah kolom. Susunan jalur-jalur vertikal dan horisontal tersebut adalah seperti gambar berikut:

Gambar 2.2 Susunan Jalur-Jalur Vertikal Dan Horisontal

Jalur-jalur vertikal dan horisontal tersebut tidak saling terhubung. Kemudian, pada setiap titik pertemuan antara jalur vertikal dan horisontal tersebut, pasanglah sebuah LED dengan cara menghubungkan anoda ke jalur horisontal dan katoda ke jalur vertikal. Pemasangan LED tersebut adalah seperti gambar berikut:


(19)

Dengan memasang LED seperti di atas, LED yang menyala adalah LED dimana anodanya terhubung pada jalur horisontal yang tinggi (1) dan katodanya terhubung pada jalur vertikal yang rendah (0). Hanya ada satu jalur vertikal yang rendah pada satu waktu, sedangkan jalur-jalur lainnya harus tetap tinggi. Jalur vertikal yang rendah ini kita sebut sebagai kolom aktif. Berbeda dengan jalur vertikal, jalur horisontal yang terdiri dari delapan baris ini boleh bernilai tinggi atau rendah tanpa harus memperhatikan jalur-jalur horisontal lainnya.

2.2 Moving text dengan IC 74HC595

Moving text dengan mode scanning lebih banyak digunakan untuk tujuan komersil dibanding dengan mode static, tetapi masing-masing ada kelemahan dan kelebihannya. Berikut ini adalah gambar rangkaian atau skema dari moving text mode scan dengan menggunakan IC TTL 74HC595, untuk driver kolom juga untuk driver baris yang dibantu oleh ULN2803

15 1 2 3 4 5 6 7 8

9 131610 11 1214 15 1 2 3 4 5 6 7 15 1 2 3 4 5 6 7 15 1 2 3 4 5 6 7 8

9 131610 11 1214 8

9 131610 11 1214 8

9 131610 11 1214

15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 1 2 3 4 5 6 7 8 11 12 13 14 16 15 9 17 18 GND 5 VOLT clock slx latch ULN2803 74HC959 74HC959 74HC959 74HC959 74HC959 + -TEST LED


(20)

Salah satu kelebihan dari rangkaian ini adalah jumlah kabel hanya 5 1 . Vcc

2. GND 3. DATA 4. Clock 5. Latch

Prinsip pemrogramannya adalah sebagai berikut, kirim baris dan kirim kolom secara serentak sebanyak jumlah kolom atau kirim kolom dan kirim baris secara serentak sebanyak jumlah baris.

Kalau eeprom bawaan dari atmega32 masih terasa kurang, dapat ditambahkan memory eeprom external seperti 24c64, demikian juga jika RTC bawaan atmega32 kurang memuaskan, dapat ditambahkan DS1307 sebagai RTC external.

IC 74 595 dipasang pada bagian belakang PCB untuk menghemat PCB sbb:


(21)

Pemasangan kabel dan pengujian dot matriks dapat dilakukan dengan cara menguhubungkan kabel pada dot matriks tersebut. Agar kita dapat membuktikan antara kolom dan baris hidup atau tidak. Atau menggunakan MATRIX LED 8X8 yang sudah jadi, sbb:

Gambar 2.6 Rangkaian Kabel yang dipasang Ke Dot Matriks

Selanjutnya kita menguji kolom dan baris, dengan ATmega32 untuk membuktikan atau mengetes kolom dan baris pada dot matriks menyala atau tidak led pada kordinat..


(22)

2.2.1 Program Menyalanya Led Pada Kordinat

kol = 0x01; // posisi kolom scanning

while (1)

{

// Place your code here

kar = 0x55; // data yang mau dikirim (baris)

while (1)

{

soe = 0;

shift_out(kar); // kirim baris

shift_out(kol); // kirim kolom

soe = 1;

delay_ms(150);

kol = kol << 1;

if (kol == 0) kol = 0x01;

}

}


(23)

Berikut ini adalah tampilan dari program diatas pada display led

Gambar 2.8 Tampilan Program Baris Dan Kolom

2.3 Mikrokontroler ATMega 32A

Mikrokontroler merupakan sebuah single chip yang didalamya telah dilengkapi dengan CPU (Central Prosessing Unit); RAM ( RandomAcces

Memory); ROM ( Read only Memory), Input, dan Output, Timer\ Counter, Serial

com port secara spesifik digunakan untuk aplikasi –aplikasi control dan buka aplikasi serbaguna. Mikrokontroler umumnya bekerja pada frekuensi 4MHZ-40MHZ. Perangkat ini sering digunakan untuk kebutuhan kontrol tertentu seperti pada sebuah penggerak motor. Read only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu daya. Sesuai dengan keperluannya, sesuai dengan susunan MCS-51. Memory penyimpanan program dinamakan sebagai memory program. Random Acces Memory (RAM) isinya akan begitu sirna IC kehilangan catudaya dipakai untuk menyimpan data pada saat program bekerja. RAM yang dipakai untuk menyimpan data ini disebut sebagai memori data.

Mikrokontroler biasanya dilengkapi dengan UART (Universal


(24)

USART (Universal Asychoronous\Asy choronous Receiver Transmitter) yaitu port yang digunakan untuk komunikasi serial asinkron dan asinkron yang kecepatannya 16 kali lebih cepat dari Uart, SPI ( Serial Port Interface), SCI (

Serial Communication Interface ), Bus RC ( Intergrated circuit Bus ) merupakan

2 jalur yang terdapat 8 bit, CAN ( Control Area Network ) merupakan standard pengkabelan SAE (Society of Automatic Enggineers).

Pada system computer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relatif besar,sedangkan rutin-rutin antar muka pernagkat keras disimpan dalm ruang ROM yang kecil. Sedangkan pada mikrokontroler, perbandingan ROM dan RAM-nya yang besar artiRAM-nya program control disimpan dalam ROM yang ukuranRAM-nya relative lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sedrhana sementara, termasuk register-register yang digunakan pada Microctroller yang bersangkutan.

Mikrokontroler saat ini sudah dikenal dan digunakan secar luas pada dunia industri. Banyak sekali penelitian atau proyek mahasiswa yang menggunakan berbagai versi mikrokontroler yang dapat dibeli dengan harga yang relative murah. Hal ini dikarenakan produksi misal yang dilakukan oleh para produse chip seperti Atmel, Maxim, dan Microchip. Mikrokontroler saat ini merupakan chip utama pada hampir setiap peralatan elektronika canggih. Alat-alat canggih pun sekarang ini sangat bergantung pada kemampuan mikrokontroler tersebut. Mikrikontroler AVR memilki arsitektur RISC 8 bit, dimana semua instruksi dikemas dalam kode 16-bit (16-bit word) dan sebagian besar instruksi dieksekusi dalam satu siklus clock, berbeda dengan instruksi CS51 yang membutuhkan siklus


(25)

12 clock. Tentu saja itu terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang berbeda. AVRberteknologi RISC (Reduce Instruction Set Computing), sedangkan seri MCS51 berteknologi CISC (Complex Instruction Set Computing). Secara umum, AVR dapatdikelompokkan menjadi 4 kelas, yaitu keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya, yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsiektur dan instruksi yang digunakan, mereka bias dikatakan hampir sama.

Nama AVR sendiri berasal dari "Alf (Egil Bogen) and Vegard (Wollan) 's Riscprocessor" dimana Alf Egil Bogen dan Vegard Wollan adalah dua penemu berkebangsaan Norwegia yang menemukan mikrokontroller AVR yang kemudian diproduksi oleh atmel.

Mikrokontroler adalah piranti elektronik berupa IC (Integrated Circuit)yang memiliki kemampuan manipulasi data (informasi)berdasarkan suatu urutan instruksi (program). Dalam sebuah struktur mikrokontroller akan kita temukan juga komponen-komponen seperti:processor, memory, clock, dll.

Salah satu arsitektur mikrokontroler yang terdapat di pasaran adalah jenis AVR (Advanced Virtual RISC). Arsitektur mikrokontroler jenis AVR ini pertama kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan. Dalam perkembangannya, AVR dibagi menjadi beberapa varian yaitu AT90Sxx, ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja.


(26)

Mikrokontroler AVR (Alf and Vegard's Risc processor) standar memiliki arsitektur 8 bit, dimana semua instruksi dikemas dalam kode 16-bit, dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. AVR berteknologi RISC (Reduced Instruction Set Computing), sedangkan seri MCS51 berteknologi CISC (Complex Instruction Set Computing). AVR dapat dikelompokkan menjadi empat kelas, yaitu keluarga ATtiny, keluarga ATSOSxx, keluarga ATMega, dan AT86RFxx. Pada dasamya, yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Untuk mikrokontroler AVR yang berukuran lebih kecil, Anda dapat mencoba ATmega8 atau ATtiny2313 dengan ukuran Flash Memory 2KB dengan dua input analog. Mikrokontroler AVR yang perlu Anda kuasai. Selain ATmega 32, sangat direkomendasikan untuk mencoba ATmega16 dan Atmegal 28. Selain itu, kuasai juga jenis mikrokontroler lain produksi Maxim (Maxim-ic.com) seperti DS80C400 dan MAXQ2000.

Pemrograman mikrokontroler AVR dapat menggunakan low level language (assembly) dan high level language (C, Basic, Pascal, JAVA, dll)tergantung compiler yang digunakan.Salah satu yang banyak dijumpai di pasaran adalah AVR tipe ATmega, yang tediri dari beberapa versi, yaitu :ATmega8535, ATmega16,ATmega162, ATmega32, ATmega324P, ATmega644, ATmega644P danbATmega128. Pada pembahasan ini mikrokontroler yang digunakan adalah AVR ATmega32.

2.3.1 Fitur ATMega 32A

Fitur-fitur yang dimiliki ATmega32 sebagai berikut: 1. Frekuensi clock maksimum 16 MHz.


(27)

2. Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD. 3. Analog to Digital Converter 10 bit sebanyak 8 input, 4 chanel PWM. 4. Timer/Counter sebanyak 3 buah.

5. CPU 8 bit yang terdiri dari 32 register. 6. Watchdog Timer dengan osilator internal. 7. SRAM sebesar 2K Byte.

8. Memori Flash sebesar 32K Byte dengan kemampuan read while write. 9. Interrupt internal maupun eksternal.

10.Port komunikasi SPI.

11.EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 12.Analog Comparator.

13. Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps.

2.3.2 Konfigurasi ATMega 32A

Mikrokontroler merupakan suatu device yang di dalamnya sudah terintegrasi dengan I/O port,RAM,ROM,sehingga dapat digunakan untuk berbagai keperluan kontroler .Mikrokontroler AVR ATmega32 merupakan low power CMOS mikrokontroler 8 bit yang di kembangkan oleh atmel dengan arsitektur RISC(Reduced Instruction SET Computer) sehingga dapat mencapai troughput eksekusi instruksi 1 MIPS(Million Instruction Per Second).Mikrokontroler AVR dapat dikelompokkan menjadi 4 kelas yaitu kelas ATtiny,kelas AT90xx,keluarga ATmega,dan kelas AT86RFxx.pada dasarnya yang membedakan masing-masing kelas adalah memori,peripheral,spedd.operasi tegangan dan fungsinya sedangkan dari segi arsitektur dan instruksi yang di gunakan bisa di katakan hampir sama.


(28)

Penjelasan konfigurasi pin pada mikrokontroler AVR ATmega32 secara umum: a. Pin 1 sampai 8 (port B) merupakan port paralel 8 bit dua arah (bidirectional),

yang dapat di gunakan untuk general purpose dan special feature. b. Pin 9 (riset) jika terdapat minimum pulse pada saat active low. c. Pin 10 (VCC) di hubungkan ke Vcc (2,7-5,5 Volt).

d. Pin 11 dan 31 (GND di hubungkan ke Vssatau ground.

e. Pin 12 (XTAL 2) adalah pin masukan ke rangkaian osilator internal. Sebuah osilator kristal atau sumber osilator luar dapat di gunakan.

f. Pin 13 (XTAL 1) adalah pin keluaran ke rangkaian osilator internal.pin ini di pakai bila menggunakan osilator kristal.

g. Pin 14 sampai 21 (port D) adalah 8 bit dua arah (bi-directional I/O) port dengan internal pull-up resistors di gunaka untuk general purpose dan special feature.

h. Pin 22 sampai 29 (port C) adalah 8 bit dua arah (bi-directional I/O) port dengan internal pull-up resistors di gunaka untuk general purpose dan special feature.

i. Pin 30 adalah Avcc pin penyuplai daya untuk port A dan A/D converter dan di hubungkan ke Vcc.jika ADC di gunakan maka pin ini di hubungkan ke Vcc. j. Pin 32 adalah A REF pin yang berfungsi sebagai referensi untuk pin analog

jika A/D converter di gunakan.

k. Pin 33 sampai 40 (port A) adalah 8 bit dua arah arah (bi-directional I/O) port dengan internal pull-up resistors di gunaka untuk general purpose.


(29)

Gambar 2.9 Pin-pin ATMega32

Secara fungsional konfigurasi pin ATMega32 adalah sebagai berikut: 1. VCC

Sumber Tegngan 2. GND (Ground)

Ground

3. Port A (PA7 – PA0)

Port A adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin memilki internal pull-up resistor. Output buffer port A dapat mengalirkan arus sebesar 20 mA. Ketika port A digunakan sebagai input dan di pull-up secara langsung, maka port A akan mengeluarkan arus jika internal pull-up resistor diaktifkan. Pin-pin dari port A memiliki fungsi khusus yaitu dapat berfungsi sebagai channel ADC (Analog to Digital Converter) sebesar 10 bit. Fungsi-fungsi khusus pin-pin port A dapat ditabelkan seperti yang tertera pada table.


(30)

Port Alternate Function

PA7 ADC7 (ADC input channel 7)

PA6 ADC6 (ADC input channel 6)

PA5 ADC5 (ADC input channel 5)

PA4 ADC4 (ADC input channel 4)

PA3 ADC3 (ADC input channel 3)

PA2 ADC2 (ADC input channel 2)

PA1 ADC1 (ADC input channel 1)

PA0 ADC0 (ADC input channel 0)

Tabel 2.1 Fungsi khusus port A

4. Port B (PB7 – PB0)

Port B adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin mengandung internal pull-up resistor. Output buffer port B dapat mengalirkan arus sebesar 20 mA. Ketika port B digunakan sebagai input dan di pull-down secara external, port B akan mengalirkan arus jika internal pull-up resistor diaktifkan.

Pin-pin port B memiliki fungsi-fungsi khusus, diantaranya : a.SCK port B, bit 7

Input pin clock untuk up/downloading memory. b.MISO port B, bit 6

Pin output data untuk uploading memory.

c.MOSI port B, bit 5

Pin input data untuk downloading memory.


(31)

Port Alternate Function

PB7 SCK (SPI Bus Serial Clock)

PB6 MISO (SPI Bus Master Input/Slave Output) PB6 MOSI (SPI Bus Master Output/Slave Input) PB5 SS (SPI Slave Select Input)

PB3 AIN1 (Analog Comparator Negative Input)

OCO (Timer/Counter0 Output PB2 AIN0 (Analog Comparator Positive Input)

INT2 (External Interrupt 2 Input)

PB1 T1 (Timer/Counter1 External Counter Input)

PB0 T0 (Timer/Counter External Counter Input) XCK (USART External Clock Input/Output)

Tabel 2.2 Fungsi khusus port B

5. Port C (PC7 – PC0)

Port C adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin memiliki internal pull-up resistor. Output buffer port C dapat mengalirkan arus sebesar 20 mA. Ketika port C digunakan sebagai input dan di pull-down secara langsung, maka port C akan mengeluarkan arus. Fungsi-fungsi khusus pin-pin port C dapat ditabelkan seperti yang tertera pada tabel dibawah ini.

Port Alternate Function

PC7 TOSC2 (Timer Oscillator Pin 2) PC6 TOSC1 (Timer Oscillator Pin 1) PC6 TD1 (JTAG Test Data In) PC5 TD0 (JTAG Test Data Out) PC3 TMS (JTAG Test Mode Select) PC2 TCK (JTAG Test Clock)

PC1 SDA (Two-wire Serial Bus Data Input/Output Line) PC0 SCL (Two-wire Serial Bus Clock Line)


(32)

6. Port D (PD7 – PD0)

Port D adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin memiliki internal pull-up resistor. Output buffer port D dapat mengalirkan arus sebesar 20 mA. Ketika port D digunakan sebagai input dan di pull-down secara langsung, maka port D akan mengeluarkan arus jika internal pull-up resistor diaktifkan. Fungsi-fungsi khusus pin-pin port D dapat ditabelkan seperti yang tertera pada tabel dibawah ini.

Port Alternate Function

PD7 OC2 (Timer / Counter2 Output

PD6 ICP1 (Timer/Counter1 Input Capture Pin)

PD6 OCIB (Timer/Counter1 Output

PD5 TD0 (JTAG Test Data Out) PD3 INT1 (External Interrupt 1 Input) PD2 INT0 (External Interrupt 0 Input) PD1 TXD (USART Output Pin) PD0 RXD (USART Input Pin)

Tabel 2.4 Fungsi khusus port D

2.3.3 Arsitektur CPU ATMEGA32

Fungsi utama CPU adalah memastikan pengeksekusian instruksi dilakukan dengan benar. Oleh karena itu CPU harus dapat mengakses memori, melakukan kalkulasi, mengontrol peripheral, dan menangani interupsi.

Ada 32 buah General Purpose Register yang membantu ALU bekerja. Untuk operasi aritmatika dan logika, operand berasal dari dua buah general register dan hasil operasi ditulis kembali ke register. Status and Control berfungsi untuk menyimpan instruksi aritmatika yang baru saja dieksekusi. Informasi ini


(33)

berguna untuk mengubah alur program saat mengeksekusi operasi kondisional. Instruksi di jemput dari flash memory. Setiap byte flash memory memiliki alamat masing-masing. Alamat instruksi yang akan dieksekusi senantiasa disimpan Program Counter. Ketika terjadi interupsi atau pemanggilan rutin biasa, alamat di Program Counter disimpan terlebih dahulu di stack. Alamat interupsi atau rutin kemudian ditulis ke Program Counter, instruksi kemudian dijemput dan dieksekusi. Ketika CPU telah selesai mengeksekusi rutin interupsi atau rutin biasa, alamat yang ada di stack dibaca dan ditulis kembali ke Program Counter.

2.3.4 Program Memori

ATMEGA 32 memiliki 32 KiloByte flash memori untuk menyimpan program.Karena lebar intruksi 16 bit atau 32 bit maka flash memori dibuat berukuran 16K x 16. Artinya ada 16K alamat di flash memori yang bisa dipakai dimulai dari alamat 0 heksa sampai alamat 3FFF heksa dan setiap alamatnya menyimpan 16 bit instruksi.

2.3.5 SRAM Data Memori

ATMEGA32 memiliki 2 KiloByte SRAM. Memori ini dipakai untuk menyimpan variabel. Tempat khusus di SRAM yang senantiasa ditunjuk register SP disebut stack. Stack berfungsi untuk menyimpan nilai yang dipush.

2.3.6 EEPROM Data Memori

ATMEGA32 memiliki 1024 byte data EEPROM. Data di EEPROM tidak akan hilang walaupun catuan daya ke sistem mati. Parameter sistem yang penting


(34)

disimpan di EEPROM. Saat sistem pertama kali menyala paramater tersebut dibaca dan system diinisialisasi sesuai dengan nilai parameter tersebut.

2.3.7 Interupsi

Sumber interupsi ATMEGA32 ada 21 buah. Tabel 2 hanya menunjukkan 10 buah interupsi pertama. Saat interupsi diaktifkan dan interupsi terjadi maka CPU menunda instruksi sekarang dan melompat ke alamat rutin interupsi yang terjadi. Setelah selesai mengeksekusi intruksi-instruksi yang ada di alamat rutin interupsi CPU kembali melanjutkan instruksi yang sempat tertunda.

2.3.8 Status register (SREG)

Status register adalah Status Register berisi informasi tentang hasil yang paling baru-baru ini dieksekusi aritmatika instruksi. Informasi ini dapat digunakan untuk mengubah aliran program untuk melakukan operasi bersyarat. Perhatikan bahwa Register Status diperbarui setelah semua operasi ALU, sebagai ditentukan dalam Instruction Set Reference. Ini akan dalam banyak kasus menghilangkan kebutuhan untuk menggunakan didedikasikan membandingkan instruksi, sehingga lebih cepat dan lebih kompak kode. Status Register tidak secara otomatis disimpan ketika memasuki rutin interupsi dan dipulihkan ketika kembali dari interupsi. Ini harus ditangani oleh perangkat lunak.


(35)

• Bit 7 - I: Dunia Interrupt Enable

Global Interrupt Enable bit harus ditetapkan untuk menyela harus diaktifkan . Individu interrupt memungkinkan kontrol selanjutnya dilakukan dalam register kontrol terpisah . Jika Global Interrupt Enable Daftar dibersihkan , tidak ada interupsi diaktifkan independen dari interrupt individu mengaktifkan pengaturan . The I- bit dihapus oleh hardware setelah interupsi telah terjadi , dan diatur oleh instruksi RETI untuk mengaktifkan interupsi berikutnya . The I- bit juga dapat diatur dan dibersihkan oleh aplikasi dengan SEI dan CLI instruksi, seperti yang dijelaskan dalam referensi set instruksi .

• Bit 6 - T : Bit Copy Storage

The Bit Copy instruksi BLD ( Bit Load) dan BST ( Bit Store) menggunakan T - bit sebagai sumber atau tujuan untuk bit yang dioperasikan . Sedikit dari register dalam Daftar file dapat disalin ke T oleh Instruksi BST , dan sedikit di T dapat disalin ke dalam sedikit dalam register dalam Daftar file oleh Instruksi BLD .

• Bit 5 - H : Half Carry Flag

The Half Carry Flag H menunjukkan setengah carry dalam beberapa operasi aritmatika . Half Carry berguna dalam BCD aritmatika.

• Bit 4 - S : Sign Bit , S = N ⊕ V

The S - bit selalu eksklusif atau antara Negatif Flag N dan Komplemen Dua Overflow Flag V.


(36)

The Two Complement Overflow Flag V mendukung dua itu aritmatika komplemen.

• Bit 2 - N : Negative Flag

Negatif Flag N menunjukkan hasil negatif dalam aritmatika atau operasi logika

• Bit 1 - Z : Nol Flag Zero Flag Z

mengindikasikan hasil nol dalam aritmatika atau operasi logika .

• Bit 0 - C : Carry Flag The Carry Flag C

mengindikasikan carry dalam aritmatika atau operasi logika.

2.4 IC 74HC595

2.11 Gambar Bentuk Fisis IC 74HC595

IC 74HC/HCT595 adalah pergeseran 8 stage serial shift register dengan penyimpanan register dan 3 keluaran. Shift register dan penyimpanan register

memiliki clock terpisah. IC ini mempunyai master reset untuk clear semua output secara langsung. IC 74HC595 memiliki 16 pin dimana pin 15 sebagai VCC dan pin 8 sebagai GND.


(37)

Tabel 2.5 Konfigurasi IC 74HC595

Pin Q0-Q7 adalah output pin yang akan dikontrol kondisinya sebagai tambahan pin output IC yang diinginkan. Sedangkan pin Q7’ adalah pin serial output, pin ini dapat digunakan untuk menggabungkan beberapa IC bila membutuhkan lebih banyak output.

Prinsip kerja IC 74HC595 adalah menerima data masukan dari pin serial data input yaitu pin 14 dan menggesernya setiap internal register yang tersusun secara seri pada setiap perubahan pulsa clock dari low sampai ke high yang diberikan pada pin shift register clock input pada pin 11. Pin output Q0-Q7 yang


(38)

merupakan keluaran dari setiap register tetap tidak akan berubah selama proses tersebut terus berjalan dan selama pin 12 belum berubah kondisi dari low ke high.

2.5 RTC DS 1307

RTC yang dimaksud disini adalah real time clock (bukan real time computing), biasanya berupa IC yg mempunyai clock sumber sendiri dan internal batery untuk menyimpan data waktu dan tanggal. Sehingga jika system komputer / microcontroller mati waktu dan tanggal didalam memori RTC tetap uptodate.

Salah satu RTC yang sudah populer dan mudah penggunaanya adalah DS1307, apalagi pada Codevision sudah tersedia fungsi-fungsi untuk mengambil data waktu dan tanggal untuk RTCDS1307 ini.

DS1307

Vcc

SQW/OUT

SCL

SDA

X1

X2

VBAT

GND

2.12 Gambar Fitur-Fitur DS1307

2.5.1 Fitur-fitur DS1307:

• Real-time clock (RTC) menghitung detik, menit, jam,tanggal,bulan dan hari dan tahun valid sampai tahun 2100


(39)

• 2 jalur serial interface (I2C).

• output gelombang kotak yg diprogram.

• Automatic power-fail detect and switch

• Konsumsi arus hanya 500nA pada batery internal.

• mode dg oscillator running.

• temperature range: -40°C sampai +85°C

Untuk membaca data tangal dan waktu yg tersimpan di memori RTC Ds1307 dapat dilakukan melalui komunikasi serial I2C spt tampak pada gambar berikut:

Vcc

Vcc

Vcc

SDA

DS1307

Crystal

32.768khz

3v

bat

1

2

3

5

6 SCL

4

Microcontroller


(40)

2.5.2 Cara pembacaan

DS1307 beropersai sebagai slave pada bus I2C. Cara Access pertama mengirim sinyal START diikuti device address dan alamat sebuah register yg akan dibaca. Beberapa register dapat dibaca sampai STOP condition dikirim.

2.14 Gambar ADDRESS MAP DS1307

Data waktu dan tanggal tersimpan dalam memori masing masing 1 byte , mulai dari alamat 00H sampai 07H. Sisanya (08H ~ 3FHalamat RAM yg bisa digunakan).

2.6 Rangkaian Elektronik LED

Rangkaian elektronika LED (Light Emiting Diode = Dioda Pemancar Cahaya) atau lebih dikenal dengan sebutan LED adalah komponen semikonduktor elektronika yang memancarkan cahaya monokromatik. Dioda ini akan mengeluarkan cahaya bila diberi tegangan sebesar 1.8 V dengan arus 1.5 mA.


(41)

LED dikenal dengan istilah lain Solid State Lamp, yakni piranti elektronik yang merupakan gabungan elektronik dengan optik (lensa) dan akhirnya dikenal sebagai keluarga opto-electronic. Simbol dan fisiknya diperlihatkan seperti gambar di bawah ini. Rangkaian elektronika LED banyak digunakan sebagai lampu indikator dan peraga (display).

K

A

ANODA (+) KATODA (-)

K

A

A

K

2.15 Gambar Simbol dan Fisik LED

2.6.1 Fungsi/Kegunaan Rangkaian Elektronika LED

Dioda LED akan menyala jika diberi arus DC arah forward atau arus AC yang sesuai dengan tegangan kerjanya (misal 3 volt). Rangkaian elektronika LED digunakan sebagai lampu indikator dan sebagai display. Kegunaan rangkaian elektronika LED lainnya adalah untuk penampil digit, indikator pandang (sebagai pengganti lampu pijar) dan sebagai acuan tegangan (1,5 V tiap LED).

Keistimewaan lain dari rangkaian elektronika LED ialah memancarkan cahaya ingin, umur tidak dipendekkan oleh peng-on-off-an yang terus menerus, tidak memancarkan sinar infra merah (kecuali yang sengaja


(42)

dibuat untuk itu). Dalam merangkai LED selalu diperlukan resistor deretan guna membatasi kuat arus.

2.16 Gambar Rangkaian Elektronika LED

LED dibuat dari berbagai bahan semikonduktor campuran seperti galium arsenida fosfida (GaAsP), galium fosfida (GaP) dan galium aluminium arsenida (GaAlAs). Kalau LED diberi tegangan panjar (bias) arah maju, juctionnya akan mengeluarkan cahaya. Warna cahaya bergantung kepada jenis dan kadar bahan junctionnya. Bahan GaS memancarkan warna inframerah, Bahan GaAsP warna merah atau kuning sedangkan bahan GaP dengan warna merah atau hijau.

Kecerahan cahaya berbanding lurus dengan arus forward (arah maju) yang mengalirinya. Arus forward berkisar antara 10 mA – 20 mA untuk kecerahan makimum. Pada kondisi menghantar tegangan maju pada LED merah adalah 1,6 V – 2,2 V, pada LED kuning 2,4 V dan pada LED hijau 2,7 V. Tegangan revers (terbalik) maksimum yang dibolehkan pada LED merah adalah 3 V, LED kuning 5 V dan LED hijau 5 V. Keunggulan LED diantaranya


(43)

adalah konsumsi arus yang sangat kecil, awet (dapat bertahan sampai 50 tahun) dan kecil bentuknya (tidak makan tempat).

WARNA TEGANGAN MAJU Merah 1.8 Volt Orange 2.0 Volt Kuning 2.1 Volt Hijau 2.2 Volt

Tabel 2.6 Tegangan Maju LED

2.7 Pengertian Kapasitor

Kapasitor adalah suatu komponen elektronika yang berfungsi untuk menyimpan arus listrik dalam bentuk muatan. sebuah kapasitor pada dasarnya terbuat dari dua buah lempengan logam yang saling sejajar satu sama lain dan diantara kedua logam tersebut terdapat bahan isolator yang sering disebut dielektrik. Bahan dielektrik tersebut dapat mempengaruhi nilai dari kapasitansi kapasitor tersebut. adapun bahan dielektrik yang paling sering dipakai adalah keramik, kertas, udara, metal film dan lain-lain.

2.7.1

• Kapasitor sebagai kopling, dilihat dari sifat dasar kapasitor yaitu dapat dilalui arus ac dan tidak dapat dilalui arus dc dapat dimanfaatkan untuk memisahkan 2 buah rangkaian yang saling tidak berhubungan secara dc tetapi masih berhubungan secara ac(signal), artinya sebuah kapasitor


(44)

berfungsi sebagai kopling atau penghubng antara 2 rangkaian yang berbeda.

• Kapasitor berfungsi sebagai filter pada sebuah rangkaian power supply, yang saya maksud disini adalah kapasitor sebagai ripple filter, disini sifat dasar kapasitor yaitu dapat menyimpan muatan listrik yang berfungsi untuk memotong tegangan ripple.

• Kapasitor sebagai penggeser fasa.

• Kapasitor sebagai pembangkit frekuensi pada rangkaian oscilator.

• Kapasitor digunakan juga untuk mencegah percikan bunga api pada sebuah saklar.

Electrical Symbol for a Capactor

2.17 Gambar Simbol Kapasitor

2.8 Memory 24C64


(45)

• A0, A1, A2 - Chip Alamat Input: input ini digunakan untuk beberapa operasi perangkat. Tingkat logika pada ini pin input dibandingkan dengan bit yang sesuai di alamat slave dan chip dipilih jika dibandingkan benar. Dengan demikian hingga delapan perangkat dapat dihubungkan ke bus yang sama menggunakan chip pilih kombinasi bit yang berbeda.

• WP - Write Protect: Ketika pin ini disimpan RENDAH (grounded) normal membaca dan menulis operasi yang mungkin tetapi jika TINGGI (Vcc) menulis operasi akan terhambat. The resistor PULL BAWAH internal pin ini menjaga jarak perangkat terlindungi bila dibiarkan mengambang.

• Vcc dan Vss: Vcc adalah positif DC pasokan pin. Perangkat ini mampu bekerja dengan dalam 1,8 sampai kisaran 5.5V. VSS adalah pin ground (0V).

• SDA - Serial Data: Ini adalah pin dua arah yang digunakan untuk mentransfer data dan alamat dari dan ke perangkat.

• SCL - Serial Jam: pin ini digunakan untuk sinkronisasi transfer data melalui SDA.


(46)

Gambar 2.19 Perangkat Addressing 24C64 EEPROM

Kontrol Byte adalah byte pertama yang diterima oleh perangkat slave setelah menerima sinyal mulai dari perangkat master. Untuk 24C64 4 bit pertama adalah kode kontrol (1010) untuk identifikasi perangkat. Berikutnya 3 bit dari byte kontrol Chip Select Bits (A2, A1, A0). Bit ini memungkinkan kita untuk menghubungkan hingga delapan 24XX64 perangkat pada bus yang sama. The Chip Select Bits of control byte harus sesuai dengan tingkat logika dari A2, A1, A0 perangkat yang akan dipilih. Bit terakhir Pengendalian Byte digunakan untuk menentukan operasi yang akan dilakukan. Hal ini diatur ke 1 ketika operasi baca yang akan dilakukan dan diatur ke 0 ketika menulis operasi yang akan dilakukan.


(47)

BAB 3

RANCANGAN SISTEM

3.1 Perancangan Sistem Rangkaian

Perancangan sistem rangkaian terdiri dari dua bagian yaitu perancangan sistem perangkat keras dan perancangan sistem perangkat lunak. Sistem perangkat keras yang digunakan untuk pembuatan sistem terdiri dari beberapa bagian atau komponen utama. Setiap komponen ini membutuhkan antarmuka yang merupakan jalur komunikasi dengan komponen lainnya dan sebagai titik koneksi sumber daya atau tegangan yang dibagi dengan komponen lainnya. Oleh karena itu, perancangan antarmuka ini tidak boleh sembarangan dan harus lebih diperhatikan kelebihan dan kekurangannya. Misalnya saja dari segi komunikasi, antarmuka yang dibuat untuk komponen yang bersangkutan nantinya harus dapat membuat komponen ini dapat berkomunikasi dengan komponen-komponen lainnya. Jika antarmuka komponen ini nantinya juga dapat digunakan untuk pengembangan sistem perangkat keras lainnya atau dapat bekerja dengan kecepatan yang tinggi sehingga tidak membutuhkan penundaan waktu yang cukup lama untuk mengeksekusi suatu perintah atau instruksi, maka hal ini merupakan nilai lebih dari antarmuka yang dirancang.


(48)

3.2 Diagram Blok

PS/2 Keyboard

Ps/2

To

ascii

converter

MCU

Atemega32

so

dt

dt

clk

clk latch

latch

so

595

Next bloda

595

8 x 8 led matrix

AT89C2051

DIAGRAM BLOK

Block Diagram

Dt = data in/serial input

So = serial out

Clk = Clock

Latch = Output enable

74HC595

Gambar 3.1. Gambar Blok Eeprom dari ATmega32

Kalau eeprom bawaan dari atmega32 masih terasa kurang, dapat ditambahkan memory eeprom external seperti 24c64, demikian juga jika RTC bawaan atmega32 kurang memuaskan, dapat ditambahkan DS1307 sebagai RTC external.


(49)

Untuk jelasnya perhatikan diagram block berikut ini: PS/2 Keyboard Ps/2 To ascii converter MCU Atemega32 so dt dt clk clk latch latch

so 595 Next bloda

595

8 x 8 led matrix AT89C2051

DIAGRAM BLOK Block Diagram Dt = data in/serial input So = serial out Clk = Clock Latch = Output enable

74HC595

Ds 1307

24C64

Gambar 3.2 Gambar Blok dengan DS1307 sebagai RTC External

Secara garis besar, perancangan alat moving text dengan Dot Matriks berbasis ATmega32 terdiri dari empat blok rangkaian utama. Untuk dapat mengetahui tampilan Moving Text yang dihasilkan menggunakan Dot Matriks. Mikrokontroller ATmega32 merupakan otak dari seluruh system. Di dalam mikrokontroler inilah semua data akan diolah.

3.3 Perancangan Power Supplay (PSA)

Rangkaian ini berfungsi untuk mensupplay tegangan ke seluruh rangkaian yang ada. Rangkaian PSA yang dibuat terdiri dari dua keluaran, yaitu 5 volt dan 12 volt, keluaran 5 volt digunakan untuk mensupplay tegangan ke seluruh rangkaian, sedangkan keluaran 12 volt digunakan untuk mensuplay tegangan ke motor stepper. Rangkaian power supplay ditunjukkan pada gambar berikut ini.


(50)

Vreg

LM7805CT

IN OUT

TIP32C

100ohm

100uF

330ohm 220V 50Hz 0Deg

TS_PQ4_12

2200uF 1uF

1N5392GP 1N5392GP

12 Volt

5 Volt

Gambar 3.3. Rangkaian Power Supplay (PSA)

Trafo CT merupakan trafo stepdown yang berfungsi untuk menurunkan tegangan dari 220 volt AC menjadi 12 volt AC. Kemudian 12 volt AC akan disearahkan dengan menggunakan dua buah dioda, selanjutnya 12 volt DC akan diratakan oleh kapasitor 2200 μF. Regulator tegangan 5 volt (LM7805CT) digunakan agar keluaran yang dihasilkan tetap 5 volt walaupun terjadi perubahan pada tegangan masukannya. LED hanya sebagai indikator apabila PSA dinyalakan. Transistor PNP TIP 32 disini berfungsi untuk mensupplay arus apabila terjadi kekurangan arus pada rangkaian, sehingga regulator tegangan (LM7805CT) tidak akan panas ketika rangkaian butuh arus yang cukup besar. Tegangan 12 volt DC langsung diambil dari keluaran 2 buah dioda penyearah.

3.4 Relay

Beberapa aplikasi pada industri dan kontrol proses memerlukan relay

sebagai elemen kontrol penting. Relay merupakan saklar elektromagnetik yang berfungsi untuk memutuskan, membuat atau mengubah satu atau lebih kontak elektrik. Ada beberapa macam relay yang terdapat di pasaran. Pada pokoknya


(51)

transistor dan relay mekanis. Dalam perancangan alat, penulis menggunakan relay

mekanis karena lebih awet dan mudah dalam pemakaiannya.

Relay pengendali elektromagnetis (an electromechanical relay = EMR)

adalah saklar magnetis. Relay ini menghubungkan rangkaian beban on / off

dengan pemberian energi elektromagnetis, yang membuka atau menutup kontak pada rangkaian. EMR mempunyai variasi aplikasi yang luas baik pada rangkaian listrik maupun elektronis. Misalnya EMR dapat digunakan pada kontrol dari kran-daya cairan dan di berbagai macam kontrol urutan mesin, misalnya operasi pengeboran (tanah), pengeboran (plat), penggilingan dan pengerindaan.

Gambar 3.4. Simbol Relay

com

Vcc no nc

Q1

R1

100 k

GND D1

IN4001

Gambar 3.5. Relay Dengan Rangkaian Driver

Relay biasanya hanya mempunyai satu kumparan, tetapi relay dapat


(52)

bergerak. Kontak yang bergerak dipasang pada plunger. Kontak ditunjuk sebagai

normally open (NO) dan normally close (NC). Apabila kumparan diberi tenaga,

terjadi medan elektromagnetis. Aksi dari medan pada gilirannya menyebabkan

plunger bergerak pada kumparan kontak NO dan membuka kontak NC. Jarak

gerak plunger biasanya pendek yaitu sekitar 0,25 inchi atau kurang. Kontak NO akan membuka ketika tidak ada arus mengalir pada kumparan, tetapi tertutup secepatnya setelah kumparan menghantarkan arus atau diberi tenaga. Kontak NC akan tertutup apabila kumparan tidak diberi daya dan membuka ketika kumparan diberi daya. Masing-masing kontak biasanya digambarkan sebagai kontak yang tampak dengan kumparan tidak diberi daya. Sebagian besar relay kontrol mesin mempunyai beberapa ketentuan untuk pengubahan kontak NO menjadi NC, atau sebaliknya. Itu berkisar dari kontak sederhana (flip-over

3.5 Perancangan rangkaian Real Time Clock (RTC) DS1307

) untuk melepaskan kontak dan menempatkan kembali dengan perubahan lokasi pegas.Berikut jenis gambar relay yang dipasaran.

RTC adalah jenis pewaktu yang bekerja berdasarkan waktu yang sebenarnya atau dengan kata lain berdasarkan waktu yang ada pada jam kita. Agar dapat berfungsi, pewaktu ini membutuhkan dua parameter utama yang harus ditentukan, yaitu pada saat mulai (start) dan pada saat berhenti (stop).

3V BAT1 3

7

5 6 U2

2

1


(53)

DS1307 merupakan salah satu tipe IC RTC yang dapat bekerja dalam daya listrik rendah. Di dalamnya berisi waktu jam dan kalender dalam format BCD. Waktu jam dan kalender memberikan informasi detik, menit, jam, hari, tanggal, bulan, dan tahun. Pendeteksi sumber listrik juga disediakan untuk mendeteksi kegagalan sumber listrik dan langsung mengalihkannya ke sumber baterai. RTC difungsikan sebagai penyimpan data jam walaupun sumber tegangan utama mati atau rusak.

3.6 Saklar

Saklar adalah sebuah perangkat yang digunakan untuk memutuskan jaringan listrik, atau untuk menghubungkannya. Jadi saklar pada dasarnya adalah alat penyambung atau pemutus aliran listrik. Selain untuk jaringan listrik arus kuat, saklar berbentuk kecil juga dipakai untuk alat komponen elektronika arus lemah.

Secara sederhana, saklar terdiri dari dua bilah logam yang menempel pada suatu rangkaian, dan bisa terhubung atau terpisah sesuai dengan keadaan sambung (on) atau putus (off) dalam rangkaian itu. Material kontak sambungan umumnya dipilih agar supaya tahan terhadap korosi. Kalau logam yang dipakai terbuat dari bahan oksida biasa, maka saklar akan sering tidak bekerja. Untuk mengurangi efek korosi ini, paling tidak logam kontaknya harus disepuh dengan logam anti korosi dan anti karat. pada dasarnya tombol bisa diaplikasikan untuk sensor mekanik, karena bisa dijadikan sebagai pedoman pada mikrokontroller untuk pengaturan alat dalam pengontrolan.


(54)

3.7 FLOW CHART PROGRAM

TIDAK KOLOM =Jumlah Kolom

YA MULAI

SET JUMLAH KOLOM SET JUMLAH BARIS

SET DATA oe = 0

KIRIM KOLOM DAN BARIS KIRIM DATA

Oe =1

GESER (KOLOM + 1)


(55)

BAB 4

PENGUJIAN RANGKAIAN

4.1 Pengujuan Rangkaian Power Suplay

Pengujian rangkaian power supply ini bertujuan untuk mengetahui tegangan yang dikeluarkan oleh rangkaian tersebut, dengan mengukur tegangan keluaran dari power supply menggunakan multimeter digital. Setelah dilakukan pengukuran maka diperoleh besarnya tegangan keluaran sebesar 5 volt. Dengan begitu dapat dipastikan apakah terjadi kesalahan terhadap rangkaian atau tidak. Jika diukur, hasil dari keluaran tegangan tidak murni sebesar +9 Volt dan +12 Volt, tetapi +8.97Volt dan +12.03 Volt. Hasil tersebut dikarenakan beberapa faktor, diantaranya kualitas dari tiap-tiap komponen yang digunakan nilainya tidak murni. Selain itu, tegangan jala-jala listrik yang digunakan tidak stabil.

Vin Vout Beban

5.5 V 5.5 V Ø

5.5 V 5.3 V 100 mA 5.5 V 5.2 V 200 mA 5.5 V 5.15 V 300 mA

5.5 V 5 V 400 mA

5.5 V 4.9 V 500 mA

4.1 Tabel Pengujian Power Suplay

4.2

Pengujian Rangkaian Mikrokontroler ATMega32

Pengujian pada rangkaian mikrokontroler ATMega32 ini dapat dilakukan dengan menghubungkan rangkaian ini dengan rangkaian power supply sebagai


(56)

sumber tegangan. Kaki 10 dihubungkan dengan sumber tegangan 5 volt, sedangkan kaki 11 dihubungkan dengan ground. Kemudian tegangan pada kaki 10 diukur dengan menggunakan Voltmeter. Langkah selanjutnya adalah memberikan program sederhana pada mikrokontroler ATMega32, program yang diberikan adalah sebagai berikut:

#include <mega32.h> #include <delay.h> #include <stdio.h> while (1)

{

// Place your code here PORTA=0xFF;

DDRA=0xFF; {

delay_us(100); PORTA=0x00; DDRA=0x00; }


(57)

4.3 Pengujian Rangkaian Relay

Pengujian rangkaian relay dapat dilakukan dengan memberikan tegangan 5 volt dan 0 volt pada basis transistor C945. Transistor C945 merupakan transistor jenis NPN, transistor jenis ini akan aktip jika pada basis diberi tegangan > 0,7 volt dan tidak aktif jika pada basis diberi tegangan < 0,7 volt. Aktifnya transistor akan mengaktifkan relay. Pada alat ini relay digunakan untuk mengaktifkan/menonaktifkan motor dc secara otomatis, dimana hubungan yang digunakan adalah normally open (NO), berarti relay aktif jika diberi input 5 volt (high) dari mikrokontroler. Dengan demikian jika relay aktip maka motor dc juga akan aktif, sebaliknya jika relay tidak aktip, maka motor dc juga akan aktif.

Pengujian dilakukan dengan memberikan tegangan 5 volt pada basis transistor, jika relay aktip dan motor dc juga aktif, maka rangkaian ini telah berfungsi dengan baik. Pengujian selanjutnya dilakukan dengan menghubungkan input rangkaian ini ke mikrokontroler pada PD.0 kemudian memberikan program sederhana pada mikrokontroler ATmega. Program yang diberikan adalah sebagai berikut:

PORTD.0=1 . . .

Perintah di atas akan memberikan logika high pada PD.0, sehingga PD.0 akan mendapatkan tegangan 5 volt. Tegangan 5 volt ini akan mengaktipkan transistor C945, sehingga relay menjadi aktip dan kipas juga aktif. Berikutnya memberikan program sederhana untuk menonaktipkan relay. Programnya sebagai berikut:


(58)

. . .

Perintah di atas akan memberikan logika low pada PD.0 sehingga PD.0 akan mendapatkan tegangan 0 volt. Tegangan 0 volt ini akan menonaktipkan transistor C945, sehingga relay menjadi tidak aktip dan kipas juga tidak aktif.

4.4 Analisa Program

Bahasa C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah (berorientase mesin) dan bahasa tingkat tinggi (bahasa berorientase pada manusia). Bahasa C berada satu tingkat di atas bahasa yang berorientasi pada mesin, namun tetap satu tingkat dibawah sebagian besar bahasa yang berorientasi persoalan.

Bahasa C cukup dekat dengan komputer untuk memberikan kendali yang besar terhadap detil implementasi pemakaian, namun cukup jauh untuk mengabaikan detil hardware. Karena itulah bahasa C suatu ketika dipandang sebagai bahasa high-level dan pada saat yang lain dilihat sebagai bahasa low-level.

Bahasa C merupakan bahasa pemrograman terstruktur, yang membagi program kedalam bentuk sebuah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya.

Hal ini berkat adanya standarisasi bahasa C yaitu berupa standar ANSI (American National Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C. Memasukkan data dan menampilkan data/informasi merupakan


(59)

tindakan yang sering dilakukan dalam pemrograman. Penampilan data/informasi biasanya ditujukan ke piranti layar (monitor), sedangkan pemasukan data biasanya dilakukan melalui keyboard.

4.5 Pengujian Rangkaian dengan Menjalankan Program

Berikut adalah listing program untuk mengetes huruf R pada matriks 8x8 apakah sudah berfungsi Terlampir :

Display dengan matrix yang disusun dengan LED atau menggunakan LED matrix 8x8 yang sudah jadi, sama saja. Perbedaannya cuma pada saat perakitan, pembuatan display dengan menyusun LED lebih repot.

Moving Text yang sudah jadi, pengaturannya adalah sebagai berikut:

4.6 Pengujian Rangkaian DS 1307

Untuk membaca data tangal dan waktu yg tersimpan di memori RTC Ds1307 dapat dilakukan melalui komunikasi serial I2C spt tampak pada gambar berikut:

Vcc Vcc

Vcc

SDA

DS1307

Crystal 32.768khz

3v bat

1

2

3

5

6 SCL

4 Microcontroller


(60)

DS1307 beropersai sebagai slave pada bus I2C. Cara Access pertama mengirim sinyal START diikuti device address dan alamat sebuah register yg akan dibaca. Beberapa register dapat dibaca sampai STOP condition dikirim. Data waktu dan tanggal tersimpan dalam memori masing masing 1 byte , mulai dari alamat 00H sampai 07H. Sisanya (08H ~ 3FHalamat RAM yg bisa digunakan).


(61)

BAB 5

KESIMPULAN DAN SARAN

5.1Kesimpulan

1. Alat ini berkerja secara manual dengan menjalankan program terlebih dahulu, mikrokontroller memproses data dengan menggunakan Keyboard. 2. Alat ini bekerja tidak berhenti selama 24 jam.

5.2 Saran

1. Dengan beberapa pengembangan dan penyempurnaan sistem dari alat ini akan dapat lebih sempurna lagi hasilnya.

2. Penggunaan Dot Matriks yang lebih bagus sehingga dapat menampilkan tampilan yang kita inginkan dalam pengujiannya akan lebih menarik.


(62)

DAFTAR PUSTAKA

Budiharto, Widodo. 2005. Panduan Lengkap Belajar Mikrokontroller Perancangan

Sistem dan Aplikasi Mikrokontroller. Jakarta: PT. Alex Media

Komputindo.

Elektur, 1996. 302 Rangkaian Elektronika. Penerjemah P.Pratomo dkk. Jakarta: Percetakan PT.Gramedia.

Sultan Setiawan, 2006. Mudah dan Menyenagkan Belajar Mikrokontroler.

Andi Offset.

http://pccontrol.wordpress.com/2011/06/27/pengetahuan-dasar-pemrograman-rtc- ds1307-dengan-bahasa-c-codevision-untuk-avr/


(63)

Skema Rangkain Untuk Mejalankan Program U$2 1 2 3 4 5 6 7 8 9 I1 I2 I4 I3 I6 I8 I5 I7

GND CD+ o1 o2 o4 o3 o6 o8 o7 o5 18 17 16 15 14 13 12 11 10 13 10 15 9 4 16 6 1 13 10 15 9 4 16 6 1 13 10 15 9 4 16 6 1 13 10 15 9 4 16 6 1

8 7 3 14 2 12 11 5 8 7 3 14 2 12 11 5

SER QA

QB

SCK QC SCL QD

QE

RCK QF

QG

G QH*

SER QA SCK QC SCL QD RCK QF G QH* QB QE QG

SER QA SCK QC SCL QD RCK QF G QH*

QG QE QB 14 11 10 12 QH QH QH 13 IC1 IC2 IC3 74LS595D 74LS595D 74LS595D 13 13 12 12 10 10 11 11 14 14

15 1 2 3 4 5 6 7 9

15 8 1 7 2 3 3 14 4 2 5 12 6 11 7 5 9 15 8 1 7 2 3 3 14 4 2 5 12 6 11 7 5 9

Vcc GND SL1-1 SL1-2 SL1-3 SL1-4 SL1-5 VCC GND


(64)

Perancangan Sistem Rangkaian (ADC7)PA7 (ADC6)PA6 (ADC5)PA5 (ADC4)PA4 (ADC3)PA3 (ADC2)PA2 (ADC1)PA1 (ADC0)PA0 (SCK)PB7 (MISO)PB6 (MOSI)PB5 (SS)PB4 (AIN1/INT2)PB3 (AIN0/INT0)PB2 (T1)PB1 (T0/XCK)PB0 (TOSC2)PC7 (TOSC1)PC6 PC5 PC4 PC3 PC2 (SDA)PC1 (SCL)PC0 (OC2)PD7 (ICP)PD6 (OCTA)PD5 (OC1B)PD4 (INT1)PD3 (INT0)PD2 (TXD)PD1 (RXD)PD0 2 3 4 1 IC4 33 34 35 36 37 38 39 40 OUT-1 OUT-2 OUT-6 OUT-7 OUT-8 OUT-10 OUT-9 PAS-3 PAS-2 PAS-1 LED2 LED1 10K R RST 10uF RST MEGA8535-P DS1307 24c64 AT89C2051P USB GND GND GND GND LED7 ind LED3 ind 104 U$11 10K U$5 U$6 10K C9 C9 1 12M 22 D2 22

VCC VCC VCC VCC GND 104 C2 104 C8 D2A D2 R4 10K IC1 9 RESET XTAL2 XTAL1 AREF AVCC AGND VCC GND GND 10 P3.7 P3.5-T1 P3.4-T0 P3.3-INT1/ P2.3-INT0/ P3.1-TXD P3.0-RXD

XTAL2 XTAL1 RST-VPP RN1 20 VCC 1 IC2 5 6 7 8 2K R1 R2 R6 R5 R3 OUT-3 OUT-4 OUT-5 AVR ISP GND GND GND GND GND VCC 22 22 C3 C1 Q1 2 1 16M C5 104 11 10 31 30 32 13 12 X1 4 3 2 1 U$1 1 2 XTAL32 U$2 104 R8 1 2 U$9 3 4 C6 104 BAT3M +@4 -@1 6 7 8 9 X1 X2 VBAT GND SDA SCA OUT VCC C4 104 JP1 SCK MISO MOSI RST VTG 7 1 9 5 2 3 4 6 8 10 8 7 6 5 4 3 2 1 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14

19 18 17 16 15 14 13 12 7 6 5 4 3 2 1-P 0-P 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9


(65)

Program Untuk Mengetes Huruf R Pada Matriks 8x8

/******************************************************* This program was created by the

CodeWizardAVR V3.09 Standard Automatic Program Generator

© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : rtx Feb 2014 Version : 0.9

Date : 3/28/2013 Author : kbram Company : ekatron Comments:

Chip type : ATmega32A Program type : Application

AVR Core Clock frequency: 16.000000 MHz Memory model : Small

External RAM size : 0 Data Stack size : 512

*******************************************************/

#include <mega32a.h> #include <iprom24.h>


(66)

#define sdt PORTC.2 #define sclk PORTC.3 #define soe PORTC.4

#define led PORTC.7

#define signal PIND.0 #define dt_in PINA

unsigned char jam, menit, detik;

// Declare your global variables here unsigned char const pj_kolom = 48;

unsigned char dm_jam[] = {0x00,'1','2',':','3','1',0xaa};

flash char hrf_1[]={0x82,0xff,0xff,0x80,0x00,0x00}; //1 6 flash char hrf_2[]={0x82,0xc1,0xe1,0xb1,0x9f,0x8e,0x00,0x00}; //2 8

flash char hrf_3[]={0x42,0x81,0x89,0x89,0xff,0x76,0x00,0x00}; //3 8

flash char hrf_4[]={0x30,0x38,0x24,0xa2,0xff,0xff,0xa0,0x00,0x00}; //4 9

flash char hrf_5[]={0x4f,0x8f,0x89,0x89,0xf9,0x71,0x00,0x00}; //5 8

flash char hrf_6[]={0x7e,0xff,0x89,0x89,0x89,0xf9,0x72,0x00,0x00}; //6 9

flash char hrf_7[]={0x03,0x03,0xf3,0xfb,0x0f,0x07,0x03,0x00,0x00}; //7 9


(67)

flash char hrf_8[]={0x76,0xff,0x89,0x89,0x89,0xff,0x76,0x00,0x00}; //8 9

flash char hrf_9[]={0x4e,0x9f,0x91,0x91,0x91,0xff,0x7e,0x00,0x00}; //9 9

flash char hrf_0[]={0x7e,0xff,0x81,0x81,0x81,0xff,0x7e,0x00,0x00}; //0 9

flash char hrf_tnd_ttk_koma[]={0x36,0xb6,0x76,0x00,0x00}; //; 5

// I2C Bus functions #include <i2c.h>

// DS1307 Real Time Clock functions #include <ds1307.h>

// Declare your global variables here

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void) {

// Place your code here

signed int txt_idx; bit isi, txt;

pj_kol = pj_kolom;


(68)

key_in = dt_in; // ps2key stroked

// entering control sequence player

// entering page 1

if (key_in == 0x05) // page one if F1 is pressed {

txt_idx = 0;

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;


(69)

if (txt_idx < 2) iprom_write(p1_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = page1_start; ee_addr < page1_end; ee_addr++) {

xkar = text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} }

}

/// entering page 2

if (key_in == 0x06) // page 2 if F2 is pressed {

txt_idx = 0; while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {


(70)

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

} }

} // leaving page 2

// entering page 3

if (key_in == 0x04) // page 3 if F3 is pressed {

txt_idx = 0; while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {


(71)

iprom_write(p3_sts_addr,1); if (txt_idx < 2) iprom_write(p3_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = page3_start; ee_addr < page3_end; ee_addr++) {

xkar = text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} } // leaving page 3 }

// entering page4

if (key_in == 0x0c) // page 4 if F4 is pressed {

txt_idx = 0; while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {


(72)

{

kirim_kolom(pj_kol,ndx); // sepanjang display if (signal == 0)

{

key_in = dt_in; // ascii char in }

}

} }

if (key_in == 13) {

pg_idx = 0;

iprom_write(p4_sts_addr,1); if (txt_idx < 2) iprom_write(p4_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = page4_start; ee_addr < page4_end; ee_addr++) {

xkar = text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;


(73)

}

} // leaving page 4

// entering page 5

if (key_in == 0x03) // page 5 if F5 is pressed {

txt_idx = 0;

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;

iprom_write(p5_sts_addr,1); if (txt_idx < 2) iprom_write(p5_sts_addr,0); text[txt_idx] = 0xaa;


(74)

for (ee_addr = page5_start; ee_addr < page5_end; ee_addr++) {

xkar = text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} }

} // leaving page 5

// entering page 6

if (key_in == 0x0b) // page 6 if F6 is pressed {

txt_idx = 0;

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }


(75)

if (key_in == 13) {

pg_idx = 0;

iprom_write(p6_sts_addr,1); if (txt_idx < 2) iprom_write(p6_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = page6_start; ee_addr < page6_end; ee_addr++) {

xkar = text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} }

} // leaving page 6

/// entering animation text // entering demo 1

if (key_in == 0x83) // demo one if F7 is pressed {


(76)

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;

iprom_write(d1_sts_addr,1); if (txt_idx < 2) iprom_write(d1_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = demo1_start; ee_addr < demo1_end; ee_addr++) {

xkar = d_text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }


(77)

} }

}

/// entering demo 2

if (key_in == 0x0a) // demo 2 if F8 is pressed {

txt_idx = 0; while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;

iprom_write(d2_sts_addr,1); if (txt_idx < 2) iprom_write(d2_sts_addr,0);


(78)

text[txt_idx] = 0xaa;

for (ee_addr = demo2_start; ee_addr < demo2_end; ee_addr++) {

xkar = d_text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} }

} // leaving page 2

// entering demo 3

if (key_in == 0x01) // demo 3 if F9 is pressed {

txt_idx = 0;

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {


(79)

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;

iprom_write(d3_sts_addr,1); if (txt_idx < 2) iprom_write(d3_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = demo3_start; ee_addr < demo3_end; ee_addr++) {

xkar = d_text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} } // leaving page 3 }

// entering demo4

if (key_in == 0x09) // demo 4 if F10 is pressed {


(80)

txt_idx = 0;

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;

iprom_write(d4_sts_addr,1); if (txt_idx < 2) iprom_write(d4_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = demo4_start; ee_addr < demo4_end; ee_addr++) {

xkar = d_text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break;


(81)

} break;

} }

} // leaving page 4

// entering demo 5

if (key_in == 0x1c) // demo 5 if F11 is pressed {

txt_idx = 0;

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {

for (ndx = 0; ndx < 8; ndx ++) // satu baris {

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;


(82)

if (txt_idx < 2) iprom_write(d5_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = demo5_start; ee_addr < demo5_end; ee_addr++) {

xkar = d_text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} }

} // leaving page 5

// entering demo 6

if (key_in == 0x07) // demo 6 if F12 is pressed {

txt_idx = 0;

while (1) {

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil {


(83)

{

kirim_kolom(pj_kol,ndx); // sepanjang display }

}

if (key_in == 13) {

pg_idx = 0;

iprom_write(d6_sts_addr,1); if (txt_idx < 2) iprom_write(d6_sts_addr,0); text[txt_idx] = 0xaa;

for (ee_addr = demo6_start; ee_addr < demo6_end; ee_addr++) {

xkar = d_text[pg_idx]; pg_idx++;

iprom_write(ee_addr,xkar); if (xkar == 0xaa) break; }

break;

} }

} // leaving demo 6 }


(84)

// Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) {

unsigned char jh, jl, mh, ml; // Reinitialize Timer1 value TCNT1H=0x85EE >> 8; TCNT1L=0x85EE & 0xff; // Place your code here

led_tick++;

if (led_tick == 1) led = 0; if (led_tick > 3) led = 1;

if (led_tick > 15) led_tick = 0; rtc_get_time(&jam,&menit,&detik); jh = jam/10;

jl = jam%10; mh = menit/10; ml = menit%10; }

void main(void) {

// Declare your local variables here

unsigned char p1_sts, p2_sts, p3_sts, p4_sts, p5_sts, p6_sts; unsigned char d1_sts, d2_sts, d3_sts, d4_sts, d5_sts, d6_sts;


(85)

// Input/Output Ports initialization // Port A initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=Out Bit1=Out Bit0=Out

DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=0 Bit1=0 Bit0=0 PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization

// Function: Bit7=Out Bit6=In Bit5=In Bit4=Out Bit3=Out Bit2=Out Bit1=In Bit0=In

DDRC=(1<<DDC7) | (0<<DDC6) | (0<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (0<<DDC1) | (0<<DDC0);

// State: Bit7=0 Bit6=T Bit5=T Bit4=0 Bit3=0 Bit2=0 Bit1=T Bit0=T PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization


(86)

DDRD=(0<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

// State: Bit7=T Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected

TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 62.500 kHz // Mode: Normal top=0xFFFF // OC1A output: Disconnected // OC1B output: Disconnected // Noise Canceler: Off

// Input Capture on Falling Edge // Timer Period: 0.5 s

// Timer1 Overflow Interrupt: On // Input Capture Interrupt: Off


(87)

// Compare A Match Interrupt: Off // Compare B Match Interrupt: Off

TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (0<<CS11) | (0<<CS10);

TCNT1H=0x85; TCNT1L=0xEE; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0<<AS2;

TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);

TCNT2=0x00; OCR2=0x00;


(88)

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

// External Interrupt(s) initialization // INT0: On

// INT0 Mode: Falling Edge // INT1: Off

// INT2: Off

GICR|=(0<<INT1) | (1<<INT0) | (0<<INT2);

MCUCR=(0<<ISC11) | (0<<ISC10) | (1<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2);

GIFR=(0<<INTF1) | (1<<INTF0) | (0<<INTF2);

// USART initialization // USART disabled

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization // Analog Comparator: Off

// The Analog Comparator's positive input is // connected to the AIN0 pin

// The Analog Comparator's negative input is // connected to the AIN1 pin

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);


(1)

case '*': {

lebar = 9;

geser_karakter(lebar,pj_kol); }

break; case '(': {

lebar = 6;

geser_karakter(lebar,pj_kol); }

break; case ')': { lebar = 6;

geser_karakter(lebar,pj_kol); }

break;

case '{': {

lebar = 6;

geser_karakter(lebar,pj_kol); }

break; case '}': {


(2)

lebar = 6;

geser_karakter(lebar,pj_kol); }

break; case '[': {

lebar = 13;

geser_karakter(lebar,pj_kol); }

break; case ']': {

lebar = 13;

geser_karakter(lebar,pj_kol); }

break; // angka case '1': {

lebar = 6;

geser_karakter(lebar,pj_kol); }

break; case '2': {


(3)

geser_karakter(lebar,pj_kol); }

break; case '3': { lebar = 8;

geser_karakter(lebar,pj_kol); }

break; case '4': {

lebar = 9;

geser_karakter(lebar,pj_kol); }

break; case '5': {

lebar = 8;

geser_karakter(lebar,pj_kol); }

break; case '6': {

lebar = 9;

geser_karakter(lebar,pj_kol); }


(4)

break; case '7': {

lebar = 9;

geser_karakter(lebar,pj_kol); }

break; case '8': {

lebar = 9;

geser_karakter(lebar,pj_kol); }

break; case '9': {

lebar = 9;

geser_karakter(lebar,pj_kol); }

break; case '0': { lebar = 9;

geser_karakter(lebar,pj_kol); }

break; }


(5)

///

//// converting text from eeprom to text buffer

// unsigned char eeprom2textbuffer (unsigned char xkar)

void kirim_kolom (unsigned char jkol, unsigned char nbar) // jkol = jumlah kolom, nbar = nomor baris

{

unsigned char kar, pos, i; bit xbit;

kar = pos << nbar;

for (i=0x00; i<0x08; i++) {

xbit=kar & 0x01; if (xbit) sdt = 1; kar = kar >> 1; }

soe = 1; }

void kirim_kolom_demo (unsigned char jkol, unsigned char nbar) // jkol = jumlah kolom, nbar = nomor baris


(6)

{

unsigned char kar, pos, i; bit xbit;

pos = 0x01; soe = 0;

for (i=0x00; i<jkol; i++) {

xbit= ((dm_buff[i] >> nbar) & 0x01); if (xbit) sdt = 1;

}

kar = pos << nbar;

soe = 1; }