Lampiran

download Lampiran

of 26

description

[Propeller Display Berbasis Mikrokontroler ATmega16, Scheme & Source Code C]

Transcript of Lampiran

  • 63

    LAMPIRAN

  • 64

    1. Karakter Huruf, Angka dan Simbol Pada Propeller Display

  • 65

  • 66

  • 67

  • 68

    2. Program Propeller Display

    2.1. Mikrokontroler ATmega16 (1)

    a) mikro1.h

    /*****************************************************

    This program was produced by the

    CodeWizardAVR V1.25.3 Standard

    Automatic Program Generator

    Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com

    Project :

    Version :

    Date : 08/10/2012

    Author : DutchA

    Company : RnB

    Comments:

    Chip type : ATmega16L

    Program type : Application

    Clock frequency : 12,000000 MHz

    Memory model : Small

    External SRAM size : 0

    Data Stack size : 256

    *****************************************************/

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #define baris1 PORTB

    #define baris2 PORTA

    unsigned int panjang_teks1,panjang_teks2,geser,col=50;

    unsigned char text1[50],data_bit1[250];

    unsigned char text2[50],data_bit2[250];

    // unsigned f;

    // void clock(unsigned int g) // d= delay(a)

    // {

    // unsigned int x;

    // for(x=0;x

  • 69

    void isi_bitBawah()

    {

    unsigned int a,c,x,i,digit;

    col = panjang_teks2 * 6;

    c = 0;

    for(digit=0;digit

  • 70

    { scan_code();

    if (apret==0x66){cnt_addr=0;}

    if (apret==0x83){goto next2;}

    datascan2[cnt_addr]=kbd; }

    next2:

    strcpy (text2, datascan2);

    panjang_teks2 = strlen(text2);

    isi_bitBawah();

    delay_ms(50);

    }

    void showMenu()

    {

    /*

    up :(apret==0x03)

    down :(apret==0x0B)

    ok :(apret==0x83)

    cancel:(apret==0x0A)

    */

    menu01:

    delay_ms(20);

    PORTC.4=1;PORTC.5=0;PORTC.6=0;PORTC.7=0;

    scan_code();

    if (apret==0x83){ //ok

    simpan_default();

    goto lanjut;

    }

    if (apret==0x0B){

    goto menu02; //down

    }

    goto menu01;

    menu02:

    delay_ms(20);

    scan_code();

    if (apret==0x83) { //ok

    goto menu03;

    }

    if (apret==0x03) { //up

    goto menu01;

    }

    goto menu02;

    menu03:

    PORTC.4=1;PORTC.5=1;PORTC.6=0;PORTC.7=0;

    scan_code();

    if (apret==0x83) { //ok

    simpan_atas();

    delay_ms(800);

    goto menu04;

    }

    if (apret==0x0B) { //down

    goto menu04;

    }

    if (apret==0x0A){

    goto menu01; //cancel

    }

    goto menu03;

    menu04:

    scan_code();

    if (apret==0x83) { //ok

    simpan_bawah();

    delay_ms(800);

    goto menu05;

    }

    if (apret==0x03) { //up

    goto menu03;

    }

    if (apret==0x0B) { //down

  • 71

    goto menu05;

    }

    if (apret==0x0A){

    goto menu01; //cancel

    }

    goto menu04;

    menu05:

    PORTC.4=1;PORTC.5=1;PORTC.6=0;PORTC.7=0;

    scan_code();

    if (apret==0x83) { //ok

    delay_ms(800);

    goto lanjut;

    }

    if (apret==0x03) { //up

    goto menu04;

    }

    if (apret==0x0A){

    goto menu01; //cancel

    }

    goto menu05;

    lanjut:

    }

    // External Interrupt 0 service routine

    interrupt [EXT_INT0] void ext_int0_isr(void)

    {

    tampil(1,3); //tampil depan

    delay_ms(20);

    tampil(1,3); //tampil belakang

    }

    void main(void)

    {

    PORTA=0x00;

    DDRA=0xFF;

    PORTB=0x00;

    DDRB=0xFF;

    PORTC=0x00;

    DDRC=0xF0;

    PORTD=0x00;

    DDRD=0x00;

    TCCR0=0x00;

    TCNT0=0x00;

    OCR0=0x00;

    TCCR1A=0x00;

    TCCR1B=0x00;

    TCNT1H=0x00;

    TCNT1L=0x00;

    ICR1H=0x00;

    ICR1L=0x00;

    OCR1AH=0x00;

    OCR1AL=0x00;

    OCR1BH=0x00;

    OCR1BL=0x00;

    ASSR=0x00;

    TCCR2=0x00;

    TCNT2=0x00;

    OCR2=0x00;

    // External Interrupt(s) initialization

    // INT0: On

    // INT0 Mode: Rising Edge

    // INT1: Off

    // INT2: Off

    GICR|=0x40;

    MCUCR=0x03;

  • 72

    MCUCSR=0x00;

    GIFR=0x40;

    TIMSK=0x00;

    ACSR=0x80;

    SFIOR=0x00;

    showMenu();

    #asm("sei")

    while (1)

    {

    PORTC.4=1;PORTC.5=0;PORTC.6=0;PORTC.7=1; //LED hijau garis tepi

    };

    }

    b) Led_Atas.h const char LedAtas[] ={ 0,0,0,0,0, 0,0,0,0,0,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0x00, 0x00, 0x5F, 0x00, 0x00,// !

    0x00, 0x07, 0x00, 0x07, 0x00,// "

    0x14, 0x7F, 0x14, 0x7F, 0x14,// #

    0x24, 0x2A, 0x7F, 0x2A, 0x12,// $

    0x23, 0x13, 0x08, 0x64, 0x62,// %

    0x36, 0x49, 0x55, 0x22, 0x50,// &

    0x00, 0x05, 0x03, 0x00, 0x00,// '

    0x00, 0x1C, 0x22, 0x41, 0x00,// (

    0x00, 0x41, 0x22, 0x1C, 0x00,// )

    0x08, 0x2A, 0x1C, 0x2A, 0x08,// *

    0x08, 0x08, 0x3E, 0x08, 0x08,// +

    0x00, 0x50, 0x30, 0x00, 0x00,// ,

    0x08, 0x08, 0x08, 0x08, 0x08,// -

    0x00, 0x30, 0x30, 0x00, 0x00,// .

    0x20, 0x10, 0x08, 0x04, 0x02,// /

    0x3E, 0x51, 0x49, 0x45, 0x3E,// 0

    0x00, 0x42, 0x7F, 0x40, 0x00,// 1

  • 73

    0x42, 0x61, 0x51, 0x49, 0x46,// 2

    0x21, 0x41, 0x45, 0x4B, 0x31,// 3

    0x18, 0x14, 0x12, 0x7F, 0x10,// 4

    0x27, 0x45, 0x45, 0x45, 0x39,// 5

    0x3C, 0x4A, 0x49, 0x49, 0x30,// 6

    0x01, 0x71, 0x09, 0x05, 0x03,// 7

    0x36, 0x49, 0x49, 0x49, 0x36,// 8

    0x06, 0x49, 0x49, 0x29, 0x1E,// 9

    0x00, 0x36, 0x36, 0x00, 0x00,// :

    0x00, 0x56, 0x36, 0x00, 0x00,// ;

    0x00, 0x08, 0x14, 0x22, 0x41,// <

    0x14, 0x14, 0x14, 0x14, 0x14,// =

    0x41, 0x22, 0x14, 0x08, 0x00,// >

    0x02, 0x01, 0x51, 0x09, 0x06,// ?

    0x32, 0x49, 0x79, 0x41, 0x3E,// @

    0x7E, 0x11, 0x11, 0x11, 0x7E,// A

    0x7F, 0x49, 0x49, 0x49, 0x36,// B

    0x3E, 0x41, 0x41, 0x41, 0x22,// C

    0x7F, 0x41, 0x41, 0x22, 0x1C,// D

    0x7F, 0x49, 0x49, 0x49, 0x41,// E

    0x7F, 0x09, 0x09, 0x01, 0x01,// F

    0x3E, 0x41, 0x41, 0x51, 0x32,// G

    0x7F, 0x08, 0x08, 0x08, 0x7F,// H

    0x00, 0x41, 0x7F, 0x41, 0x00,// I

    0x20, 0x40, 0x41, 0x3F, 0x01,// J

    0x7F, 0x08, 0x14, 0x22, 0x41,// K

    0x7F, 0x40, 0x40, 0x40, 0x40,// L

    0x7F, 0x02, 0x04, 0x02, 0x7F,// M

    0x7F, 0x04, 0x08, 0x10, 0x7F,// N

    0x3E, 0x41, 0x41, 0x41, 0x3E,// O

    0x7F, 0x09, 0x09, 0x09, 0x06,// P

    0x3E, 0x41, 0x51, 0x21, 0x5E,// Q

    0x7F, 0x09, 0x19, 0x29, 0x46,// R

    0x46, 0x49, 0x49, 0x49, 0x31,// S

    0x01, 0x01, 0x7F, 0x01, 0x01,// T

    0x3F, 0x40, 0x40, 0x40, 0x3F,// U

    0x1F, 0x20, 0x40, 0x20, 0x1F,// V

    0x7F, 0x20, 0x18, 0x20, 0x7F,// W

    0x63, 0x14, 0x08, 0x14, 0x63,// X

    0x03, 0x04, 0x78, 0x04, 0x03,// Y

    0x61, 0x51, 0x49, 0x45, 0x43,// Z

    0x00, 0x00, 0x7F, 0x41, 0x41,// [

    0x02, 0x04, 0x08, 0x10, 0x20,// "\"

    0x41, 0x41, 0x7F, 0x00, 0x00,// ]

    0x04, 0x02, 0x01, 0x02, 0x04,// ^

    0x40, 0x40, 0x40, 0x40, 0x40,// _

    0x00, 0x01, 0x02, 0x04, 0x00,// `

    0x20, 0x54, 0x54, 0x54, 0x78,// a

    0x7F, 0x48, 0x44, 0x44, 0x38,// b

    0x38, 0x44, 0x44, 0x44, 0x20,// c

    0x38, 0x44, 0x44, 0x48, 0x7F,// d

    0x38, 0x54, 0x54, 0x54, 0x18,// e

    0x08, 0x7E, 0x09, 0x01, 0x02,// f

    0x08, 0x14, 0x54, 0x54, 0x3C,// g

    0x7F, 0x08, 0x04, 0x04, 0x78,// h

    0x00, 0x44, 0x7D, 0x40, 0x00,// i

    0x20, 0x40, 0x44, 0x3D, 0x00,// j

    0x00, 0x7F, 0x10, 0x28, 0x44,// k

    0x00, 0x41, 0x7F, 0x40, 0x00,// l

    0x7C, 0x04, 0x18, 0x04, 0x78,// m

    0x7C, 0x08, 0x04, 0x04, 0x78,// n

    0x38, 0x44, 0x44, 0x44, 0x38,// o

    0x7C, 0x14, 0x14, 0x14, 0x08,// p

    0x08, 0x14, 0x14, 0x18, 0x7C,// q

    0x7C, 0x08, 0x04, 0x04, 0x08,// r

    0x48, 0x54, 0x54, 0x54, 0x20,// s

    0x04, 0x3F, 0x44, 0x40, 0x20,// t

    0x3C, 0x40, 0x40, 0x20, 0x7C,// u

    0x1C, 0x20, 0x40, 0x20, 0x1C,// v

    0x3C, 0x40, 0x30, 0x40, 0x3C,// w

    0x44, 0x28, 0x10, 0x28, 0x44,// x

  • 74

    0x0C, 0x50, 0x50, 0x50, 0x3C,// y

    0x44, 0x64, 0x54, 0x4C, 0x44,// z

    0x00, 0x08, 0x36, 0x41, 0x00,// {

    0x00, 0x00, 0x7F, 0x00, 0x00,// |

    0x00, 0x41, 0x36, 0x08, 0x00,// }

    0x02, 0x01, 0x02, 0x04, 0x02 // ~

    };

    c) Led_Bawah.h

    const char LedBawah[] ={ 0,0,0,0,0, 0,0,0,0,0,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0 , 0 , 0 , 0 , 0 ,

    0x00, 0x00, 0x5F, 0x00, 0x00,// !

    0x00, 0x07, 0x00, 0x07, 0x00,// "

    0x14, 0x7F, 0x14, 0x7F, 0x14,// #

    0x24, 0x2A, 0x7F, 0x2A, 0x12,// $

    0x23, 0x13, 0x08, 0x64, 0x62,// %

    0x36, 0x49, 0x55, 0x22, 0x50,// &

    0x00, 0x05, 0x03, 0x00, 0x00,// '

    0x00, 0x1C, 0x22, 0x41, 0x00,// (

    0x00, 0x41, 0x22, 0x1C, 0x00,// )

    0x08, 0x2A, 0x1C, 0x2A, 0x08,// *

    0x08, 0x08, 0x3E, 0x08, 0x08,// +

    0x00, 0x50, 0x30, 0x00, 0x00,// ,

    0x08, 0x08, 0x08, 0x08, 0x08,// -

    0x00, 0x30, 0x30, 0x00, 0x00,// .

    0x20, 0x10, 0x08, 0x04, 0x02,// /

    0x3E, 0x51, 0x49, 0x45, 0x3E,// 0

    0x00, 0x42, 0x7F, 0x40, 0x00,// 1

    0x42, 0x61, 0x51, 0x49, 0x46,// 2

    0x21, 0x41, 0x45, 0x4B, 0x31,// 3

    0x18, 0x14, 0x12, 0x7F, 0x10,// 4

    0x27, 0x45, 0x45, 0x45, 0x39,// 5

    0x3C, 0x4A, 0x49, 0x49, 0x30,// 6

    0x01, 0x71, 0x09, 0x05, 0x03,// 7

    0x36, 0x49, 0x49, 0x49, 0x36,// 8

    0x06, 0x49, 0x49, 0x29, 0x1E,// 9

    0x00, 0x36, 0x36, 0x00, 0x00,// :

    0x00, 0x56, 0x36, 0x00, 0x00,// ;

  • 75

    0x00, 0x08, 0x14, 0x22, 0x41,// <

    0x14, 0x14, 0x14, 0x14, 0x14,// =

    0x41, 0x22, 0x14, 0x08, 0x00,// >

    0x02, 0x01, 0x51, 0x09, 0x06,// ?

    0x32, 0x49, 0x79, 0x41, 0x3E,// @

    0x7E, 0x11, 0x11, 0x11, 0x7E,// A

    0x7F, 0x49, 0x49, 0x49, 0x36,// B

    0x3E, 0x41, 0x41, 0x41, 0x22,// C

    0x7F, 0x41, 0x41, 0x22, 0x1C,// D

    0x7F, 0x49, 0x49, 0x49, 0x41,// E

    0x7F, 0x09, 0x09, 0x01, 0x01,// F

    0x3E, 0x41, 0x41, 0x51, 0x32,// G

    0x7F, 0x08, 0x08, 0x08, 0x7F,// H

    0x00, 0x41, 0x7F, 0x41, 0x00,// I

    0x20, 0x40, 0x41, 0x3F, 0x01,// J

    0x7F, 0x08, 0x14, 0x22, 0x41,// K

    0x7F, 0x40, 0x40, 0x40, 0x40,// L

    0x7F, 0x02, 0x04, 0x02, 0x7F,// M

    0x7F, 0x04, 0x08, 0x10, 0x7F,// N

    0x3E, 0x41, 0x41, 0x41, 0x3E,// O

    0x7F, 0x09, 0x09, 0x09, 0x06,// P

    0x3E, 0x41, 0x51, 0x21, 0x5E,// Q

    0x7F, 0x09, 0x19, 0x29, 0x46,// R

    0x46, 0x49, 0x49, 0x49, 0x31,// S

    0x01, 0x01, 0x7F, 0x01, 0x01,// T

    0x3F, 0x40, 0x40, 0x40, 0x3F,// U

    0x1F, 0x20, 0x40, 0x20, 0x1F,// V

    0x7F, 0x20, 0x18, 0x20, 0x7F,// W

    0x63, 0x14, 0x08, 0x14, 0x63,// X

    0x03, 0x04, 0x78, 0x04, 0x03,// Y

    0x61, 0x51, 0x49, 0x45, 0x43,// Z

    0x00, 0x00, 0x7F, 0x41, 0x41,// [

    0x02, 0x04, 0x08, 0x10, 0x20,// "\"

    0x41, 0x41, 0x7F, 0x00, 0x00,// ]

    0x04, 0x02, 0x01, 0x02, 0x04,// ^

    0x40, 0x40, 0x40, 0x40, 0x40,// _

    0x00, 0x01, 0x02, 0x04, 0x00,// `

    0x20, 0x54, 0x54, 0x54, 0x78,// a

    0x7F, 0x48, 0x44, 0x44, 0x38,// b

    0x38, 0x44, 0x44, 0x44, 0x20,// c

    0x38, 0x44, 0x44, 0x48, 0x7F,// d

    0x38, 0x54, 0x54, 0x54, 0x18,// e

    0x08, 0x7E, 0x09, 0x01, 0x02,// f

    0x08, 0x14, 0x54, 0x54, 0x3C,// g

    0x7F, 0x08, 0x04, 0x04, 0x78,// h

    0x00, 0x44, 0x7D, 0x40, 0x00,// i

    0x20, 0x40, 0x44, 0x3D, 0x00,// j

    0x00, 0x7F, 0x10, 0x28, 0x44,// k

    0x00, 0x41, 0x7F, 0x40, 0x00,// l

    0x7C, 0x04, 0x18, 0x04, 0x78,// m

    0x7C, 0x08, 0x04, 0x04, 0x78,// n

    0x38, 0x44, 0x44, 0x44, 0x38,// o

    0x7C, 0x14, 0x14, 0x14, 0x08,// p

    0x08, 0x14, 0x14, 0x18, 0x7C,// q

    0x7C, 0x08, 0x04, 0x04, 0x08,// r

    0x48, 0x54, 0x54, 0x54, 0x20,// s

    0x04, 0x3F, 0x44, 0x40, 0x20,// t

    0x3C, 0x40, 0x40, 0x20, 0x7C,// u

    0x1C, 0x20, 0x40, 0x20, 0x1C,// v

    0x3C, 0x40, 0x30, 0x40, 0x3C,// w

    0x44, 0x28, 0x10, 0x28, 0x44,// x

    0x0C, 0x50, 0x50, 0x50, 0x3C,// y

    0x44, 0x64, 0x54, 0x4C, 0x44,// z

    0x00, 0x08, 0x36, 0x41, 0x00,// {

    0x00, 0x00, 0x7F, 0x00, 0x00,// |

    0x00, 0x41, 0x36, 0x08, 0x00,// }

    0x02, 0x01, 0x02, 0x04, 0x02 // ~

    };

  • 76

    d) scan_code.h

    #define indat PINC.0

    #define otdat PORTC.0

    #define inclk PINC.1

    #define otclk PORTC.1

    char Baca_data_ps2(void)

    {

    char data = 0x00, dt = 0x01;

    int i=0;

    otclk=1;

    otdat=1;

    delay_ms(150);

    while (inclk==1);

    delay_us(60);

    while (inclk==0); // start bit

    for (i=0; i < 8; i++)

    {

    while (inclk==1); //ketika clock "1"

    if (indat==1) //dan jika data "1"

    { data = data | dt; } //maka bitwise or data=0x00 dan

    dt=0x01

    while (inclk==0); //ketika clock "0",

    dt = dt

  • 77

    if (apret==0x4e){kbd='-';} if (apret==0x55){kbd='=';} if

    (apret==0x54){kbd='[';}

    if (apret==0x5b){kbd=']';} if (apret==0x4c){kbd=';';} if

    (apret==0x52){kbd=',';}

    if (apret==0x29){kbd=' ';} if (apret==0x41){kbd=',';} if

    (apret==0x49){kbd='.';}

    if (apret==0x4a){kbd='/';} if (apret==0x0e){kbd='~';} if

    (apret==0x7b){kbd='-';}

    if (apret==0x79){kbd='+';} if (apret==0xe0){kbd='?';} if

    (apret==0x7c){kbd='';}

    // if (apret==0x76){} //esc

    // if (apret==0x0d){} //tab

    // if (apret==0x5a){} //enter

    // if (apret==0x66){} //backspace

    //shift

    if (apret==0x12){kbd='';flag=1;}

    //huruf besar

    if ((flag==1)&(apret==0x1c)) {kbd='A';flag=0;} if

    ((flag==1)&(apret==0x32)) {kbd='B';flag=0;}

    if ((flag==1)&(apret==0x21)) {kbd='C';flag=0;} if

    ((flag==1)&(apret==0x23)) {kbd='D';flag=0;}

    if ((flag==1)&(apret==0x24)) {kbd='E';flag=0;} if

    ((flag==1)&(apret==0x2b)) {kbd='F';flag=0;}

    if ((flag==1)&(apret==0x34)) {kbd='G';flag=0;} if

    ((flag==1)&(apret==0x33)) {kbd='H';flag=0;}

    if ((flag==1)&(apret==0x43)) {kbd='I';flag=0;} if

    ((flag==1)&(apret==0x3b)) {kbd='J';flag=0;}

    if ((flag==1)&(apret==0x42)) {kbd='K';flag=0;} if

    ((flag==1)&(apret==0x4b)) {kbd='L';flag=0;}

    if ((flag==1)&(apret==0x3a)) {kbd='M';flag=0;} if

    ((flag==1)&(apret==0x31)) {kbd='N';flag=0;}

    if ((flag==1)&(apret==0x44)) {kbd='O';flag=0;} if

    ((flag==1)&(apret==0x4d)) {kbd='P';flag=0;}

    if ((flag==1)&(apret==0x15)) {kbd='Q';flag=0;} if

    ((flag==1)&(apret==0x2d)) {kbd='R';flag=0;}

    if ((flag==1)&(apret==0x1b)) {kbd='S';flag=0;} if

    ((flag==1)&(apret==0x2c)) {kbd='T';flag=0;}

    if ((flag==1)&(apret==0x3c)) {kbd='U';flag=0;} if

    ((flag==1)&(apret==0x2a)) {kbd='V';flag=0;}

    if ((flag==1)&(apret==0x1d)) {kbd='W';flag=0;} if

    ((flag==1)&(apret==0x22)) {kbd='X';flag=0;}

    if ((flag==1)&(apret==0x35)) {kbd='Y';flag=0;} if

    ((flag==1)&(apret==0x1a)) {kbd='Z';flag=0;}

    //simbol dengan shift

    if ((flag==1)&(apret==0x16)) {kbd='!';flag=0;} if

    ((flag==1)&(apret==0x1e)) {kbd='@';flag=0;}

    if ((flag==1)&(apret==0x26)) {kbd='#';flag=0;} if

    ((flag==1)&(apret==0x25)) {kbd='$';flag=0;}

    if ((flag==1)&(apret==0x2e)) {kbd='%';flag=0;} if

    ((flag==1)&(apret==0x36)) {kbd='^';flag=0;}

    if ((flag==1)&(apret==0x3d)) {kbd='&';flag=0;} if

    ((flag==1)&(apret==0x3e)) {kbd='*';flag=0;}

    if ((flag==1)&(apret==0x46)) {kbd='(';flag=0;} if

    ((flag==1)&(apret==0x45)) {kbd=')';flag=0;}

    if ((flag==1)&(apret==0x41)) {kbd='';flag=0;}

    if ((flag==1)&(apret==0x4a)) {kbd='?';flag=0;} if

    ((flag==1)&(apret==0x55)) {kbd='+';flag=0;}

    if ((flag==1)&(apret==0x5d)) {kbd='|';flag=0;} if

    ((flag==1)&(apret==0x4e)) {kbd='_';flag=0;}

    if ((flag==1)&(apret==0x52)) {kbd='"';flag=0;} if

    ((flag==1)&(apret==0x4c)) {kbd=':';flag=0;}

    if ((flag==1)&(apret==0x54)) {kbd='{';flag=0;} if

    ((flag==1)&(apret==0x5b)) {kbd='}';flag=0;}

    delay_us(50);

    }

  • 78

    2.2. Mikrokontroler ATmega16 (2)

    a) mikro2.h

    /*****************************************************

    This program was produced by the

    CodeWizardAVR V1.25.3 Standard

    Automatic Program Generator

    Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com

    Project :

    Version :

    Date : 25/06/2012

    Author : DutchA

    Company : RnB

    Comments:

    Chip type : ATmega16

    Program type : Application

    Clock frequency : 12,000000 MHz

    Memory model : Small

    External SRAM size : 0

    Data Stack size : 256

    *****************************************************/

    #include

    #include

    #include

    #include

    #include

    // Alphanumeric LCD Module functions

    #asm

    .equ __lcd_port=0x18 ;PORTB

    #endasm

    #include

    typedef unsigned char byte;

    /* table for the user defined character

    arrow that points to the top right corner */

    flash byte char0[7]={

    0b10101,

    0b10101,

    0b01110,

    0b11111,

    0b01110,

    0b10101,

    0b10101};

    /* function used to define user characters */

    void define_char(byte flash *pc,byte char_code)

    {

    byte i,a;

    a=(char_code

  • 79

    t++;

    }

    char buffer_lcd[]="Propeller Display"

    " ";//space required

    char lcd_number = 16;

    void tampilan(){

    //ulang:

    unsigned int i,j,k;

    unsigned int data_len = strlen(buffer_lcd);

    _lcd_ready();

    lcd_clear();

    lcd_gotoxy(0,0);

    //0123456789abcdef

    lcd_putsf(" Dutcha_punyA ");

    for (i=lcd_number; i>=0; --i){

    if (i > lcd_number)break;

    lcd_gotoxy(i,1);

    for (j=0; j

  • 80

    for (cnt_addr=0;cnt_addr

  • 81

    if (apret==0x83) { //ok

    lcd_clear();

    simpan_atas();

    delay_ms(300);

    lcd_clear(); lcd_gotoxy(0,1);

    //0123456789abcdef

    lcd_putsf(" Simpan..");

    delay_ms(800);

    goto menu04;

    }

    if (apret==0x03) { //up

    goto menu05;

    }

    if (apret==0x0B) { //down

    goto menu04;

    }

    if (apret==0x0A) { //cancel

    goto menu01;

    }

    goto menu03;

    menu04: // BAWAH

    delay_ms(20);

    lcd_gotoxy(0,0);

    // 0123456789abcdef

    lcd_putsf(" Atas ");

    lcd_gotoxy(0,1);

    lcd_putsf(" Bawah Tampil");

    lcd_gotoxy(0,1);

    lcd_putchar(0);

    apret=Baca_data_ps2();

    if (apret==0x83) { //ok

    lcd_clear();

    simpan_bawah();

    delay_ms(300);

    lcd_clear(); lcd_gotoxy(0,1);

    //0123456789abcdef

    lcd_putsf(" Simpan..");

    delay_ms(800);

    goto menu03;

    }

    if (apret==0x03) { //up

    goto menu03;

    }

    if (apret==0x0B) { //down

    goto menu05;

    }

    if (apret==0x0A) { //cancel

    goto menu01;

    }

    goto menu04;

    menu05: // LANJUT TAMPIL

    delay_ms(20);

    lcd_gotoxy(0,0);

    // 0123456789abcdef

    lcd_putsf(" Atas ");

    lcd_gotoxy(0,1);

    lcd_putsf(" Bawah Tampil");

    lcd_gotoxy(8,1);

    lcd_putchar(0);

    apret=Baca_data_ps2();

    if (apret==0x83) { //ok

    lcd_clear();

    delay_ms(300);

    lcd_clear(); lcd_gotoxy(0,1);

    //0123456789abcdef

    lcd_putsf(" Tampil..");

    delay_ms(800);

  • 82

    goto lanjut;

    }

    if (apret==0x03) { //up

    goto menu04;

    }

    if (apret==0x0B) { //down

    goto menu03;

    }

    if (apret==0x0A) { //cancel

    goto menu01;

    }

    goto menu05;

    lanjut:

    }

    void main(void)

    {

    PORTA=0x00;

    DDRA=0xFF;

    PORTB=0x00;

    DDRB=0x00;

    PORTC=0x00;

    DDRC=0x00;

    PORTD=0x00;

    DDRD=0x00;

    TCCR0=0x00;

    TCNT0=0x00;

    TCCR1A=0x00;

    TCCR1B=0x00;

    TCNT1H=0x00;

    TCNT1L=0x00;

    ICR1H=0x00;

    ICR1L=0x00;

    OCR1AH=0x00;

    OCR1AL=0x00;

    OCR1BH=0x00;

    OCR1BL=0x00;

    ASSR=0x00;

    TCCR2=0x00;

    TCNT2=0x00;

    OCR2=0x00;

    GICR|=0x40; //rissing edge

    MCUCR=0x03; //

    MCUCSR=0x00; //

    GIFR=0x40; //

    TIMSK=0x00;

    ACSR=0x80;

    SFIOR=0x00;

    define_char(char0,0);

    lcd_init(16);

    showMenu();

    tampilan();

    lcd_clear();

    lcd_gotoxy(0,1);

    //0123456789abcdef

    lcd_putsf(" Putar..... ");

    delay_ms(700);

    #asm("sei")

  • 83

    while (1)

    {

    lcd_clear();

    lcd_gotoxy(0,0);

    // 0123456789abcdef

    lcd_putsf(" Prop Display ");

    lcd_gotoxy(0,1);

    //0123456789abcdef

    lcd_putsf(" ATmega16 ");

    scan_code();

    //0123456789abcdef

    if (apret==0x05){ PORTA=0x00; PORTA.0=1; lcd_clear();

    lcd_putsf("Speed 1 "); sprintf(buff,"%c",kbd); lcd_puts(buff);

    delay_ms(2000);}

    if (apret==0x06){ PORTA=0x00; PORTA.1=1; lcd_clear();

    lcd_putsf("Speed 2 "); sprintf(buff,"%c",kbd); lcd_puts(buff);

    delay_ms(2000);}

    if (apret==0x04){ PORTA=0x00; PORTA.2=1; lcd_clear();

    lcd_putsf("Speed 3 "); sprintf(buff,"%c",kbd); lcd_puts(buff);

    delay_ms(2000);}

    if (apret==0x0C){ PORTA=0x00; lcd_clear();

    lcd_putsf("Motor Off "); sprintf(buff,"%c",kbd); lcd_puts(buff);

    delay_ms(2000);}

    if (apret==0x0A){ PORTA=0x00; lcd_clear(); delay_ms(700);

    showMenu(); delay_ms(1000);}

    delay_ms(50);

    };

    }

    b) scancode.h #define indat PINC.0

    #define otdat PORTC.0

    #define inclk PINC.1

    #define otclk PORTC.1

    #include

    char buff[33];

    char Baca_data_ps2(void)

    {

    char data = 0x00;

    int i=0;

    char dt = 0x01;

    DDRC.2=0; otclk=1;

    DDRC.3=0; otdat=1;

    delay_ms(150);

    while (inclk==1);

    delay_us(60);

    while (inclk==0);

    for (i=0; i < 8; i++)

    {

    while (inclk==1);

    if (indat==1)

    { data = data | dt; }

    while (inclk==0);

    dt = dt

  • 84

    PORTC.2=0;

    return data;

    }

    unsigned int apret;

    char x;

    bit flag;

    unsigned char kbd;

    void scan_code()

    {

    apret=Baca_data_ps2();

    //huruf kecil

    if (apret==0x1c){kbd='a';} if (apret==0x32){kbd='b';}

    if (apret==0x21){kbd='c';}

    if (apret==0x23){kbd='d';} if (apret==0x24){kbd='e';}

    if (apret==0x2b){kbd='f';}

    if (apret==0x34){kbd='g';} if (apret==0x33){kbd='h';}

    if (apret==0x43){kbd='i';}

    if (apret==0x3b){kbd='j';} if (apret==0x42){kbd='k';}

    if (apret==0x4b){kbd='l';}

    if (apret==0x3a){kbd='m';} if (apret==0x31){kbd='n';}

    if (apret==0x44){kbd='o';}

    if (apret==0x4d){kbd='p';} if (apret==0x15){kbd='q';}

    if (apret==0x2d){kbd='r';}

    if (apret==0x1b){kbd='s';} if (apret==0x2c){kbd='t';}

    if (apret==0x3c){kbd='u';}

    if (apret==0x2a){kbd='v';} if (apret==0x1d){kbd='w';}

    if (apret==0x22){kbd='x';}

    if (apret==0x35){kbd='y';} if (apret==0x1a){kbd='z';}

    //angka

    if (apret==0x16){kbd='1';} if (apret==0x1e){kbd='2';}

    if (apret==0x26){kbd='3';}

    if (apret==0x25){kbd='4';} if (apret==0x2e){kbd='5';}

    if (apret==0x36){kbd='6';}

    if (apret==0x3d){kbd='7';} if (apret==0x3e){kbd='8';}

    if (apret==0x46){kbd='9';}

    if (apret==0x45){kbd='0';}

    //simbol tanpa shift

    if (apret==0x4e){kbd='-';} if (apret==0x55){kbd='=';}

    if (apret==0x54){kbd='[';}

    if (apret==0x5b){kbd=']';} if (apret==0x4c){kbd=';';}

    if (apret==0x52){kbd=',';}

    if (apret==0x29){kbd=' ';} if (apret==0x41){kbd=',';}

    if (apret==0x49){kbd='.';}

    if (apret==0x4a){kbd='/';} if (apret==0x0e){kbd='~';}

    if (apret==0x7b){kbd='-';}

    if (apret==0x79){kbd='+';} if (apret==0xe0){kbd='?';}

    if (apret==0x7c){kbd='';}

    // if (apret==0x76){} //esc

    // if (apret==0x0d){} //tab

    // if (apret==0x5a){} //enter

    // if (apret==0x66){} //backspace

    //shift

    if (apret==0x12){kbd='';flag=1;}

    //huruf besar

    if ((flag==1)&(apret==0x1c)) {kbd='A';flag=0;}

    if ((flag==1)&(apret==0x32)) {kbd='B';flag=0;}

    if ((flag==1)&(apret==0x21)) {kbd='C';flag=0;}

    if ((flag==1)&(apret==0x23)) {kbd='D';flag=0;}

    if ((flag==1)&(apret==0x24)) {kbd='E';flag=0;}

    if ((flag==1)&(apret==0x2b)) {kbd='F';flag=0;}

    if ((flag==1)&(apret==0x34)) {kbd='G';flag=0;}

    if ((flag==1)&(apret==0x33)) {kbd='H';flag=0;}

    if ((flag==1)&(apret==0x43)) {kbd='I';flag=0;}

    if ((flag==1)&(apret==0x3b)) {kbd='J';flag=0;}

  • 85

    if ((flag==1)&(apret==0x42)) {kbd='K';flag=0;}

    if ((flag==1)&(apret==0x4b)) {kbd='L';flag=0;}

    if ((flag==1)&(apret==0x3a)) {kbd='M';flag=0;}

    if ((flag==1)&(apret==0x31)) {kbd='N';flag=0;}

    if ((flag==1)&(apret==0x44)) {kbd='O';flag=0;}

    if ((flag==1)&(apret==0x4d)) {kbd='P';flag=0;}

    if ((flag==1)&(apret==0x15)) {kbd='Q';flag=0;}

    if ((flag==1)&(apret==0x2d)) {kbd='R';flag=0;}

    if ((flag==1)&(apret==0x1b)) {kbd='S';flag=0;}

    if ((flag==1)&(apret==0x2c)) {kbd='T';flag=0;}

    if ((flag==1)&(apret==0x3c)) {kbd='U';flag=0;}

    if ((flag==1)&(apret==0x2a)) {kbd='V';flag=0;}

    if ((flag==1)&(apret==0x1d)) {kbd='W';flag=0;}

    if ((flag==1)&(apret==0x22)) {kbd='X';flag=0;}

    if ((flag==1)&(apret==0x35)) {kbd='Y';flag=0;}

    if ((flag==1)&(apret==0x1a)) {kbd='Z';flag=0;}

    //simbol dengan shift

    if ((flag==1)&(apret==0x16)) {kbd='!';flag=0;}

    if ((flag==1)&(apret==0x1e)) {kbd='@';flag=0;}

    if ((flag==1)&(apret==0x26)) {kbd='#';flag=0;}

    if ((flag==1)&(apret==0x25)) {kbd='$';flag=0;}

    if ((flag==1)&(apret==0x2e)) {kbd='%';flag=0;}

    if ((flag==1)&(apret==0x36)) {kbd='^';flag=0;}

    if ((flag==1)&(apret==0x3d)) {kbd='&';flag=0;}

    if ((flag==1)&(apret==0x3e)) {kbd='*';flag=0;}

    if ((flag==1)&(apret==0x46)) {kbd='(';flag=0;}

    if ((flag==1)&(apret==0x45)) {kbd=')';flag=0;}

    if ((flag==1)&(apret==0x41)) {kbd='';flag=0;}

    if ((flag==1)&(apret==0x4a)) {kbd='?';flag=0;}

    if ((flag==1)&(apret==0x55)) {kbd='+';flag=0;}

    if ((flag==1)&(apret==0x5d)) {kbd='|';flag=0;}

    if ((flag==1)&(apret==0x4e)) {kbd='_';flag=0;}

    if ((flag==1)&(apret==0x52)) {kbd='"';flag=0;}

    if ((flag==1)&(apret==0x4c)) {kbd=':';flag=0;}

    if ((flag==1)&(apret==0x54)) {kbd='{';flag=0;}

    if ((flag==1)&(apret==0x5b)) {kbd='}';flag=0;}

    sprintf(buff,"%c",kbd); //tampilkan lcd

    lcd_puts(buff);

    delay_us(50);

    }

  • 86

    3. Terbang Bersama Propellerku

  • 87

  • 88