Program Untuk Mengetes Huruf R Pada Matriks 8x8

  

LAMPIRAN

  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>

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

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

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

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

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

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 {

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;

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

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

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

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

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

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

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

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

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 }

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;

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

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

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

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

  { 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 '.': { 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);

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

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

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

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;

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

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

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