PRAKTIKUM 3 Moving Sign LED Dot Matrix Dari Keypad

download PRAKTIKUM 3 Moving Sign LED Dot Matrix Dari Keypad

of 19

Transcript of PRAKTIKUM 3 Moving Sign LED Dot Matrix Dari Keypad

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 1

    PRAKTIKUM 3

    MOVING SIGN LED DOT MATRIX 16X16 DARI KEYPAD DENGAN MODUL

    MCS-51/AVR/PIC MCU

    A. Tujuan setelah melakukan praktikum diharapkan mahasiswa mampu :

    1. Mengetahui langkah langkah mengakses dot matrix, keypad dan buzzer

    2. Mengetahui PORT dan PIN yang digunakan untuk mengakses dot matrix, Keypad dan buzzer .

    3. Memahami rangkaian mikrokontroller untuk menyalakan/mengaktifkan Port pada kolom dan

    baris dot matrix 16 x 16

    4. Memahami rangkaian mikrokontroller untuk menghubungkan/interaksi antara keypad

    dengan dot matrix .

    B. Dasar Teori:Microcontroller adalah sebuah komputer kecil di dalam satu sirkuit yang berisi inti

    prosesor, memori, dan input/output peripheral yang dapat diprogram, dan di desain khusus untuk

    embedded system.Embedded system tidak membutuhkan kapasitas data dan address bus yang

    terlalu besar, itu sebabnya microcontroller ini berukuran lebih kecil

    Pada praktikum ini menggunakan modul yang memakai microcontroller ATMEGA 162.

    Dapat dilihat pada gambar modul dengan tanda garis merah dibawah ini :

    Input Keypad

    Led Dot Matrix

    Buzzer

    ATMEGA 162

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 2

    DATASHEET

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 3

    Penjelaskan tentang keyboard 4 x 4, led dot matrix dan buzzer adalah sebagai berikut :

    1. Keyboard 4 x 4 (keypad 4 x 4)

    adalah interface antara perangkat (mesin) elektronik dengan manusia atau dikenal dengan

    istilah HMI (Human Machine Interface). Rangkaian matrix keypad diatas terdiri dari 16

    saklar push buton dengan konfigurasi 4 baris dan 4 kolom. 8 line yang terdiri dari 4 baris

    dan 4 kolom tersebut dihubungkan dengan port mikrokontroler 8 bit. Sisi baris dari matrix

    keypad ditandai dengan nama Y0 ~ Y3 dihubungkan dengan PINB.0 ~ PINB.3 kemudian sisi

    kolom ditandai dengan nama X0 ~ X3 dihubungkan dengan PORTB.4 ~ PORTB.7

    2. Led Dot matrix 16 x 16

    LED DOT MATRIX adalah Dot matrix dapat ditampilkan dengan warna merah & hijau dan

    program. ROW1 ke ROW8 adalah output hijau. ROW9 untuk ROW16 adalah output merah.

    Selain itu, pengguna dapat menggunakan jumper 16x16, 16x8 atau 8x8 untuk memilih

    mode tampilan . Prinsip kerja dot matrix sebenarnya menggunakan system scanning

    kolom . Scanning kolom adalah pada satu waktu dari sekian banyak kolom , hanya satu

    kolom yang akan menyala berwarna merah. Apabila proses scanning kolom dipelankan/

    diperlambat sampai mata dapat melihat, maka pergeseran menyalaan kolom akan terlihat

    satu persatu .

    Pada dasarnya DOT matrix adalah Display LED yg disusun

    sedemikian rupa sehingga untuk menghidupkan led ke

    (x,x) dibutuhkan kombinasi tegangan antara Pin baris &

    kolom.

    Penanda kaki nomer satu adalah tulisan marking, paling

    kiri no 1....paling kanan no 7. Menyebrang ke kanan atas

    no 8 sampai ke kiri atas itu nomer 14. Beberapa kaki

    memang tidak dipakai jadi dibarkan tidak terhubung.

    Kemudian untuk mempermudah kontrol dan menghemat

    pin maka diperlukan proses scanning ( biasanya kolom...)

    sedangkan pada baris diberikan bit sesuai huruf/karakter

    yang akan ditampilkan yang bersesuaian dengan posisi scanning.

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 4

    Scanning untuk kolom dimaksud memberikan "1" high ( untuk common katoda) atau"0"untuk common anoda , untuk kolom lainnya diberi nilai negasi dari kolom yg diberi nilai 1.Begitu selanjutnya untuk kolom berikutnya sampai kolom terakhir dari rangkaian ledmatrix dan berulang dari depan lagi. Proses ini dilakukan sangat cepat sehingga mata kitamelihatnya tetap sebagai suatu karakter yg diam. Misalnya ingin menampilkan huruf A ,secara umum digambarkan sebagai berikut:

    00000000000000000000000000000000000000000000000000000000

    dari gambar diatas logikanya seperti ini :- Saat kolom pertama ( scan kolom 1 = 1 / high/2.4 v) maka bit yg diberi pada baris berupa

    "1110000", sehingga jika ketemu 1 vs 1 ga ada arus mengalir, jadi LED mati, jika 1 ketemu 0

    maka arus mengalir, led menyala.

    - Begitu juga untuk kolom kedua, ketika kolom kedua diberi tegangan maka pada baris bit yg

    diberikan adalah "1101011".

    - Dan seterusnya, ketika kolom nya mencapai ujung maka akan diulang ke kolom 1 lagi.

    - Untuk melakukan scanning biasanya dilakukan dengan memanfaatkan shift register, atau

    paling sederhana dengan menggunakan IC 4017 yang di cascade menjadi led berjalan yang

    panjang.

    C. PERALATAN

    1. Modul MCS 51

    2. CodeVision AVR / Proteus

    D. LANGKAH PERCOBAAN

    1. Siapkan modul MCS 51

    2. Susun Porting untuk keypad, LED Dot Matrix dan buzzer dengan kabel yang sudah

    disediakan .

    3. Buat Project baru dengan mengatur konfigurasi Port yang digunakan sesuai

    susunan porting pada Modul MCS 51

    4. Lakukan percobaan

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 5

    PROGRAM PERCOBAAN :

    Deklarasi library dan Inisialisasi porting serta variabel yang digunakan#include #include #define latch1 PORTD.0#define latch2 PORTD.1

    //portting B#define row0 PINC.3 // Y3 = 1 ABC2 DEF3#define row1 PINC.2 // Y2 = GHI4 JKL5 MNO6#define row2 PINC.1 // Y1 = PQRS7 TUV8 WXYZ9#define row3 PINC.0 // Y0 = * 0 # OK#define col0 PORTC.4 // X0 = 1 GHI4 PQRS7 *#define col1 PORTC.5 // X1 = ABC2 JKL5 TUV8 0#define col2 PORTC.6 // X2 = DEF3 MNO6 WXYZ9 ##define col3 PORTC.7 // X3 = OK

    //variabel array utk menampung input keypadchar tandatitik='-';char tandamasuk='+';char A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;int q;char flag[10];int inc=0;

    Program Keypad : untuk mengakses board keypad pada modul / sebagai input character

    //fungsi untuk porting keypad pada port C & pin Cchar keyp(){//kolom pertama 1 4 7 *col0=0;col1=1;col2=1;col3=1;delay_ms(1);if(row0==0){A++;delay_ms(30);tandatitik='1';row0=1;flag[inc]=check();}if(row1==0){D++;delay_ms(30);tandatitik='4';row1=1;flag[inc]=check();}if(row2==0){G++;delay_ms(30);tandatitik='7';row2=1;flag[inc]=check();}if(row3==0){J++;delay_ms(30);tandatitik='*';row3=1;flag[inc]=check();}

    //kolom kedua 2 5 8 0col0=1;col1=0;col2=1;col3=1;delay_ms(1);if(row0==0){B++;delay_ms(30);tandatitik='2';row0=1;flag[inc]=check();}if(row1==0){E++;delay_ms(30);tandatitik='5';row1=1;flag[inc]=check();}if(row2==0){H++;delay_ms(30);tandatitik='8';row2=1;flag[inc]=check();}if(row3==0){K++;delay_ms(30);tandatitik='0';row3=1;flag[inc]=check();}

    //kolom ketiga 3 6 9 #col0=1;col1=1;col2=0;col3=1;delay_ms(1);if(row0==0){C++;delay_ms(30);tandatitik='3';row0=1;flag[inc]=check();}if(row1==0){F++;delay_ms(30);tandatitik='6';row1=1;flag[inc]=check();}if(row2==0){I++;delay_ms(30);tandatitik='9';row2=1;flag[inc]=check();}if(row3==0){L++;delay_ms(30);tandatitik='#';row3=1;flag[inc]=check();}

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 6

    //kolom keempat A B C Dcol0=1;col1=1;col2=1;col3=0;delay_ms(1);if(row0==0){M++;delay_ms(30);tandatitik='A';row0=1;}if(row1==0){N++;delay_ms(30);tandatitik='B';row1=1;}if(row2==0){O++;delay_ms(30);tandatitik='C';row2=1;}if(row3==0){P++;delay_ms(30);tandatitik='D';row3=1;}

    }

    Program tampilan karakter pada led dot matrix

    void Ax(int a){int x;x=a;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+1;PORTB = x; PORTA=0b00011111; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+2;PORTB = x; PORTA=0b00001111; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+3;PORTB = x; PORTA=0b11100111; latch1=1; latch1=0;PORTA=0b11111100; latch2=1; latch2=0; delay_ms(1);

    x=a+4;PORTB = x; PORTA=0b11110011; latch1=1; latch1=0;PORTA=0b11111100; latch2=1; latch2=0; delay_ms(1);

    x=a+5;PORTB = x; PORTA=0b11110011; latch1=1; latch1=0;PORTA=0b11111100; latch2=1; latch2=0; delay_ms(1);

    x=a+6;PORTB = x; PORTA=0b11110011; latch1=1; latch1=0;PORTA=0b11111100; latch2=1; latch2=0; delay_ms(1);

    x=a+7;PORTB = x; PORTA=0b11110011; latch1=1; latch1=0;PORTA=0b11111100; latch2=1; latch2=0; delay_ms(1);

    x=a+8;PORTB = x; PORTA=0b11100111; latch1=1; latch1=0;PORTA=0b11111100; latch2=1; latch2=0; delay_ms(1);

    x=a+9;PORTB = x; PORTA=0b00001111; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+10;PORTB = x; PORTA=0b00011111; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    }void KOTAK(int a){

    int x;

    x=a;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 7

    PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+1;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+2;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+3;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+4;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+5;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+6;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+7;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+8;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+9;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+10;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+11;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+12;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+13;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+14;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    x=a+15;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);}

    void KOSONG(int a){int x;

    x=a;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 8

    x=a+1;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+2;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+3;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+4;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+5;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+6;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+7;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+8;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+9;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+10;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+11;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+12;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+13;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+14;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

    x=a+15;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);}

    void x1(int a){int b=0;int x;

    x=a;PORTB = x; PORTA=0b11111011; latch1=1; latch1=0;PORTA=0b11111111; latch2=1; latch2=0; delay_ms(1);

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 9

    b++;x=a+b;PORTB = x; PORTA=0b11111001; latch1=1; latch1=0;PORTA=0b00111111; latch2=1; latch2=0; delay_ms(1);

    b++;x=a+b;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    b++;x=a+b;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    b++;x=a+b;PORTB = x; PORTA=0b00000000; latch1=1; latch1=0;PORTA=0b00000000; latch2=1; latch2=0; delay_ms(1);

    b++;x=a+b;PORTB = x; PORTA=0b11111111; latch1=1; latch1=0;PORTA=0b00111111; latch2=1; latch2=0; delay_ms(1);}

    Program clear screen pada saat terjadi interrupt atau transisi character dot matrix

    void BLANK(){int ty;for(ty=0;ty=0;q--){ x1(q); delay_ms(10);}BLANK();

    A=0;return('1'); }if(tandatitik=='2'){

    if(B==1){for(q=16;q>=0;q--){ Ax(q); delay_ms(10);}BLANK();}else if(B==2){for(q=16;q>=0;q--){ Bx(q); delay_ms(10);}BLANK();}else if(B == 3){for(q=16;q>=0;q--){Cx(q); delay_ms(10);}BLANK();}else if(B == 4){for(q=16;q>=0;q--){x2(q); delay_ms(10);}BLANK();}

    if(B==4){B=0;return('2');}else if(B==3){return('C');}else if(B==2){return('B');}else if(B==1){return('A');}

    }if(tandatitik=='3'){

    if(C==1){for(q=16;q>=0;q--){ Dx(q); delay_ms(10);}BLANK();}else if(C==2){for(q=16;q>=0;q--){ Ex(q); delay_ms(10);}BLANK();}else if(C == 3){for(q=16;q>=0;q--){Fx(q); delay_ms(10);}BLANK();}else if(C == 4){for(q=16;q>=0;q--){x3(q); delay_ms(10);}BLANK();}

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 10

    if(C==4){C=0;return('3');}else if(C==3){return('F');}else if(C==2){return('E');}else if(C==1){return('D');}

    }if(tandatitik=='4'){

    if(D==1){for(q=16;q>=0;q--){ Gx(q); delay_ms(10);}BLANK();}else if(D==2){for(q=16;q>=0;q--){ Hx(q); delay_ms(10);}BLANK();}else if(D == 3){for(q=16;q>=0;q--){Ix(q); delay_ms(10);}BLANK();}else if(D == 4){for(q=16;q>=0;q--){x4(q); delay_ms(10);}BLANK();}

    if(D==4){D=0;return('4');}else if(D==3){return('I');}else if(D==2){return('H');}else if(D==1){return('G');}

    }if(tandatitik=='5'){

    if(E==1){for(q=16;q>=0;q--){ Jx(q); delay_ms(10);}BLANK();}else if(E==2){for(q=16;q>=0;q--){ Kx(q); delay_ms(10);}BLANK();}else if(E == 3){for(q=16;q>=0;q--){Lx(q); delay_ms(10);}BLANK();}else if(E == 4){for(q=16;q>=0;q--){x5(q); delay_ms(10);}BLANK();}

    if(E==4){E=0;return('5');}else if(E==3){return('L');}else if(E==2){return('K');}else if(E==1){return('J');}

    }if(tandatitik=='6'){

    if(F==1){for(q=16;q>=0;q--){ Mx(q); delay_ms(10);}BLANK();}else if(F==2){for(q=16;q>=0;q--){ Nx(q); delay_ms(10);}BLANK();}else if(F == 3){for(q=16;q>=0;q--){Ox(q); delay_ms(10);}BLANK();}else if(F == 4){for(q=16;q>=0;q--){x6(q); delay_ms(10);}BLANK();}

    if(F==4){F=0;return('6');}else if(F==3){return('O');}else if(F==2){return('N');}else if(F==1){return('M');}

    }if(tandatitik=='7'){

    if(G==1){for(q=16;q>=0;q--){ Px(q); delay_ms(10);}BLANK();}else if(G==2){for(q=16;q>=0;q--){ Qx(q); delay_ms(10);}BLANK();}else if(G == 3){for(q=16;q>=0;q--){Rx(q); delay_ms(10);}BLANK();}else if(G == 4){for(q=16;q>=0;q--){Sx(q); delay_ms(10);}BLANK();}else if(G == 5){for(q=16;q>=0;q--){x7(q); delay_ms(10);}BLANK();}

    if(G==5){G=0;return('7');}else if(G==4){return('S');}else if(G==3){return('R');}else if(G==2){return('Q');}

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 11

    else if(G==1){return('P');}}if(tandatitik=='8'){

    if(H==1){for(q=16;q>=0;q--){ Tx(q); delay_ms(10);}BLANK();}else if(H==2){for(q=16;q>=0;q--){ Ux(q); delay_ms(10);}BLANK();}else if(H == 3){for(q=16;q>=0;q--){Vx(q); delay_ms(10);}BLANK();}else if(H == 4){for(q=16;q>=0;q--){x8(q); delay_ms(10);}BLANK();}

    if(H==4){H=0;return('8');}else if(H==3){return('V');}else if(H==2){return('U');}else if(H==1){return('T');}

    }if(tandatitik=='9'){

    if(I==1){for(q=16;q>=0;q--){ Wx(q); delay_ms(10);}BLANK();}else if(I==2){for(q=16;q>=0;q--){ Xx(q); delay_ms(10);}BLANK();}else if(I == 3){for(q=16;q>=0;q--){Yx(q); delay_ms(10);}BLANK();}else if(I == 4){for(q=16;q>=0;q--){Zx(q); delay_ms(10);}BLANK();}else if(I == 5){for(q=16;q>=0;q--){x9(q); delay_ms(10);}BLANK();}

    if(I==5){I=0;return('9');}else if(I==4){return('Z');}else if(I==3){return('Y');}else if(I==2){return('X');}else if(I==1){return('W');}

    }if(tandatitik=='*'){

    if(J==1){for(q=16;q>=0;q--){ bintang(q); delay_ms(10);}}BLANK();J=0;return('*');}

    if(tandatitik=='0'){if(K==1){for(q=16;q>=0;q--){ x0(q); delay_ms(10);}}BLANK();K=0;return('0');}

    if(tandatitik=='#'){if(L==1){for(q=16;q>=0;q--){ pagar(q); delay_ms(10);}}BLANK();L=0;return('#');}

    if(tandatitik=='A'){}if(tandatitik=='B'){}if(tandatitik=='C'){}if(tandatitik=='D'){}

    }

    Program time out untuk memberi batas waktu memilih karakter sesuai keypad

    void ke(){int uv;int ss;

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 12

    for(uv=0;uv=0;q--){ KOTAK(q); delay_ms(10);}

    BLANK();}keyp();

    }}

    Program temporary character yang sudah dipilih sesuai urutan parsing parameter

    void cec(int cv){

    switch(flag[cv]){

    case 'A' : for(q=16;q>=0;q--){ Ax(q); delay_ms(25);} break;

    case 'B' : for(q=16;q>=0;q--){ Bx(q); delay_ms(25);} break;

    case 'C' : for(q=16;q>=0;q--){ Cx(q); delay_ms(25);} break;

    case 'D' : for(q=16;q>=0;q--){ Dx(q); delay_ms(25);} break;

    case 'E' : for(q=16;q>=0;q--){ Ex(q); delay_ms(25);} break;

    case 'F' : for(q=16;q>=0;q--){ Fx(q); delay_ms(25);} break;

    case 'G' : for(q=16;q>=0;q--){ Gx(q); delay_ms(25);} break;

    case 'H' : for(q=16;q>=0;q--){ Hx(q); delay_ms(25);} break;

    case 'I' : for(q=16;q>=0;q--){ Ix(q); delay_ms(25);} break;

    case 'J' : for(q=16;q>=0;q--){ Jx(q); delay_ms(25);} break;

    case 'K' : for(q=16;q>=0;q--){ Kx(q); delay_ms(25);} break;

    case 'L' : for(q=16;q>=0;q--){ Lx(q); delay_ms(25);} break;

    case 'M' : for(q=16;q>=0;q--){ Mx(q); delay_ms(25);} break;

    case 'N' : for(q=16;q>=0;q--){ Nx(q); delay_ms(25);} break;

    case 'O' : for(q=16;q>=0;q--){ Ox(q); delay_ms(25);} break;

    case 'P' : for(q=16;q>=0;q--){ Px(q); delay_ms(25);} break;

    case 'Q' : for(q=16;q>=0;q--){ Qx(q); delay_ms(25);} break;

    case 'R' : for(q=16;q>=0;q--){ Rx(q); delay_ms(25);} break;

    case 'S' : for(q=16;q>=0;q--){ Sx(q); delay_ms(25);} break;

    case 'T' : for(q=16;q>=0;q--){ Tx(q); delay_ms(25);} break;

    case 'U' : for(q=16;q>=0;q--){ Ux(q); delay_ms(25);} break;

    case 'V' : for(q=16;q>=0;q--){ Vx(q); delay_ms(25);} break;

    case 'W' : for(q=16;q>=0;q--){ Wx(q); delay_ms(25);} break;

    case 'X' : for(q=16;q>=0;q--){ Xx(q); delay_ms(25);} break;

    case 'Y' : for(q=16;q>=0;q--){ Yx(q); delay_ms(25);} break;

    case 'Z' : for(q=16;q>=0;q--){ Zx(q); delay_ms(25);} break;

    case '0' : for(q=16;q>=0;q--){ x0(q); delay_ms(25);} break;

    case '1' : for(q=16;q>=0;q--){ x1(q); delay_ms(25);} break;

    case '2' : for(q=16;q>=0;q--){ x2(q); delay_ms(25);} break;

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 13

    case '3' : for(q=16;q>=0;q--){ x3(q); delay_ms(25);} break;

    case '4' : for(q=16;q>=0;q--){ x4(q); delay_ms(25);} break;

    case '5' : for(q=16;q>=0;q--){ x5(q); delay_ms(25);} break;

    case '6' : for(q=16;q>=0;q--){ x6(q); delay_ms(25);} break;

    case '7' : for(q=16;q>=0;q--){ x7(q); delay_ms(25);} break;

    case '8' : for(q=16;q>=0;q--){ x8(q); delay_ms(25);} break;

    case '9' : for(q=16;q>=0;q--){ x9(q); delay_ms(25);} break;

    case '*' : for(q=16;q>=0;q--){ bintang(q);delay_ms(25);}break;

    case '#' : for(q=16;q>=0;q--){ pagar(q); delay_ms(25);}break;

    }

    }

    Program inti / main program : dijalankan pertama kalivoid main(void){#pragma optsize-CLKPR=0x80;CLKPR=0x00;#ifdef _OPTIMIZE_SIZE_#pragma optsize+#endif//PORT A InitializationPORTA=0x00;DDRA=0xFF;

    //PORT B InitializationPORTB=0x0F;DDRB=0x0F;

    //PORT C InitializationPORTC=0x0F;DDRC=0xF0;

    //PORT D InitializationPORTD=0x00;DDRD=0x07;

    //PORT E InitializationPORTE=0x00;DDRE=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;TCCR3A=0x00;

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 14

    TCCR3B=0x00;TCNT3H=0x00;TCNT3L=0x00;ICR3H=0x00;ICR3L=0x00;OCR3AH=0x00;OCR3AL=0x00;OCR3BH=0x00;OCR3BL=0x00;MCUCR=0x00;EMCUCR=0x00;TIMSK=0x00;ETIMSK=0x00;UCSR0B=0x00;UCSR1B=0x00;ACSR=0x80;SPCR=0x00;

    while (1){//PERTAMAke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KEDUAinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KETIGAinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KEEMPATinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KELIMAinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KEENAMinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KETUJUHinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KEDELAPANinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KESEMBILANinc++;

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 15

    ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    //KESEPULUHinc++;ke();A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;tandatitik='-';

    cec(0);cec(1);cec(2);cec(3);cec(4);cec(5);cec(6);cec(7);cec(8);cec(9);for(q=900;q>=0;q--){

    x1(0);delay_ms(10);

    }

    }}

    E. ANALISA PERCOBAAN

    Praktikum ini mengaplikasikan pemrograman C/C++ dalam sistem embedded pada modul MCS-

    51 untuk membuat simulasi moving sign pada led dot matrix dari input keypad. Program ini

    merupakan program untuk keypad 4x4 (input) dengan LCD 16x2 dan led dot matrix sebagai

    output yang dihasilkan jika ada input dari keypad .

    Analisa : Pada percobaan ini menggunakan library mega162.h dan delay.h. #define digunakan

    untuk mendeklarasikan PORT, dideklarasikan latch1 dan latch2 pada PORTD.0 dan PORTD.1.

    Dideklarasikan row3 ~ row0 pada PINB.0 ~ PINB.3. Dideklarasikan col 0 ~ col3 pada PORTB.4 ~

    PINB.7. Variabel q dan inc=0 dideklarasikan dengan tipe data integer dan Variabel tandatitik=-

    , tandamasuk=+,A~P = 0 dan flag[10] bertipe data char .

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 16

    Beberapa Fungsi yang digunakan untuk menampilkan karakter

    Fungsi BLANK() dan check()

    Analisa : Pada fungsi check() bertipe char digunakan untuk mengecek kondisi tandatitik = 1

    sampai dengan * dan # visualnya disamakan dengan keypad pada Handphone.Fungsi ini

    dieksekusi ketika ada inputan dari keypad . Sedangkan fungsi BLANK() digunakan untuk

    menghapus layar pada led dot matrix yang diberi perulangan dari 0 sampai dengan 16 untuk

    waktu pembersihan layar dan menjalankan fungsi KOSONG(0) , nilai 0 adalah nilai parameter

    untuk memeberi nilai 0 pada PORTA = 0b11111111 artinya semua kolom tidak menyala.

    Analisa : Pada fungsi Ax~x9,KOTAK dan KOSONG dengan variabel a bertipe integer sebagai

    parameter . Dimasing-masing fungsi tersebut terdapat variabel b dan x yang bertipe data

    integer. Variabel x dideklarasikan samadengan nilai variabel a dari nilai parameter fungsi . Nilai

    variabel x menjadi penentu kolom berapa yang aktif dan bernilai 0 ditentukan /

    diinisialisasikan pada PORT A serta latch1 dan latch2 bernilai 1 tidak aktif lalu bernilai 0

    aktif diberi delay agar tampilan tiap kolomnya tampak bersamaan lampu led menyala .

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 17

    Fungsi keyp() digunakan untuk inisialisasi pengaktifan kolom dan baris pada keypad.

    Fungsi ke() dan cec(int cv) :

    Analisa : Pada fungsi keyp() merupakan inisialisasi pengaktifan dari kolom pada keypad .

    Kolom yang aktif dapat dilihat dari nilai 0 (aktif low) , misalnya col0=0 , col1=1, col2=1,

    col3=1 maka yang aktif adalah kolom 1 . Pemberian nilai pada kolom yang aktif dengan kondisi

    if(row0==0){A++;delay_ms(30); tandatitik=1; row0=1; flag[inc]=check();} artinya saat kolom

    0 dan baris 0 maka diinisialisasi sebagai tandatitik= 1 yang kondisinya akan dijalankan pada

    fungsi check() begitu pula selanjutnya. Nilai balik/return dari fungsi check() akan disimpan

    pada array flag[inc]. Sedangkan A++ digunakan untuk increment dari nilai sebelumnya A = 0 ,

    maka jika ditambah 1 menjalankan pada kolom 1 begitu seterusnya.

    Analisa : Pada fungsi ke() merupakan program

    time out untuk memberi batas waktu memilih

    karakter sesuai keypad . Pada fungsi cec()

    mempunyai parameter cv yang bertipe integer .

    Fungsi cec() digunakan untuk

    menjalankan/menampilkan karakter pada led dot

    matrix yang didalamnya terdapat statement

    switch-case dengan parameter variabel array

    flag[cv] dari nilai parameter tersebut, yang mana

    variabel array ini sebagai variabel temporary yg

    menyimpan karakter saat menekan keypad.

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 18

    Fungsi inti / main program :

    F. KESIMPULAN

    Dari percobaan moving sign dari input keypad yang ditampilkan pada led dot matrix ini dapat

    disimpulkan bahwa percobaan ini perlu ketelitian dan keberhasilan program terletak dari

    algoritma programmer . Tingkat kesulitan dari project ini yaitu menyimpan 10 karakter seperti

    kata POLITEKNIK yang kemudian diberi animasi berjalan/begerak dari kiri ke kanan pada setiap

    kata/karakter .

    Analisa : Pada fungsi main() ini digunakan untuk menjalankan

    program yang pertama kali ditransfer ke modul.

    Inisialisasi PORT dan PIN / DDR juga untuk kondisi pertama .

    Analisa : Pada fungsi while(1) ini menjalankan program ini secara continue / berkelanjutan .

    Untuk pertama kali memanggil fungsi ke() untuk memberi waktu menekan keypad sebagai

    input lalu mnginisialisasi lagi nilai variabel A sampai dengan P =0 dan tandatitik=-.

    Selanjutnya terdapat increment variabel inc++ . Lalu memanggil fungsi cec dengan

    memasukkan nilai parameter untuk menyimpan inputan keypad yang ingin ditampilkan dan

    diakhir program menampilkan angka 1 dengan memanggil fungsi x1 pada indeks 0 . Artinya

    angka 1 menandakan akhir tampilan .

  • PRAKTIKUM 3 Moving sign LED Dot Matrix dari keypad

    COMPUTER ENGINEERING B 2012 | PENS Page 19

    LAMPIRAN

    Berikut gambar hasil program :

    1. Porting pada modul

    2. Tampilan ketika karakter berjalan

    3. Tampilan angka 1 diakhir program/diakhir animasi