213 Tabel 1. Deskripsi PIN IC 74595
Simbol PIN Deskripsi
Q1 1
parallel data output 1 Q2
2 parallel data output 2
Q3 3
parallel data output 3 Q4
4 parallel data output 4
Q5 5
parallel data output 5 Q6
6 parallel data output 6
Q7 7
parallel data output 7 GND
8 ground 0 V
Q7S 9
serial data output SHCP
10 shift register clock input
STCP 11
storage register clock input MR
12 Master Reset Active Low
OE 13
output enable input active LOW DS
14 serial data input
Q0 15
parallel data output 0 V
cc
16 supply voltage
PIN 14 DS adalah Pin DATA.
Pin 11 SCH_CP atau disebut juga CLOCK dalam data sheet lain,
DATA akan dibaca dan disimpan kedalam shift register ketika CLOCK berubah dari level LOW ke level HIGH atau dari 0 ke 1.
Pin 12 ST_CP atau sering disebut dengan LATCHED, data akan di simpan di register ketika ST_CP kondisi LOW atau 0, dan data akan di
kirim ke out Q0 – Q7 jika ST_CP kondisi HIGH atau 1.
c.
Komunikasi Serial dari Mikrokontroller
Prinsip komunikasi serial pada Mikrokontroller adalah pengiriman data secara berurutan dengan menggunakan karakter-karakter didalam
ASCII. Karakter ini yang nantinya akan dirubah menjadi signal digital oleh hardware transmitter Tx, dan akan dterjemahkan lagi menjadi data
karakter oleh hardware receiver Rx. Komunikasi serial mikrokontroler sangatlah sederhana, dikarenakan sudah memiliki instruksi-instruksi
214 pemrograman yang standart. Berikut instruksi yang sering digunakan
dalam komunikasi serial mikrokontroler.
printf“………..”; digunakan untuk mencetak atau mengeluarkan data string
katakalimat ke jalur komunikasi serial mikrokontroler.
putchar‘…’; atau putcharno_char; digunakan untuk mencetak atau mengeluarkan data char karakter
ke jalurkomunikasi serial mikrokontroler
puts.....;
digunakan untuk mencetak atau mengeluarkan data char karakter berwujud array ke jalur komunikasi serial mikrokontoler.
scanfvaribel_penyimpan;
digunakan untuk membacamenerima data stringchar dari jalur komunikasi serial mikrokontroler.
getchar;
digunakan untuk membacamenerima data char karakter dari jalur komunikasi serial mikrokontroler.
F. Langkah Kerja
1. Rangkailah modul sistem minimum mikrokontroller PORTD ke modul bluetooth HC-05, lalu hubungkan PORT A dan PORT B sistem
minimum ke bagian jalur data dan jalur kontrol dot matriks. Sedangkan, jalur data modul seven segment dihungkan ke PORT C, dan jalur
kendali modul seven segment masing-masing ke PORT D.5 dan PORT D.6. Perhatikan Gambar 3 berikut ini
215
PORT A PORT B
- 1
2 3
4 5
6 7
+
MIKROKONTROLLER ATMEGA32
- 1
2 3
4 5
6 7
+ -
1 2
3 4
5 6
7 +
PORT D
HC-05
VCC Tx
Rx GND
Rx Tx
- 7
6 5
4 3
2 1
+
PORT C JALUR
KENDALI JALUR
DATA MODUL DOT
MATRIKS
c a
b
d e
f g
a b
d e
f g
c Common Anode
c a
b
d e
f g
a b
d e
f g
c
PORT D.5 PORT D.6
Common Anode
1 2
Gambar 3. Rangkaian Modul Dot Matriks, Seven Segment dan Sistem Minimum.
2. Pada job 3 ini kita akan membuat program dot matriks dengan animasi gerakan atas-bawah.
3. Sebelum membuat program mikrokontroller, Gambar 4 berikut adalah algoritma dalam bentuk flowchart atau diagam alir yang akan dibuat.
216
START void clock_pertama; void pemisah;
void pemisah1; void hapus; void kombinasi1; void kombinasi2;
void tengah; void kapital; unsigned char
text[200],a[30],b[30],c[30],d[30],e[30]; int n,angka,animasi;
unsigned char x,h,y,z; Baca data:
scanfd d s s s s s,angka,animasi,a,b,c,d,e ;
END Animasi==5 angka ==
1? strcpytext,a;
kombinasi1;
Y
N
Animasi==6 angka == 1?
strcpytext,a; kombinasi2;
Y
N
Gambar 4. Flowchart program 4. Pastikan PC atau notebook sudah terpasang driver downloader
USBasp, CV AVR dan ProgISP seperti pada Gambar 5 berikut ini.
217 a
b c
Gambar 5. PC tersudah terpasang driver downloader a, sudah terpasang CV AVR b, dan sudah ada software ProgISP c
5. Buka software CV AVR anda dengan cara double klik pada shortcut yang ada di desktop laptop anda.
6. Setelah codevision AVR, pada main toolbar, klik pada bagian menu bar
klik file kemudian klik New.
Gambar 6. Pilihan menu bar File-New 7. Kemudian akan muncul tampilan Create New File, pada bagian File
Type Source atau Project . Pilih Project lalu klik OK.
218 Gambar 7. Project baru CodeVision AVR
8. Maka akan muncul pertanyaan “Do you want to use the CodeWizard
AVR”, klik Yes.
Gambar 8. Pertanyaan untuk menggunakan CodeWizardAVR 9. Kemudian pilih tipe chip yang akan dipakai, ATmega 32 termasuk
kategori pilihan yang atas.
Gambar 9. Pemilihan Chip 10. Maka akan muncul tampilan CodeWizardAVR, sesuaikan atur chip dan
frekuensi xtal yang digunakan, ATmega32 dengan xtal 12.000 MHz
219 Gambar 10. Pengaturan Chip
11. Kemudian pada bar USART untuk mengatur komunikasi serial
mikrokontroller.
Gambar 11. Pengaturan USART 12. Kemudian atur PORT A, PORT B, PORT C, PORT D5, dan PORT D6
sebagai output.
220 Gambar 12. Pengaturan PORT
13. Lalu Klik tombol Generate program, save and exit seperti dibawah ini, maka akan muncul dialog box Save c Compiler Source File.
221 Gambar 13. Proses setelah pengaturan selesai dan akan menyimpan
program 14. Beri nama yang sama pada 3 tahap penyimpanan, yaitu file dalam
format C compiler file .c, Project File.prj, CodeVisionWizardAVR files .cwp. misalkan “JOB3”.
Gambar 14. Proses penyimpanan program 15. Tambahka
n file “lib.c” dengan cara menyalin kedalam folder yang sama.
16. Tambahkan header pada bagian awal program seperti pada Gambar berikut ini
222 Gambar 15. Header program
17. Deklarasikan fungsi-fungsi yang akan digunakan pada program seperti pada gambar berikut ini.
Gambar 16. Deklarasi fungsi pada awal program. 18. Deklarasikan variabel yang digunakan untuk menerima data tipe
stringkalimat yang nantinya perlu diubah menjadi variabel kode dan angka pada mikrokontroller, sehingga akan menggunakan fungsi
scanfvariabel_penyimpanan; untuk membaca dari aplikasi.
Sehingga perlu menambahkan beberapa variabel seperti berikut ini untuk memilih animasi, angka maupun teks.
19. Tambahakan juga data blank sebanyak 640 buah “0xFF” yang nantinya
akan digantikan nilai heksadesimal dari bentuk angka, huruf maupun
simbol seperti berikut ini.
223 20. Kemudian buatlah contoh program seperti dibawah ini.
while 1
{ animasi=angka=0;
strcpytext, ;
scanf d d s s s s
s ,angka,animasi,a,b,c,d,e;
if animasi==5 angka==1
{ strcpytext,a;
kombinasi1; delay_ms500;
hapus; }
else if
animasi==6 angka==1 {
strcpytext,a; kombinasi2;
delay_ms500; hapus;
} }
21. Kemudian diluar dari program utama “void main” tambahkan fungsi-
fungsi seperti dibawah ini. void
clock_pertama {
ds=0; ds=1;
shcp=1; stcp=1;
delay_us50; shcp=0;
stcp=0; delay_us50;
ds=0; };
16 baris 40 kolom
224 void
pemisah {
for h=0;hstrlentext;h++
{ scan_huruftext[h];
for y=0;y6;y++
{ blank[40+h6+y]=hex[y];
40 adalah mulainya kolom setelah blank, h6+y adalah pemisahan
karakter heksa }
} };
void pemisah1
{ kapital;
for h=0;h5;h++
{ scan1text[0];
for y=0;y5;y++
{ blank[y+43]=hex1[y];
baris pertama huruf 0
blank[y+83]=hex1[y+5]; baris kedua
blank[y+123]=hex1[y+10]; blank[y+163]=hex1[y+15];
blank[y+203]=hex1[y+20]; blank[y+243]=hex1[y+25];
blank[y+283]=hex1[y+30]; blank[y+323]=hex1[y+35];
blank[y+363]=hex1[y+40]; blank[y+403]=hex1[y+45];
blank[y+443]=hex1[y+50]; blank[y+483]=hex1[y+55];
blank[y+523]=hex1[y+60]; blank[y+563]=hex1[y+65];
} scan1text[1];
for y=0;y5;y++
{ blank[y+49]=hex1[y];
baris pertama huruf 1
blank[y+89]=hex1[y+5]; baris kedua
blank[y+129]=hex1[y+10]; blank[y+169]=hex1[y+15];
blank[y+209]=hex1[y+20]; blank[y+249]=hex1[y+25];
blank[y+289]=hex1[y+30];
225 blank[y+329]=hex1[y+35];
blank[y+369]=hex1[y+40]; blank[y+409]=hex1[y+45];
blank[y+449]=hex1[y+50]; blank[y+489]=hex1[y+55];
blank[y+529]=hex1[y+60]; blank[y+569]=hex1[y+65];
} scan1text[2];
for y=0;y5;y++
{ blank[y+55]=hex1[y];
baris pertama huruf 2
blank[y+95]=hex1[y+5]; baris kedua
blank[y+135]=hex1[y+10]; blank[y+175]=hex1[y+15];
blank[y+215]=hex1[y+20]; blank[y+255]=hex1[y+25];
blank[y+295]=hex1[y+30]; blank[y+335]=hex1[y+35];
blank[y+375]=hex1[y+40]; blank[y+415]=hex1[y+45];
blank[y+455]=hex1[y+50]; blank[y+495]=hex1[y+55];
blank[y+535]=hex1[y+60]; blank[y+575]=hex1[y+65];
} scan1text[3];
for y=0;y5;y++
{ blank[y+61]=hex1[y];
baris pertama huruf 3
blank[y+101]=hex1[y+5]; baris kedua
blank[y+141]=hex1[y+10]; blank[y+181]=hex1[y+15];
blank[y+221]=hex1[y+20]; blank[y+261]=hex1[y+25];
blank[y+301]=hex1[y+30]; blank[y+341]=hex1[y+35];
blank[y+381]=hex1[y+40]; blank[y+421]=hex1[y+45];
blank[y+461]=hex1[y+50]; blank[y+501]=hex1[y+55];
blank[y+541]=hex1[y+60]; blank[y+581]=hex1[y+65];
} scan1text[4];
for y=0;y5;y++
226 {
blank[y+67]=hex1[y]; baris pertama
huruf 4 blank[y+107]=hex1[y+5];
baris kedua blank[y+147]=hex1[y+10];
blank[y+187]=hex1[y+15]; blank[y+227]=hex1[y+20];
blank[y+267]=hex1[y+25]; blank[y+307]=hex1[y+30];
blank[y+347]=hex1[y+35]; blank[y+387]=hex1[y+40];
blank[y+427]=hex1[y+45]; blank[y+467]=hex1[y+50];
blank[y+507]=hex1[y+55]; blank[y+547]=hex1[y+60];
blank[y+587]=hex1[y+65]; }
scan1text[5];
for y=0;y5;y++
{ blank[y+73]=hex1[y];
baris pertama huruf 5
blank[y+113]=hex1[y+5]; baris kedua
blank[y+153]=hex1[y+10]; blank[y+193]=hex1[y+15];
blank[y+233]=hex1[y+20]; blank[y+273]=hex1[y+25];
blank[y+313]=hex1[y+30]; blank[y+353]=hex1[y+35];
blank[y+393]=hex1[y+40]; blank[y+433]=hex1[y+45];
blank[y+473]=hex1[y+50]; blank[y+513]=hex1[y+55];
blank[y+553]=hex1[y+60]; blank[y+593]=hex1[y+65];
} }
}
void kapital
{ for
h=0;hstrlentext;h++ {
text[h]=touppertext[h]; }
}
void hapus
{ for
n=0;n640;n++
227 {
blank[n]=0xFF; }
};
void kombinasi1
{ kapital;
pemisah;
for y=strlentext6+42;ystrlentext6+2;
y-- kiri ke kanan lalu berhenti
{ for
z=0;z=10;z++ {
for x=0;x=40;x++
{ if
x==1 {
clock_pertama; }
data_out=blank[y+x]; shcp=1;
stcp=1; delay_us100;
shcp=0; stcp=0;
delay_us100; }
} }
for n=0;n120;n++
{ blank[n]=0xFF;
} pemisah1;
tengah; tengah;
for x=7;x16;x++
17 adalah banyaknya baris data di data3
{ for
y=0;y75;y++ kecepatan geser
{ ds=0;
clock ke ds=1;
shcp=0; stcp=1;
data_out=blank[x40+0]; delay_us50;
228 shcp=1;
stcp=0; delay_us50;
ds=0;
for h=1;h=39;h++
{ clock ke 1
shcp=0; stcp=1;
data_out=blank[x40+h]; delay_us50;
data_out=0xFF; shcp=1;
stcp=0; delay_us50;
} }
}
for x=0;x8;x++
17 adalah banyaknya baris data di data3
{ for
y=0;y75;y++ kecepatan geser
{ ds=0;
clock ke ds=1;
shcp=0; stcp=1;
data_out=blank[x40+0]; delay_us50;
shcp=1; stcp=0;
delay_us50; ds=0;
for h=1;h=39;h++
{ clock ke 1
shcp=0; stcp=1;
data_out=blank[x40+h]; delay_us50;
data_out=0xFF; shcp=1;
stcp=0; delay_us50;
229 }
} }
tengah; tengah;
for n=0;n120;n++
{ blank[n]=0xFF;
} pemisah;
for y=strlentext6+2;ystrlentext6+42
;y++ {
for z=0;z=10;z++
{ for
x=0;x=40;x++ {
if x==1
{ clock_pertama;
} data_out=blank[y+x];
shcp=1; stcp=1;
delay_us100; shcp=0;
stcp=0; delay_us100;
} }
} delay_ms1000;
}
void kombinasi2
{ kapital;
pemisah; for
y=0;y=strlentext6+2;y++ kanan ke
kiri lalu berhenti {
for z=0;z=10;z++
{ for
x=0;x=40;x++ {
if x==1
{ clock_pertama;
} data_out=blank[y+x];
230 shcp=1;
stcp=1; delay_us100;
shcp=0; stcp=0;
delay_us100; }
} }
for n=0;n120;n++
{ blank[n]=0xFF;
} pemisah1;
tengah; tengah;
for x=7;x0;x--
17 adalah banyaknya baris data di data3
{ for
y=0;y75;y++ kecepatan geser
{ ds=0;
clock ke ds=1;
shcp=0; stcp=1;
data_out=blank[x40+0]; delay_us50;
shcp=1; stcp=0;
delay_us50; ds=0;
for h=1;h=39;h++
{ clock ke 1
shcp=0; stcp=1;
data_out=blank[x40+h]; delay_us50;
data_out=0xFF; shcp=1;
stcp=0; delay_us50;
} }
}
231 for
x=15;x7;x-- 17 adalah
banyaknya baris data di data3 {
for y=0;y75;y++
kecepatan geser {
ds=0; clock ke
ds=1; shcp=0;
stcp=1; data_out=blank[x40+0];
delay_us50; shcp=1;
stcp=0; delay_us50;
ds=0;
for h=1;h=39;h++
{ clock ke 1
shcp=0; stcp=1;
data_out=blank[x40+h]; delay_us50;
data_out=0xFF; shcp=1;
stcp=0; delay_us50;
} }
} tengah;
tengah;
for n=0;n120;n++
{ blank[n]=0xFF;
} pemisah;
for y=strlentext6+2;y0;y--
{ for
z=0;z=10;z++ {
for x=0;x=40;x++
{ if
x==1 {
clock_pertama; }
data_out=blank[y+x];
232 shcp=1;
stcp=1; delay_us100;
shcp=0; stcp=0;
delay_us100; }
} }
delay_ms1000; }
void tengah
{ x=7;
for y=0;y255;y++
{ ds=0;
clock ke ds=1;
shcp=0; stcp=1;
data_out=blank[x40+0]; delay_us50;
shcp=1; stcp=0;
delay_us50; ds=0;
for h=1;h=39;h++
{ clock ke 1
shcp=0; stcp=1;
data_out=blank[x40+h]; delay_us50;
data_out=0xFF; shcp=1;
stcp=0; delay_us50;
} }
}
233 22. Setelah membuat program, lalu compile program mikrokontroller
dengan menekan tombol “Build” pada CV-AVR, atau dengan menekan tombol “shift+F9” pada keyboard.
Gambar 17. Menu Build program 23. Hubungkan kabel power ke sumber tegangan AC, lalu nyalakan modul
dengan cara menekan saklar, sambungkan kabel usb dari modul ke LaptopPC.
24. Lalu buka software PROG ISP 1.72 untuk download program yang
sudah di-build
ke mikrokontroller. Klik tombol “Load Flash”, lalu masukkan program .hex dalam folder yang kalian buat tadi, kemudian
klik OK. Setelah itu klik tombol “Auto” untuk memulai proses download.
Gambar 18. Proses download program ke mikrokontroller 25. Setelah itu, buka aplikasi DotMatriksApp dan hubungkan dengan
mikrokontroller. Cara
penghubungan dan
pengoperasian
1
2
234 DotMatriksApp terdapat pada manual operation DotMatriksApp yang
terlampir pada Jobsheet ini. 26. Amati kinerja mikrokontroller, jika terdapat masalah lakukan trouble
shooting. Trouble shooting yang sering terjadi:
a. Pastikan hanya ada satu perangkat Android yang terhubung dengan HC-05.
b. Jika Aplikasi tidak dapat terhubung dengan HC-05, kemungkinan masih terhubung dengan perangkat lain. Tutup lalu buka kembali
aplikasi. Lakukan juga restart pada HC-05 dengan cara mematikan lalu menghidupkan lagi modul bluetooth melalui saklar,
kemudian coba hubungkan lagi. c. Jika
Aplikasi telah
terhubung dengan
HC-05 namun
mikrokontroller tidak bekerja berdasarkan input dari aplikasi, coba perika lagi apakah program mikrokontroller sudah benar atau
belum.
G. PETUNJUK KHUSUS
Untuk menunjang kelancaran teknis dan pelaksanaan kegiatan belajar anda, perhatikan petunjuk berikut :
a. Rangkailah tanpa tegangan terlebih dahulu. Jika rangkaian dirasa sudah benar baru pasangkan tegangan.
b. Tanyakan kepada guru terlebih dahulu apabila rangkaian ingin dicoba supaya tidak terjadi sesuatu yang diinginkan.
c. Jauhkan peralatan yang tidak diperlukan dari meja kerja. d. Perhatikan semua Langkah Kerja Jobsheet.
e. Keterangan lebih lanjut, konsultasikan dengan guru pembimbing pada saat kegiatan belajar.
H. SOAL LATIHAN
a. Buatlah program baru yang animasinya lebih variatif berkebalikan dengan animasi yang ada didalam job ini, 6 huruf muncul dari sebelah
kiri ke arah kanan, berhenti ditengah lalu turun ke bawah menggulung lalu muncul dari atas ke tengah, lalu bergerak menghilang dari tengah
ke arah kiri. Buat program 6 huruf muncul dari sebelah kanan ke arah kiri, berhenti ditengah lalu naik ke atas menggulung lalu muncul dari
bawah ke tengah, lalu bergerak menghilang ke tengah ke arah kanan.
235
I. LAMPIRAN
236
Jobsheet 4 A. Kompetensi Dasar
Mengoperasikan rangkaian pengendalian dengan menggunakan mikrokontroller.
B. Sub Kompetensi
Mengendalikan 1 buah seven segment.
C. Tujuan
Setelah menyelesaikan praktik siswa diharapkan dapat : 1. mengetahui
cara mengendalikan
rangkaian pengendalian
menggunakan mikrokontroller melalui aplikasi android, 2. membuat program mikrokontroller yang mengendalikan rangkaian
pengendalian melalui aplikasi android, 3. mengetahui
cara membuat
program mikrokontroller
yang mengendalikan rangkaian pengendalian melalui aplikasi android
memanfaatkan fungsi, 4. mengembangkan pemrograman mikrokontroller pada rangkaian
pengendalian.
D. Alat dan Bahan
1. Sistem minimum Mikrokontroller 1 unit
2. PCLaptop 1 unit
3. Smartphone Android 1 unit
4. Module Bluetooth HC-05 1 unit
5. Modul Seven Segment 1 unit
6. Modul Dot Matriks 1 unit
7. Kabel USB 1 buah
8. Kabel Jumper 10 Pin 4 buah
E. Dasar Teori a. Seven Segment
Seven Segment pada dasarnya terdiri dari tujuh buah led yang disusun menjadi satu agar membentuk seperti angka-angka. Seven
Segment kemudian dikembangakan dengan menambahkan satu buah