Skema Rangkain Untuk Mejalankan Program

  Skema Rangkain Untuk Mejalankan Program U$2

  4

  10

  15

  9

  4

  16

  6

  1

  13

  10

  15

  9

  16

  1

  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 QG QE 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 1 7 2 3 5 12 7 5 15 8 4 2 3 14 6 11 9 Vcc GND

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

  13

  6

  1

  18

  2

  3

  4

  5

  6

  7

  8

  I2 I4

  I3 I6

  I8 I5

  I7 GND CD+ o1 o2 o4 o3 o6 o8 o7 o5

  17

  16

  16

  15

  14

  13

  12

  11

  10

  13

  10

  15

  9

  4

  VCC GND C2 C1 C3 C4 C5 C6

  Perancangan Sistem Rangkaian LED2 R RST 10K LED1 104 U$11 U$5 10uF RST OUT-10 GND 104 C2 PAS-3 PAS-2 PAS-1 OUT-9 GND 22 D2

C9 1 C9

12M

22 10K

  10K U$6 VCC 4 104 C8 D2A D2 VCC LED3 AT89C2051P ind P3.7 P3.5-T1 P3.4-T0 P3.3-INT1/ P2.3-INT0/ P3.1-TXD P3.0-RXD

XTAL2

XTAL1 RST-VPP IC2 X1 1-P 0-P USB 1 2

  3 R4 VCC 10K 10 GND 2 19 1 RN1 7 1 18 3 1 6 17 4 1 5 16 5 4 1 6 15 1 3 14 7 1 2

8

13

1

12

9

1

VCC 20 Q1 1 2 16M VCC 9 12 32 13 IC1 RESET (ADC7)PA7 XTAL1 (ADC2)PA2 XTAL2 (ADC4)PA4 AREF (ADC0)PA0 (ADC3)PA3 (ADC6)PA6 (ADC5)PA5 (ADC1)PA1 35 37 39 38 34 33 36 40 22 C3 C1 22 (MISO)PB6 10 11 31

  30 AVR ISP GND (SS)PB4 GND VCC (MOSI)PB5 AGND (SCK)PB7 AVCC (AIN1/INT2)PB3 (AIN0/INT0)PB2 (T0/XCK)PB0 (T1)PB1 3 4 RST 5 MOSI 2 6 MISO 1 7 SCK 8 VTG GND 2 9 5 1 7

8 GND

6 GND

4 GND

3 GND

10 JP1 U$1 VCC 104 R8 GND C5 104 1 IC4 2 8 7 (SDA)PC1 (TOSC2)PC7 (TOSC1)PC6 PC2 OUT-3 PC5 PC4 OUT-5 PC3 OUT-4 27 29 26 25 22 104 28 23 24 R3 C4 R6 R5

  1 XTAL32 U$2 2 C6 3 1 2 OUT X2 X1 VBAT SCA VCC 6 7 8 4

  3 24c64 5 6 (SCL)PC0 R2 R1 2K (OC2)PD7 (OC1B)PD4 ind (OCTA)PD5 LED7 BAT3M (INT1)PD3 (INT0)PD2 (TXD)PD1 (ICP)PD6 17 18 14 19 DS1307 20 15 16 21 104 U$9 +@4 -@1 4 GND SDA 9 MEGA8535-P (RXD)PD0 OUT-1 OUT-6 OUT-2 OUT-7 OUT-8 GND

  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;

  1;

  soe =

  }