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;