Anda di halaman 1dari 19

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 led
matrix dan berulang dari depan lagi. Proses ini dilakukan sangat cepat sehingga mata kita
melihatnya tetap sebagai suatu karakter yg diam. Misalnya ingin menampilkan huruf A ,
secara umum digambarkan sebagai berikut:
00000000
00000000
00000000
00000000
00000000
00000000
00000000
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 <mega162.h>
#include <delay.h>
#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 keypad
char 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 C
char 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 0
col0=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 D
col0=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<=16;ty++){
KOSONG(0);
}
}
Program untuk menampilkan karakter ke led dot matrix sesuai dengan input keypad .
char check(){
if(tandatitik=='1'){ for(q=16;q>=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<=500;uv++){
if(uv==500){ for(q=16;q>=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 kali
void main(void){
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
//PORT A Initialization
PORTA=0x00;
DDRA=0xFF;
//PORT B Initialization
PORTB=0x0F;
DDRB=0x0F;
//PORT C Initialization
PORTC=0x0F;
DDRC=0xF0;
//PORT D Initialization
PORTD=0x00;
DDRD=0x07;
//PORT E Initialization
PORTE=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){
//PERTAMA
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='-';
//KEDUA
inc++;
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='-';
//KETIGA
inc++;
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='-';
//KEEMPAT
inc++;
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='-';
//KELIMA
inc++;
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='-';
//KEENAM
inc++;
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='-';
//KETUJUH
inc++;
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='-';
//KEDELAPAN
inc++;
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='-';
//KESEMBILAN
inc++;
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='-';
//KESEPULUH
inc++;
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

Anda mungkin juga menyukai