SL1-1 SL1-2 SL1-3 SL1-4 SL1-5

dokumen-dokumen yang mirip
Gambar 4.1 Rangkaian keseluruhan

Listing Program Aquaponik

LAMPIRAN A. Gambar A. Layout alat tongkat tunanetra. Ubiversitas Sumatera Utara

RANGKAIAN LENGKAP. Rangkaian Output Suara Dan Rangkaian Op-Amp

Langkah-langkah pemrograman: 1. Pilih File >> New:

Tabel Data Pengujian 5x Perubahan Posisi. Kanan (V) Kiri (V)

LAMPIRAN A SKEMATIK RANGKAIAN

Langkah-langkah pemrograman: 1. Pilih File >> New:

Kajian Pustaka. Spesifikasi - Krisbow KW Fitur - Krisbow KW06-290

RANCANG BANGUN RAUTAN PENSIL PINTAR BERBASIS MIKROKONTROLER ATMEGA 8535

BAB 3 PERANCANGAN DAN PEMBUATAN. Rangkaian dan Pengujian Sistem Control Aliran Air dengan Mikrokontroler

Penerima Remote SONY dengan ATmega32

Standar Operasional Prosedur Alat

Project : Version : Date : 15/05/2013 Author : F4CG Company : F4CG Comments:

LAMPIRAN A DATA SHEET

Listing Program. // Declare your global variables here

LAMPIRAN. A. Pembuatan Minimun system dan Penanaman Program 1. Rangkaian Minimum System yang telah dilarutkan, di bor dan dipasang komponen

DAFTAR PUSTAKA. Barry, Gwoollard Elektronika Praktis. PT. Praditya Paramitha, Jakarta.

SKEMATIK RANGKAIAN A V R 12V. Out. Gnd. Kontak Motor. Accu 12V. Klakson ISP CONNECTOR PA0 PB0 PB1 PA2 PA4 MOSI MISO PA6. 10uF SCK RST. 10uF. 47uF.

LAMPIRAN A PROGRAM CODE VISION AVR

LAMPIRAN A RANGKAIAN LENGKAP dan FOTO PENGUAT KELAS D

Ping))) Paralax Ultrasonic Range Finder By : Hendawan Soebhakti

A-1 LISTING PROGRAM MIKROKONTROLER

RANCANG BANGUN ALAT KENDALI VOLUME FLUIDA MENGGUNAKAN PEWAKTU BERBASIS MIKROKONTROLER ATMEGA8

RANCANG BANGUN OTOMATISASI PINTU GARASI DENGAN KOMUNIKASI BLUETOOTH BERBASIS MIKROKONTROLER

METODA PENANGGULANGAN BANJIR DI LABORATORIUM OTOMASI

MIKROKONTROLER ATMEGA BERBASIS CODEVISION AVR (I2C DAN APLIKASI RTC) dins D E P O K I N S T R U M E N T S

LAMPIRAN. #include <mega16.h> //menambahkan library atmega16 #include <delay.h> //menambahkan library delay #define ADC_VREF_TYPE 0x40

RANCANG BANGUN ALAT DETEKSI DEHIDRASI MENGGUNAKAN LED DAN FOTODIODA MELALUI WARNA URINE

Timbangan Loadcell 5kg HX711

DAFTAR PUSTAKA. Universitas Sumatera Utara

BAB V PENUTUP. otomatis yang dapat terjadwal.

BAB 3 PERANCANGAN ALAT DAN PEMBUATAN SISTEM PSA 5 V. Mikrokontroler ATMega8535

Membuat Sendiri Robot Line Tracker

BAB IV HASIL KERJA PRAKTEK. sistem perancangan ini memiliki sensor untuk mengetahui seberapa intensitas cahaya

MODUL V: Timer dan Counter

STIKOM SURABAYA BAB IV PEMBAHASAN. 4.1 Perangkat Keras. Informasi waktu yang akan ditunjukkan oleh jarum dan motor power

BAB III PERANCANGAN DAN PEMBUATAN SISTEM. perangkat keras maupun perangkat lunak yang meliputi:

MAX6675 K-Type Thermocouple Temperature Sensor

Pulsa = Frekuensi * 60/20 ; atau Pulsa = frekuensi*30;

MIKROKONTROL ATMega8535 Teknik Elektronika Industri

Sistem Mikrokontroler FE UDINUS

Modul SerLog - Easy Serial Logger

BAB IV HASIL KERJA PRAKTEK

Mikrokontroler AVR. Hendawan Soebhakti 2009

Digital Compass CMPS03 By : Hendawan Soebhakti

BAB IV HASIL DAN PEMBAHASAN. Hasil dan pembahasan merupakan pemaparan dari spesifikasi alat, kinerja

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

Timer / Counter. Hendawan Soebhakti. November 2009

BAB II TINJAUAN PUSTAKA

MICROCONTROLER AVR AT MEGA 8535

BAB IV HASIL KERJA PRAKTEK. MMC (Multi Media Card) merupakan alat untuk menyimpan data digital. Memory card

DAFTAR PUSTAKA.

BAB II DASAR TEORI 2.1. Mikrokontroler AVR ATmega32

MICROCONTROLER AVR AT MEGA 8535

BAB III PERANCANGAN ALAT PENYIMPANAN DATA KECEPATAN ANGIN, ARAH ANGIN DAN SUHU

MIKROKONTROLER ATMEGA BERBASIS CODEVISION AVR (ADC DAN APLIKASI TERMOMETER) dins D E P O K I N S T R U M E N T S

BAB 3 PERANCANGAN ALAT. Rangkaian Catu daya (Power Supply Adaptor) ini terdiri dari satu keluaran, yaitu 5

Dasar Pemrograman C. Hendawan Soebhakti. Oktober 2009

MIKROKONTROLER ATMEGA BERBASIS CODEVISION AVR (SERIAL U(S)ART) dins D E P O K I N S T R U M E N T S

Sistem Minimum Mikrokontroler. TTH2D3 Mikroprosesor

Pengenalan CodeVisionAVR

Teknik-Teknik Penyesuaian Sensor

INSTRUKSI. TTH2D3 Mikroprosesor

PERCOBAAN I PENGENALAN CODEVISION AVR

Sistem Kendali Servo Pada Sumbu Mesin CNC Aciera F5

Pengenalan Bahasa C. 1. Struktur penulisan program. #include < [library2.h] > #define [nama2] [nilai] ;

BAB IV METODE PENELITIAN. serta menghubungkan pin mosi, sck, gnd, vcc, miso, serta reset. Lalu di

DAFTAR PUSTAKA. Bejo, Agus C & AVR Rahasia Kemudahan Bahasa C Dalam Mikrokontroler ATMega 8535.Yogyakarta:Graha Ilmu.

LAMPIRAN A. Gambar A. Skematik Perancangan Solar Tracker Dual Axis. 54 Universitas Sumatera Utara

BAB II KONSEP DASAR PERANCANGAN

MODUL PELATIHAN MIKROKONTROLLER UNTUK PEMULA DI SMK N I BANTUL OLEH: TIM PENGABDIAN MASYARAKAT JURUSAN TEKNIK ELEKTRO

BAB III PERANCANGAN SISTEM

PENAIK TEGANGAN DC 5 VOLT MENJADI TEGANGAN DC 24 VOLT DENGAN METODE SWITCHING POWER SUPPLY TUGAS AKHIR FLORENSI PALENTINA PASARIBU

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

Membuat Robot Line Follower Hendawan Soebhakti Dosen Teknik Elektronika Politeknik Negeri Batam

LAMPIRAN 1 DATA SHEET SERVO GWS S677

BAB III PERANCANGAN ALAT SIMULASI PEGENDALI LAMPU JARAK JAUH DAN DEKAT PADA KENDARAAN SECARA OTOMATIS

JOBSHEET II ANTARMUKA MIKROKONTROLER DENGAN TOGGLE SWITCH

BAB III PERANCANGAN ALAT. dibuat. Gambar 3.1. menunjukkan blok diagram alat secara keseluruhan.

BAB II TINJAUAN PUSTAKA. Atmel AVR adalah jenis mikrokontroler yang paling sering dipakai dalam

BAB III TEORI PENUNJANG. Microcontroller adalah sebuah sistem fungsional dalam sebuah chip. Di

BAB II TINJAUAN PUSTAKA

MENGENAL MIKROKONTROLER ATMEGA-16

LAMPIRAN. Lay Out Minimum Sistem dengan ATMega8

BAB II TINJAUAN PUSTAKA. Gambar 2.1. Simbol LED [8]

MODUL 8 Analog Digital Converter (ADC)

BAB III TEORI PENUNJANG. dihapus berulang kali dengan menggunakan software tertentu. IC ini biasanya

How2Use DT-AVR ATMEGA128L BMS. Oleh: Tim IE. Gambar 1 Tata Letak DT-AVR ATMEGA128L BMS

Membuat Robot Tidak Susah. Hendawan Soebhakti Dosen Teknik Elektro Politeknik Batam Portal : hendawan.wordpress.

TUGAS MATAKULIAH APLIKASI KOMPUTER DALAM SISTEM TENAGA LISTRIK FINAL REPORT : Pengendalian Motor DC menggunakan Komputer

BAB II DASAR TEORI. 2.1 Ethanol

REMOTE CONTROL LAMPU KAMAR DENGAN FITUR PWM DAN SEVEN SEGMENT BERBASIS MIKROKONTROLER ATmega 8535

BAB II DASAR TEORI. mikrokontroler yang berbasis chip ATmega328P. Arduino Uno. memiliki 14 digital pin input / output (atau biasa ditulis I/O, dimana

Tata letak konektor DT-AVR ATMEGA168 BMS adalah sebagai berikut: Persiapan hardware DT-AVR ATMEGA168 BMS adalah sebagai berikut:

Transkripsi:

Skema Rangkain Untuk Mejalankan Program 1 2 3 4 5 6 7 8 9 U$2 I1 o1 I2 o2 I3 o3 I4 o4 I5 o5 I6 o6 I7 o7 I8 o8 GND CD+ 18 17 16 15 14 13 12 11 10 13 10 15 94 16 61 13 10 15 94 16 61 8 73 14 2 12 11 5 13 10 15 94 16 61 13 10 15 94 16 61 8 73 14 2 12 11 5 15 8 1 7 2 3 3 14 4 2 5 12 6 11 7 5 9 IC2 SER QA QB 14 SCK QC SCL QD 11 10 QE RCK QF QG QH 12 G QH* 74LS595D 13 15 8 IC3 SER QA QB 14 1 7 2 3 SCK QC SCL QD 11 3 14 4 2 10 5 12 6 11 7 5 QE RCK QF QG QH 12 9 G QH* 74LS595D 13 Vcc IC1 SER QA QB SCK QC SCL QD QE RCK QF QG 14 11 10 12 QH 15 12 3 45 6 7 9 G QH* 74LS595D 13 SL1-1 SL1-2 SL1-3 SL1-4 SL1-5 VCC C2 C1 C3 C4 C5 C6 GND GND

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 22 D2 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

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 Program type : ATmega32A : 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>

#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

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;

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; iprom_write(p1_sts_addr,1);

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) /// 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

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) pg_idx = 0;

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) // 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 for (ndx = 0; ndx < 8; ndx ++) // satu baris

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)

// 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;

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) // 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

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) // leaving page 6 /// entering animation text // entering demo 1 if (key_in == 0x83) // demo one if F7 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(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)

/// 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);

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) // 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

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) // leaving page 3 // entering demo4 if (key_in == 0x09) // demo 4 if F10 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(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)

// 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; iprom_write(d5_sts_addr,1);

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) // 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 for (ndx = 0; ndx < 8; ndx ++) // satu baris

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) // leaving demo 6 unsigned char led_tick;

// 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;

// 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 // Function: Bit7=In Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In

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

// 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; // Timer(s)/Counter(s) Interrupt(s) initialization

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); SFIOR=(0<<ACME);

// ADC initialization // ADC disabled ADCSRA=(0<<ADEN) (0<<ADSC) (0<<ADATE) (0<<ADIF) (0<<ADIE) (0<<ADPS2) (0<<ADPS1) (0<<ADPS0); // SPI initialization // SPI disabled SPCR=(0<<SPIE) (0<<SPE) (0<<DORD) (0<<MSTR) (0<<CPOL) (0<<CPHA) (0<<SPR1) (0<<SPR0); // TWI initialization // TWI disabled TWCR=(0<<TWEA) (0<<TWSTA) (0<<TWSTO) (0<<TWEN) (0<<TWIE); // Bit-Banged I2C Bus initialization // I2C Port: PORTC // I2C SDA bit: 1 // I2C SCL bit: 0 // Bit Rate: 100 khz // Note: I2C settings are specified in the // Project Configure C Compiler Libraries I2C menu. i2c_init(); // DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off

// SQW/OUT pin state: 0 rtc_init(0,0,0); // Global enable interrupts #asm("sei") while (1) // Place your code here p1_sts = iprom_read(p1_sts_addr); p2_sts = iprom_read(p2_sts_addr); p3_sts = iprom_read(p3_sts_addr); p4_sts = iprom_read(p4_sts_addr); p5_sts = iprom_read(p5_sts_addr); p6_sts = iprom_read(p6_sts_addr); d1_sts = iprom_read(d1_sts_addr); d2_sts = iprom_read(d2_sts_addr); d3_sts = iprom_read(d3_sts_addr); d4_sts = iprom_read(d4_sts_addr); d5_sts = iprom_read(d5_sts_addr); d6_sts = iprom_read(d6_sts_addr); demo_jam(); // untuk jam

if ((p1_sts == 0) & (p2_sts == 0) & (p3_sts == 0) & (p4_sts == 0) & (p5_sts == 0) & (p6_sts == 0)) page_empty_run(); if ((d1_sts == 0) & (d2_sts == 0) & (d3_sts == 0) & (d4_sts == 0) & (d5_sts == 0) & (d6_sts == 0)) anime_empty_run(); if (p1_sts == 1) page1run(); if (d1_sts == 1) demo1run(); if (p2_sts == 1) page2run(); if (d2_sts == 1) demo2run(); if (p3_sts == 1) page3run(); if (d3_sts == 1) demo3run(); if (p4_sts == 1) page4run(); if (d4_sts == 1) demo4run(); if (p5_sts == 1) page5run(); if (d5_sts == 1) demo5run(); if (p6_sts == 1) page6run(); if (d6_sts == 1) demo6run(); //;;function

void page1run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol, cnt; unsigned int ee_addr; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting txt = 0; ee_addr = page1_start; while (1) x_kar = iprom_read(ee_addr++); // ambil text dari ram text if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++;

/// /// /// void page2run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol; unsigned int ee_addr; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting txt = 0; ee_addr = page2_start; while (1) // ambil text dari flash x_kar = iprom_read(ee_addr++); // ambil text dari ram text if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++;

/// /// /// void page3run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol; unsigned int ee_addr; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting txt = 0; ee_addr = page3_start; while (1) // ambil text dari flash x_kar = iprom_read(ee_addr++); // ambil text dari ram text if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++;

/// /// /// void page4run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol; unsigned int ee_addr; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting txt = 0; ee_addr = page4_start; while (1) // ambil text dari flash x_kar = iprom_read(ee_addr++); // ambil text dari ram text if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++;

/// /// /// void page5run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol; unsigned int ee_addr; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting txt = 0; ee_addr = page5_start; while (1) // ambil text dari flash x_kar = iprom_read(ee_addr++); // ambil text dari ram text if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++; /// /// ///

void page6run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol; unsigned int ee_addr; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting txt = 0; ee_addr = page6_start; while (1) // ambil text dari flash x_kar = iprom_read(ee_addr++); // ambil text dari ram text if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++;

// demo1run void demo1run (void) unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly; unsigned int ee_addr; pj_kol = pj_kolom; pj_dem = 0; for (cnt = 0; cnt < pj_kol+1; cnt++) x_kar = buff[cnt]; if (x_kar == 0x00) pj_dem++; if (x_kar!= 0x00) pj_dem--; geser_karakter(pj_dem/2,pj_kol); // centering demo text // scroll down for(cnt = 0; cnt< 8; cnt++) // sampai habis panjang baris for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

demo1_buff[idx] = demo1_buff[idx] << 1; // scroll up for(cnt = 0; cnt < 8; cnt++) // sampai habis panjang baris for (idx = 0; idx < pj_kol; idx++) // satu kali tampil demo1_buff[idx] = demo1_buff[idx] >> 1; for (cnt = 0; cnt < pj_kol; cnt++) // sampai habis panjang kolom demo1_buff[cnt] = buff[cnt]; // isi buffer demo dari buff text // demo 2 run void demo2run (void) unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly; unsigned int ee_addr;

pj_kol = pj_kolom; //kol = 2 * pj_kolom; dm_idx = 0; // isi buff dengan demo dari eeprom kol_idx = 0; pj_dem = 0; ee_addr = demo2_start; geser_karakter(pj_dem/2,pj_kol); // centering demo text for(cnt = 0; cnt< (pj_kol+1); cnt++) // sampai habis panjang kolom for (idx = 0; idx < pj_kol; idx++) // satu kali tampil buff[pj_kol - idx] = buff[pj_kol - (idx+1)]; // geser kanan // void demo3run (void)

unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly; unsigned int ee_addr; pj_kol = pj_kolom; //kol = 2 * pj_kolom; geser_karakter(pj_dem/2,pj_kol); // centering demo text for (cnt = 0; cnt < pj_kol; cnt++) // sampai habis panjang kolom demo1_buff[cnt] = buff[cnt]; // isi buffer demo dari buff text for(cnt = 0; cnt< 8; cnt++) // tampil sejenak sebelum scrolling for (idx = 0; idx < pj_kol; idx++) // satu kali tampil for (dly = 0; dly < 6; dly++) // delay tampil sesaat statis for (ndx = 0; ndx < 8; ndx ++) // satu baris kirim_kolom_demo_1(pj_kol,ndx);

// geser kekiri dan kekanan for(cnt = 0; cnt < pj_kol/2; cnt++) // sampai habis panjang baris buff[(pj_kol/2)-cnt] = 0x00; //kanan buff[((pj_kol/2) - 1)+cnt] = 0x00; //kiri // // demo4 void demo4run (void) unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly; unsigned int ee_addr; pj_kol = pj_kolom; //kol = 2 * pj_kolom; pj_dem = 0; for (cnt = 0; cnt < pj_kol+1; cnt++) x_kar = buff[cnt]; if (x_kar == 0x00) pj_dem++;

if (x_kar!= 0x00) pj_dem--; geser_karakter(pj_dem/2,pj_kol); // centering demo text for (idx = 0; idx < pj_kol; idx++) // satu kali tampil for (dly = 0; dly < 2; dly++) // delay tampil sesaat statis for (ndx = 0; ndx < 8; ndx ++) // satu baris kirim_kolom_demo_1(pj_kol,ndx); // demo 5 void demo5run (void) unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly; unsigned int ee_addr;

pj_kol = pj_kolom; //kol = 2 * pj_kolom; pj_dem = 0; for (cnt = 0; cnt < pj_kol+1; cnt++) x_kar = buff[cnt]; if (x_kar == 0x00) pj_dem++; if (x_kar!= 0x00) pj_dem--; geser_karakter(pj_dem/2,pj_kol); // centering demo text for(cnt = 0; cnt< 8; cnt++) // tampil sejenak for (idx = 0; idx < pj_kol; idx++) // satu kali tampil demo1_buff[idx] = buff[idx]; // isi buffer demo dari buff text for (dly = 0; dly < 15; dly++) // delay tampil sesaat statis

for (ndx = 0; ndx < 8; ndx ++) // satu baris kirim_kolom_demo_1(pj_kol,ndx); // nyala for(cnt = 0; cnt< pj_kol+1; cnt++) // sampai habis panjang kolom buff[cnt] = 0x00; for (dly = 0; dly < 50; dly++) // delay tampil sesaat statis for (ndx = 0; ndx < 8; ndx ++) // satu baris kirim_kolom_demo_1(pj_kol,ndx); // nyala // demo 6 void demo6run (void) unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly, ix, iy;

unsigned int ee_addr; pj_kol = pj_kolom; pj_dem = 0; for (cnt = 0; cnt < pj_kol+1; cnt++) x_kar = buff[cnt]; if (x_kar == 0x00) pj_dem++; if (x_kar!= 0x00) pj_dem--; geser_karakter(pj_dem/2,pj_kol); // centering demo text di buff // tampil sesaat for (idx = 0; idx < pj_kol; idx++) // satu kali tampil for (dly = 0; dly < 6; dly++) // delay tampil sesaat statis for (ndx = 0; ndx < 8; ndx ++) // satu baris kirim_kolom(pj_kol,ndx); // dari buff buff[idx] = buff[idx];

// hapus perbaris ix = 0xfe; iy = 0x01; for (idx = 0; idx < 8; idx++) for(cnt = 0; cnt < pj_kol; cnt++) // sampai habis panjang baris buff[cnt+1] = buff[cnt+1] iy; buff[cnt] = buff[cnt] & ix ; // hapus dari 0 ke 7 ix = ix << 1; iy = iy << 1; void page_empty_run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting

txt = 0; while (1) // ambil text dari flash x_kar = page_empty[p_idx]; if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++; void anime_empty_run (void) unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol; bit txt; pj_kol = pj_kolom; m_idx = 0; p_idx = 0; // index moving lebar karakter // index greeting txt = 0; while (1) // ambil text dari flash x_kar = anime_empty[p_idx];

if (x_kar == 0xaa) txt = kar_check(x_kar); if (txt == 1) kol_idx = ascii2buff(x_kar); p_idx ++; // isi buffer demo waktu void demo_jam (void) unsigned char dm_idx, kol_idx, pj_demo, x_kar, pj_kol, cnt, idx, ndx, dly; pj_kol = pj_kolom; pj_demo = ((pj_kol - pj_demo)/2); //centering text geser_karakter (pj_demo, pj_kol); for(cnt = 0; cnt< pj_kol+1; cnt++) // sampai habis panjang kolom dm_buff[cnt] = buff[cnt]; // isi buffer demo dari buff text

for(cnt = 0; cnt< 8; cnt++) // sampai habis panjang baris for (idx = 0; idx < pj_kol; idx++) // satu kali tampil dm_buff[idx] = dm_buff[idx] << 1; unsigned char ascii2dis (unsigned char xkar) unsigned char ckar,cindex, lebar, pj_kol; pj_kol = pj_kolom; switch (xkar) case 'A': // 12 lebar = 9; case 'B': lebar = 9;

case 'C': lebar = 9; case 'D': lebar = 9; case 'E': lebar = 8; case 'F': lebar = 8;

case 'G': lebar = 8; case 'H': lebar = 9; case 'I': lebar = 6; case 'J': lebar = 9; case 'K':

lebar = 9; case 'L': lebar = 8; case 'M': lebar = 11; case 'N': lebar = 11; case 'O': lebar = 9;

case 'P': lebar = 9; case 'Q': lebar = 9; case 'R': lebar = 9; case 'S': lebar = 9;

case 'T': lebar = 10; case 'U': lebar = 9; case 'V': lebar = 11; case 'W': lebar = 11; case 'X':

lebar = 11; case 'Y': lebar = 10; case 'Z': lebar = 11; // tanda tanda baca case ',': lebar = 5; case '.':

lebar = 4; case '/': lebar = 10; case ';': lebar = 5; case ':': lebar = 4; case 0x27: lebar = 5;

case '-': lebar = 8; case '+': lebar = 11; case ' ': lebar = 4; case '>': lebar = 8;

case '<': lebar = 10; case '?': lebar = 11; case 0x0b: lebar = 8; case 0x0c: lebar = 10; case '=':

lebar = 8; case '!': lebar = 4; case '@': lebar = 11; case '#': lebar = 13; case '$': lebar = 10;

case '%': lebar = 10; case '^': lebar = 11; case '&': lebar = 10; case '~': lebar = 12;

case '*': lebar = 9; case '(': lebar = 6; case ')': lebar = 6; case '': lebar = 6; case '':

lebar = 6; case '[': lebar = 13; case ']': lebar = 13; // angka case '1': lebar = 6; case '2': lebar = 8;

case '3': lebar = 8; case '4': lebar = 9; case '5': lebar = 8; case '6': lebar = 9;

case '7': lebar = 9; case '8': lebar = 9; case '9': lebar = 9; case '0': lebar = 9;

/// //// 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

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;