• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2021

Membagikan "SL1-1 SL1-2 SL1-3 SL1-4 SL1-5"

Copied!
65
0
0

Teks penuh

(1)

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 C2 C1 C3 C4 C5 C6

(2)

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 1IC4 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-3OUT-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

(3)

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>

(4)

#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

(5)

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;

(6)

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

(7)

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 {

(8)

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;

(9)

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 {

(10)

{

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;

(11)

}

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

(12)

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 }

(13)

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 {

(14)

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

(15)

} }

}

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

(16)

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 {

(17)

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 {

(18)

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;

(19)

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

(20)

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 {

(21)

{

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 }

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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; // index moving lebar karakter p_idx = 0; // 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) break;

txt = kar_check(x_kar); if (txt == 1) { kol_idx = ascii2buff(x_kar); p_idx ++; }

(31)

} }

/// /// ///

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; // index moving lebar karakter p_idx = 0; // 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) break;

txt = kar_check(x_kar); if (txt == 1) { kol_idx = ascii2buff(x_kar); p_idx ++; } }

(32)

}

/// /// ///

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; // index moving lebar karakter p_idx = 0; // 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) break;

txt = kar_check(x_kar); if (txt == 1) { kol_idx = ascii2buff(x_kar); p_idx ++; } } }

(33)

/// /// ///

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; // index moving lebar karakter p_idx = 0; // 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) break;

txt = kar_check(x_kar); if (txt == 1) { kol_idx = ascii2buff(x_kar); p_idx ++; } } }

(34)

/// /// ///

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; // index moving lebar karakter p_idx = 0; // 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) break;

txt = kar_check(x_kar); if (txt == 1) { kol_idx = ascii2buff(x_kar); p_idx ++; } } } /// /// ///

(35)

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; // index moving lebar karakter p_idx = 0; // 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) break;

txt = kar_check(x_kar); if (txt == 1) { kol_idx = ascii2buff(x_kar); p_idx ++; } } }

(36)

// 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) break; } 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 {

(37)

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;

(38)

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

(39)

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

(40)

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

(41)

if (x_kar != 0x00) break; }

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;

(42)

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) break; } 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 }

}

(43)

{

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

(44)

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) break; } 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]; }

(45)

}

// 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; // index moving lebar karakter p_idx = 0; // index greeting

(46)

txt = 0; while (1)

{ // ambil text dari flash x_kar = page_empty[p_idx];

if (x_kar == 0xaa) break; 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; // index moving lebar karakter p_idx = 0; // index greeting

txt = 0; while (1)

{ // ambil text dari flash x_kar = anime_empty[p_idx];

(47)

if (x_kar == 0xaa) break; 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 }

(48)

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; geser_karakter(lebar,pj_kol); } break; case 'B': { lebar = 9;

(49)

geser_karakter(lebar,pj_kol); } break; case 'C': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'D': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'E': { lebar = 8; geser_karakter(lebar,pj_kol); } break; case 'F': { lebar = 8; geser_karakter(lebar,pj_kol); }

(50)

break; case 'G': { lebar = 8; geser_karakter(lebar,pj_kol); } break; case 'H': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'I': { lebar = 6; geser_karakter(lebar,pj_kol); } break; case 'J': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'K':

(51)

{ lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'L': { lebar = 8; geser_karakter(lebar,pj_kol); } break; case 'M': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case 'N': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case 'O': { lebar = 9;

(52)

geser_karakter(lebar,pj_kol); } break; case 'P': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'Q': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'R': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'S': { lebar = 9; geser_karakter(lebar,pj_kol); }

(53)

break; case 'T': { lebar = 10; geser_karakter(lebar,pj_kol); } break; case 'U': { lebar = 9; geser_karakter(lebar,pj_kol); } break; case 'V': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case 'W': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case 'X':

(54)

{ lebar = 11; geser_karakter(lebar,pj_kol); } break; case 'Y': { lebar = 10; geser_karakter(lebar,pj_kol); } break; case 'Z': { lebar = 11; geser_karakter(lebar,pj_kol); } break;

// tanda tanda baca case ',': { lebar = 5; geser_karakter(lebar,pj_kol); } break; case '.': {

(55)

lebar = 4; geser_karakter(lebar,pj_kol); } break; case '/': { lebar = 10; geser_karakter(lebar,pj_kol); } break; case ';': { lebar = 5; geser_karakter(lebar,pj_kol); } break; case ':': { lebar = 4; geser_karakter(lebar,pj_kol); } break; case 0x27: { lebar = 5; geser_karakter(lebar,pj_kol);

(56)

} break; case '-': { lebar = 8; geser_karakter(lebar,pj_kol); } break; case '+': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case ' ': { lebar = 4; geser_karakter(lebar,pj_kol); } break; case '>': { lebar = 8; geser_karakter(lebar,pj_kol); } break;

(57)

case '<': { lebar = 10; geser_karakter(lebar,pj_kol); } break; case '?': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case 0x0b: { lebar = 8; geser_karakter(lebar,pj_kol); } break; case 0x0c: { lebar = 10; geser_karakter(lebar,pj_kol); } break; case '=': {

(58)

lebar = 8; geser_karakter(lebar,pj_kol); } break; case '!': { lebar = 4; geser_karakter(lebar,pj_kol); } break; case '@': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case '#': { lebar = 13; geser_karakter(lebar,pj_kol); } break; case '$': { lebar = 10; geser_karakter(lebar,pj_kol);

(59)

} break; case '%': { lebar = 10; geser_karakter(lebar,pj_kol); } break; case '^': { lebar = 11; geser_karakter(lebar,pj_kol); } break; case '&': { lebar = 10; geser_karakter(lebar,pj_kol); } break; case '~': { lebar = 12; geser_karakter(lebar,pj_kol); } break;

(60)

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 '}': {

(61)

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': { lebar = 8;

(62)

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

(63)

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

(64)

///

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

(65)

{

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;

Referensi

Dokumen terkait

Pertunjukan Nini Thowong merupakan salah satu kesenian yang ada di Desa Panjangrejo Kecamatan Pundong Kabupaten Bantul.Pada awalnya warga sekitar mempunyai keyakinan bahwa

Analisis Lingkungan Eksternal yang kedua adalah model tekanan-tekanan kompetisi yang menjelaskan tentang lima ancaman, yaitu persaingan dari pesaing- pesaing yang sudah ada,

Para PNS lingkungan Kecamatan dan Kelurahan wajib apel pagi setiap hari senin di Halaman Kantor Kecamatan Kebayoran Baru, dan akan diberikan teguran kepada yang tidak ikut apel

Kompetensi adalah suatu kemampuan (keterampilan, sikap, dan pengetahuan) yang dimiliki seseorang yang dapat menunjukkan kinerja unggul dalam melakukan pekerjaan..

Tujuan dan manfaat desain adalah melestarikan nilai-nilai budaya yang terkandung dalam cerita nusantara serta menyajikan cerita rakyat Jaka Tarub dan 7 Bidadari

Untuk mengarahkan penelitian agar dapat menjawab tujuan penelitian dengan tepat dan fokus, hipotesis penelitian dirumuskan sebagai berikut : “Konservasi kedawung

Untuk pengukuran polarisasi, saat wireless USB adapter yang ada di dalam waveguide antena wajanbolic berada pada posisi vertikal dan antena pada access point juga pada

Untuk variabel kualitas pelayanan fiskus, diperoleh nilai koefisien sebesar 0,071 dengan tdana positif yang berarti apabila pada variabel kualitas pelayanan fiskus