You are on page 1of 89

MODUL TRAINER SMK

PNEUMATIK

2014

DJONS COMPANY
DAFTAR ISI

PENGENALAN BAHASA C ...................................................................................... 1


1. Pendahuluan ............................................................................................................. 1
2. Penulisan Program Bahasa C .................................................................................. 1

3. Tipe Data ................................................................................................................. 2

4. Konstanta ................................................................................................................. 3

5. Variabel ................................................................................................................... 3

6. Deklarasi .................................................................................................................. 3

7. Operator ................................................................................................................... 4

8. Komentar Program ................................................................................................ 12

9. Penyeleksian Kondisi ............................................................................................ 13

10. Perulangan ........................................................................................................... 16

11. Aray (Larik) ......................................................................................................... 18

12. Fungsi .................................................................................................................. 19

SOFTWARE COMPILER CODEVISION AVR ................................................... 22


1. Pengenalan ........................................................................................................... 22
2. Instalasi ................................................................................................................. 22

3. Membuat Program Baru ....................................................................................... 22

SOFTWARE PROTEUS 7 PROFESSIONAL ....................................................... 30


1. Pengenalan ........................................................................................................... 30
2. Instalasi ................................................................................................................. 30

3. Tampilan Program ................................................................................................ 31

4. Membuat Simulasi Program ................................................................................. 31

5. Aplikasi Output ..................................................................................................... 36

PNEUMATIK ........................................................................................................... 79
PENGENALAN BAHASA C

1. PENDAHULUAN
Bahasa C pertama kali digunakan di komputer Digital Equipment Corporation
PDP-11 yang menggunakan sistem opersi UNIX C adalah bahasa yang standar,
artinyasuatu program yang ditulis dengan bahasa C tertentu akan dapat dikonversi
denganbahasa C yang lain dengan sedikit modifikasi. Standar bahasa C yang asli
adalah standardari UNIX. Patokan dari standar UNIX ini diambil dari buku yang
ditulis oleh BrianKerningan dan Dennis Ritchie berjudul “The C Programming
Language”, diterbitkanoleh Prentice-Hall tahun 1978. Deskripsi C dari Kerninghan
dan Ritchie ini kemudiankemudian dikenal secara umum sebagai “K dan R C”

2. PENULISAN PROGRAM BAHASA C


Program Bahasa C tidak mengenal aturan penulisan di kolom tertentu, jadi
bisadimulai dari kolom manapun. Namun demikian, untuk mempermudah
pembacaanprogram dan untuk keperluan dokumentasi, sebaiknya penulisan bahasa C
diatursedemikian rupa sehingga mudah dan enak dibaca.Berikut contoh penulisan
Program Bahasa C:

Program dalam bahasa C selalu berbentuk fungsi seperti ditunjukkan dalam


main(). Program yang dijalankan berada di dalam tubuh program yang dimulai
dengan tandakurung buka { dan diakhiri dengan tanda kurung tutup }. Semua yang
tertulis di dalamtubuh program ini disebut dengan blok.Tanda () digunakan untuk
mengapit argumen suatu fungsi. Argumen adalahsuatu nilai yang akan digunakan
dalam fungsi tersebut. Dalam fungsi main diatas tidakada argumen, sehingga tak ada
data dalam ().
Dalam tubuh fungsi antara tanda { dantanda } ada sejumlah pernyataan yang
merupakan perintah yang harus dikerjakan oleh prosesor. Setiap pernyataan diakhiri
dengan tanda titik koma ;Baris pertama #include <…> bukanlah pernyataan,
sehingga tak diakhiri dengan tanda titik koma (;). Baris tersebut meminta kompiler

Modul Trainer SMK 1


untuk menyertakan file yang namanya ada di antara tanda <…> dalam proses
kompilasi. File-file ini (berekstensi.h) berisi deklarasi fungsi ataupun variable. File ini
disebut header. File ini digunakan semacam perpustakaan bagi pernyataan yang ada
di tubuh program. #include merupakan salah satu jenis pengarah praprosesor
(preprocessor directive). Pengarah praprosesor ini dipakai untuk membaca file yang
di antaranya berisi deklarasi fungsi dan definisi konstanta. Beberapa file judul
disediakan dalam C. File-file ini mempunyai ciri yaitu namanya diakhiri dengan
ekstensi .h.
Misalnya pada program #include <stdio.h> menyatakan pada kompiler agar
membaca file bernama stdio.h saat pelaksanaan kompilasi. Bentuk umum #include:
#include “namafile” Bentuk pertama (#include <namafile>) mengisyaratkan bahwa
pencarian file dilakukan pada direktori khusus, yaitu direktori file include. Sedangkan
bentuk kedua (#include “namafile”) menyatakan bahwa pencarian file dilakukan
pertama kali pada direktori aktif tempat program sumber dan seandainya tidak
ditemukan pencarian akan dilanjutkan pada direktori lainnya yang sesuai dengan
perintah pada sistem operasi.

3. TIPE DATA
Tipe data merupakan bagian program yang paling penting karena tipe data
mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer. Misalnya saja
5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5
dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya bertipe
float maka akan menghasilkan nilai 2.5000000. Pemilihan tipe data yang tepat akan
membuat proses operasi data menjadi lebih efisien dan efektif.

Modul Trainer SMK 2


4. KONSTANTA
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses
program berlangsung. Konstanta nilainya selalu tetap. Konstanta harus didefinisikan
terlebih dahulu di awal program. Konstanta dapat bernilai integer, pecahan, karakter
dan string. Contoh konstanta : 50; 13; 3.14; 4.50005; ‘A’; ‘Bahasa C’.

5. VARIABLE
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili
suatu nilai tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya
selalu tetap, nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. Nama dari
suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut
:
 Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa
huruf. Bahasa C bersifat case-sensitive artinya huruf besar dan kecil dianggap
berbeda.
 Tidak boleh mengandung spasi.
 Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah
(underscore). Yang termasuk symbol khusus yang tidak diperbolehkan antara lain
: $, ?, %, #, !, &,*, (, ), -, +, = dsb
 Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai

6. DEKLARASI
Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam
program. Identifier dapat berupa variable, konstanta dan fungsi.

6.1. DEKLARASI VARIABEL


Bentuk umum pendeklarasian suatu variable adalah : Nama_tipe
nama_variabel; Contoh : int x; // Deklarasi x bertipe integer

6.2. DEKLARASI KONSTANTA


Dalam bahasa C konstanta dideklarasikan menggunakan preprocessor #define.
Contohnya : #define PHI 3.14 #define nim “0111500382”

Modul Trainer SMK 3


6.3. DEKLARASI FUNGSI
Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan atau
dipanggil di manapun di dalam program. Fungsi dalam bahasa C ada yang sudah
disediakan sebagai fungsi pustaka seperti printf(), scanf(), getch() dan untuk
menggunakannya tidak perlu dideklarasikan. Fungsi yang perlu dideklarasikan
terlebih dahulu adalah fungsi yang dibuat oleh programmer. Bentuk umum deklarasi
sebuah fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi); Contohnya :
float luas_lingkaran(int jari); void tampil(); int tambah(int x, int y);

7. OPERATOR
7.1. OPERATOR PENUGASAN
Operator penugasan (Assignment operator) dalam bahasa C berupa tanda sama
dengan (“=”).

7.2. OPERATOR ARITMATIKA


Bahasa C menyediakan lima operator aritmatika, yaitu :
 * : untuk perkalian
 / : untuk pembagian
 % : untuk sisa pembagian (modulus)
 + : untuk penjumlahan
 - : untuk pengurangan

Modul Trainer SMK 4


Modul Trainer SMK 5
7.3. OPERATOR HUBUNGAN (PERBANDINGAN)
Operator hubungan digunakan untuk membandingkan hubungan antara dua
buah operand /sebuah nilai atau variable. Operasi majemuk seperti pada tabel
dibawah ini

7.4. OPERATOR LOGIKA


Jika operator hubungan membandingkan hubungan antara dua buah operand, maka
operator logika digunakan untuk membandingkan logika hasil dari operatoroperator
hubungan. Operator logika ada tiga macam, yaitu :
 && : Logika AND (DAN)
 || : Logika OR (ATAU)
 ! : Logika NOT (INGKARAN)
Operasi AND akan bernilai benar jika dua ekspresi bernilai benar. Operasi OR akan
bernilai benar jika dan hanya jika salah satu ekspresinya bernilai benar. Sedangkan
operasi NOT menghasilkan nilai benar jika ekspresinya bernilai salah, dan akan
bernilai salah jika ekspresinya bernilai benar.

Modul Trainer SMK 6


7.5. OPERATOR BITWISE (MANIPULASI PER BIT)
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang
ada di memori. Operator bitwise dalam bahasa C di SDCC adalah sebagai berikut :
 << : Pergeseran bit ke kiri
 >> : Pergeseran bit ke kanan
 & : Bitwise AND
 ^ : Bitwise XOR (exclusive OR)
 | : Bitwise OR
 ~ : Bitwise NOT
 Pertukaran Nibble dan Byte
 Mengambil Bit yang paling Berbobot

7.5.1. OPERASI GESER KIRI (<<)


Operasi geser kiri merupakan operasi yang akan menggeser bit-bit kekiri
sehingga bit 0 akan berpindah ke bit 1 kemudian bit 1 akan berpindah ke bit 2 dan
seterusnya. Operasi geser kiri membutuhkan dua buah operan disebelah kiri tanda <<
merupakan nilai yang akan digeser sedangkan disebelah kanannya merupakan jumlah
bit penggerseran. Contohnya :
Datanya = 0x03 << 2 ; // 0x03 digeser kekiri 2 bit hasilnya ditampung di datanya
a << = 1 // Isi variabel A digeser ke kiri 1 bit hasilnya
// kembali disimpan di A

Modul Trainer SMK 7


7.5.2. OPERASI GESER KANAN(>>)
Operasi geser kiri merupakan operasi yang akan menggeser bit-bit kekanan
sehingga bit 7 akan berpindah ke bit 6 kemudian bit 6 akan berpindah ke bit 5 dan
seterusnya. Operasi geser kanan membutuhkan dua buah operan disebelah kiri tanda
<< merupakan nilai yang akan digeser sedangkan disebelah kanannya merupakan
jumlah bit penggerseran.
Contohnya :
Datanya = 0x03 >> 2 ; // 0x03 digeser kekiri 2 bit hasilnya ditampung di datanya
a >> = 1 // Isi variabel A digeser ke kiri 1 bit hasilnya
// kembali disimpan di A

7.5.3. OPERASI BITWISE AND ( & )


Operasi bitwise AND akan melakukan operasi AND pada masing-masing bit,
sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.
Contohnya :
Hasil = 0x03 & 0x31; Operasinya 0x03 = 00000011
0x31 = 00110001
Hasil 0x01 = 00000001

Modul Trainer SMK 8


7.5.4. OPERASI BITWISE OR ( | )
Operasi bitwise OR akan melakukan operasi OR pada masing-masing bit,
sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.
Contohnya :
Hasil = 0x05 | 0x31; Operasinya 0x01 = 00000001
0x31 = 00110001
Hasil 0x01 = 00110001

7.5.5. OPERASI BITWISE XOR( ^ )


Operasi bitwise XOR akan melakukan operasi XOR pada masing-masing bit,
sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.
Contohnya :
Hasil = 0x02 ^ 0xFA; Operasinya 0x02 = 00000010
0xFA = 11111010
Hasil 0x01 = 11111000

7.5.6. OPERASI BITWISE NOT( ~ )


Operasi bitwise XOR akan melakukan operasi XOR pada masing-masing bit,
sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya. Contohnya :

Modul Trainer SMK 9


Hasil = ~ 0x31; 0x31 = 00110001
Hasil ~0x31 = 11001110

7.5.7. PERTUKARAN NIBBLE DAN BYTE


Pertukaran nibble dalam bahasa C dikenali SDCC dengan bentuk pernyataan
sebagai berikut ini: volatile unsigned char i: i = (( i << 4) | ( i >> 4)); //pertukaran
nibble Dan pernyataan sebagai berikut ini sebagai pertukaran byte:volatile unsigned
char j:
j = (( j << 8) | ( j >> 8)); //pertukaran byte

Modul Trainer SMK 10


7.5.8. MENGAMBIL BIT YANG PALING BERBOBOT
Untuk mendapatkan bit yang paling berbobot (MSB) untuk tipe long, short,
int, dan char maka dapat dilakukan dengan pertanyaan berikut: Volatile unsigned char
gint; Unsigned char hop;
Hop = (gint >> 7) & 1 // mengambil MSB

7.6. OPERATOR UNARY


Operator Unary merupakan operator yang hanya membutuhkan satu operand
saja. Dalam bahasa C terdapat beberapa operator unary, yaitu : Tabel 2.3 Operasi
Unary

Contohnya :
n=0
Jum = 2 * ++n;
Jum = 2 * n++;

Modul Trainer SMK 11


7.7. OPERATOR MAJEMUK
Operator majemuk terdiri dari dua operator yang digunakan untuk menyingkat
penulisan. Operasi majemuk seperti pada tabel dibawah ini Tabel Operasi majemuk

8. KOMENTAR PROGRAM
Komentar program hanya diperlukan untuk memudahkan pembacaan dan
pemahaman suatu program (untuk keperluan dokumentasi program). Dengan kata
lain, komentar program hanya merupakan keterangan atau penjelasan program. Untuk
memberikan komentar atau penjelasan dalam bahasa C digunakan pembatas /* dan */
atau menggunakan tanda // untuk komentar yang hanya terdiri dari satu baris.
Komentar program tidak akan ikut diproses dalam program (akan diabaikan). Contoh
pertama :
// program ini dibuat oleh ….
Dibelakang tanda // tak akan diproses dalam kompilasi. Tanda ini hanya untuk satu
baris kalimat. contoh kedua :
/* program untuk memutar motor DC ataumotor stepper */
Bentuk ini berguna kalau pernyataannya berupa kalimat yang panjang sampai

beberapa baris.

Modul Trainer SMK 12


9. PENYELEKSIAN KONDISI
Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses.
Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang mengatur
jalannya air. Bila katup terbuka maka air akan mengalir dan sebaliknya bila katup
tertutup air tidak akan mengalir atau akan mengalir melalui tempat lain. Fungsi
penyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk
program yang kompleks.

9.1. STRUKTUR KONDISI “IF….”


Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi
suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar, maka
pernyataan yang ada di dalam blok if akan diproses dan dikerjakan. Bentuk umum
struktur kondisi if adalah :
if(kondisi)
pernyataan;

9.2. STRUKTUR KONDISI “IF......ELSE….”


Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. Jika
kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang
dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang
kedua yang dilaksanakan. Bentuk umumnya adalah sebagai berikut :
if(kondisi)
pernyataan-1
else
pernyataan-2

Modul Trainer SMK 13


Contoh
IF
if (angka = fo) /* bila angka sama dengan fo */
{ /*kerjakan berikut ini */
for (k = 0; k<4 ; k++)
{
i=tabel1(k);
PORTA = i; // pernyataan dalam blok ini bisa kosong
tunda50(100); // berarti tidak ada yang dikerjakan
}
}
else //bila tidak sama kerjakan berikut ini
{
for (k = 0; k<4 ; k++)
{
i=tabel2(k); // pernyataan dalam blok ini bisa kosong
PORTA = i; // berarti tidak ada yang dikerjakan
tunda50(100);
}
}

9.3. STRUKTUR KONDISI “SWITCH...CASE... DEFAULT…”


Struktur kondisi switch....case....default digunakan untuk penyeleksian kondisi
dengan kemungkinan yang terjadi cukup banyak. Struktur ini akan melaksanakan
salah satu dari beberapa pernyataan ‘case’ tergantung nilai kondisi yang ada di dalam

switch.

Selanjutnya proses diteruskan hingga ditemukan pernyataan ‘break’. Jika tidak


ada nilai pada case yang sesuai dengan nilai kondisi, maka proses akan diteruskan
kepada pernyataan yang ada di bawah ‘default’. Bentuk umum dari struktur kondisi
ini adalah :

Modul Trainer SMK 14


switch(kondisi)
{
case 1 : pernyataan-1;
break;
case 2 : pernyataan-2;
break;
.....
case n : pernyataan-n;
break;
default : pernyataan-m
}
contoh
SWITCH …. CASE …
switch(fo)
{
case 1:
for (k = 0; k<4 ; k++)
{
i=tabel1(k);
PORTA = i;
tunda(100);
}
break;
case 2:
for (k = 0; k<4 ; k++)
{
i=tabel2(k);
PORTA = i;
tunda(100);
}
break;

Modul Trainer SMK 15


10. PERULANGAN
Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan
proses yang berulangulang sebanyak keinginan kita. Misalnya saja, bila kita ingin
menginput dan mencetak bilangan dari 1 sampai 100 bahkan 1000, tentunya kita akan
merasa kesulitan. Namun dengan struktur perulangan proses, kita tidak perlu
menuliskan perintah sampai 100 atau 1000 kali, cukup dengan beberapa perintah saja.
Struktur perulangan dalam bahasa C mempunyai bentuk yang bermacam-macam.

10.1. STRUKTUR PERULANGAN “ WHILE”

Perulangan WHILE banyak digunakan pada program yang terstruktur.


Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses
perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan
berhenti bila kondisinya bernilai salah. Bentuk umum dari struktur kondisi ini adalah:
While (ekspresi)
{
Pernyataan_1
Pernyataan_2
}
Contoh Program 1 :
while (!TF0);
{
TF0 = 0;
TR0 = 0;
}

10.2. STRUKTUR PERULANGAN “DO.....WHILE…”


Pada dasarnya struktur perulangan do....while sama saja dengan struktur
while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang
Modul Trainer SMK 16
letaknya di atas sementara pada perulangan do....while, seleksi while berada di bawah
batas perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya
akan terjadi satu kali perulangan. Bentuk umum dari struktur kondisi ini adalah:
Do
{
Pernyataan_1
Pernyataan_2
}
While (ekspresi)

10.3. STRUKTUR PERULANGAN “FOR”


Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang
telah diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for
tampaknya lebih efisien karena susunannya lebih simpel dan sederhana. Bentuk
umum perulangan for adalah sebagai berikut :
for (inisialisasi; syarat; penambahan)
pernyataan;
Keterangan:

Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol.


syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan.
penambahan : pengatur perubahan nilai variabel kontrol. Contoh

for (k = 0; k<4 ; k++)


{
i=tabel1(k);
PORTA = i;
tunda50(100);
}

Modul Trainer SMK 17


11. ARAY (LARIK)
Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam
urutan tertentu yang menggunakan nama yang sama. Letak atau posisi dari elemen
array ditunjukkan oleh suatu index. Dilihat dari dimensinya array dapat dibagi
menjadi Array dimensi satu, array dimensi dua dan array multi-dimensi.

11.1. ARRAY DIMENSI SATU


Setiap elemen array dapat diakses melalui indeks.
 Indeks array secara default dimulai dari 0.
 Deklarasi Array Bentuk umum : Deklarasi array dimensi satu: [Tipe_array][
nama_array][elemen1];

11.2. ARRAY DIMENSI DUA


Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah
kolom. Bentuknya dapat berupa matriks atau tabel. Deklarasi array dimensi dua :
[Tipe_array][nama_array][elemen1][elemen2];

11.3. ARRAY MULTI-DIMENSI


Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua.
Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array
dimensi dua. Bentuk umumnya yaitu :
[tipe_array][nama_array][elemen1][elemen2]…[elemenN];

Modul Trainer SMK 18


12. FUNGSI

12.1. PENGERTIAN FUNGSI


Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk
mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang
memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C
sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam setiap program bahasa C,
minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam
program-program C yang terstruktur.
Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki
struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari
penulisan bagian program yang sama.

12.2. PENDEFISIAN FUNGSI


Sebelum digunakan fungsi harus didefinisikan terlebih dahulu. Bentuk definisi fungsi
adalah: Tipe_Nilai_Balik nama_fungsi(argumen1, argumen2)
{
Pernyataan1;
Pernyataan1;
return(ekspresi);
}
Contoh:
int jumlah(int bil1,int bil2) //definisi fungsi jumlah
{
int hasil;
hasil = bil1 + bil2
return(hasil);
}

Modul Trainer SMK 19


12.3. PROTOTYPE FUNGSI
Ketentuan pendefinisian fungsi yang mendahului fungsi pemanggil dapat
merepotkan untuk program yang komplek atau besar. Untuk mengatasi hal tersebut
maka fungsi dapat dideklarasikan sebelum digunakan, terletak sebelum fungsi main.
Deklarasi fungsi dikenal dengan prototype fungsi. Cara mendeklarasikan fungsi sama
dengan header fungsi dan diakhiri tanda titik koma
(;)

12.4. VARIABEL LOKAL DAN GLOBAL


Variabel lokal adalah variabel yang dideklarasikan di dalam suatu fungsi,
variabel ini hanya dikenal fungsi tersebut. Setelah keluar dari fungsi ini maka variabel
ini akan hilang. Variabel global adalah variabel yang dideklarasikan di luar fungsi,
sehingga semua fungsi dapat memakainya.

Modul Trainer SMK 20


12.5. KATA KUNCI EXTERN DAN STATIC
Kata kunci extern dan static digunakan untuk menyatakan sifat dari variabel
atau fungsi. Suatu variabel atau fungsi yang didepannya ditambah dengan kata kunci
extern maka artinya variabel atau fungsi tersebut didefinisikan di luar file tersebut.
Variabel global atau fungsi yang didepannya ditambah kata kunci static mempunyai
arti bahwa variabel global atau fungsi tersebut bersifat pivate bagi file tersebut,
sehingga tidak dapat diakses dari file yang lain. Kata kunci static yang ditambahkan
didepan variabel lokal (variabel di dalam suatu fungsi) artinya variabel tersebut
dialokasikan pada memori statik. Nilai yang tersimpan dalam variabel statik tidak
hilang walaupun sudah keluar dari fungsi.

12.6. FUNGSI TANPA NILAI BALIK


Fungsi yang tidak mempunyai nilai balik menggunakan kata kunci void
sedangkan fungsi yang tidak mempunyai argumen, setelah nama fungsi dalam kurung
dapat kosong atau dengan menggunakan kata kunci void.
Contoh:
void tunda(void)
{
for(i = 0; i < 10 ; i++);
}
atau
void tunda()
{
for(i=0;i<10;i++);
{}
}
/* fungsi tunda_panjang */
void tunda_panjang(int n)
{
int i;
for (i=0; i<n;i++)
tunda();

Modul Trainer SMK 21


SOFTWARE COMPILER CODEVISION AVR

1.1 PENGENALAN
CodeVisionAVR merupakan salah satu software gratis yang berfungsi sebagai
text editor dalam menulis baris perintah sekaligus sebagai compiler yang dapat
mengubah file sumber menjadi file hexa. Software CodeVisionAVR versi demo dapat
di unduh dari http://www.hpinfotech.ro/html/cvavr.htm atau dari CD yang terdapat
pada buku ini.
CodeVisionAVR menyediakan berbagai fasilitas yang memudahkan
pengguna. Salah satunya adalah CodeWizardAVR yang memberikan kemudahan
dalam melakukan konfigurasi fungsi-fungsi pin dan fitur yang yang ingin digunakan.
Pengguna dapat membuat dan menjalankan program yang ditulis, kemudian
mengujinya langkah demi langkah sehingga pengguna dapat mengamati perubahan
data pada setiap register dan port I/O. Selain itu juga CodeVisionAVR menyediakan
toolbar yang memudahkan pengguna untuk melakukan berbagai interaksi yang
diinginkan dan juga memiliki arena kerja yang cukup leluasa.

1.2 INSTALASI
Agar pengguna dapat menggunakan software CodeVisionAVR maka para
pengguna harus meng-instal-nya terlebih dahulu. Adapun proses instalasi software
CodeVisionAVR ini cukup mudah.
1. Klik dua kali master program CodeVisionAVR yang ada di CD buku ini.
2. Ikuti langkah-langkah yang diminta dan lakukan perubahan seperlunya.
3. Setelah selesai, program dapat langsung dijalankan.

1.3 MEMBUAT PROGRAM BARU


Membuat program baru menggunakan CodeVisionAVR tidaklah sulit.
Adapun langkah-langkah yang harus dilakukan adalah sebagai berikut:
1. Jalankan program CodeVisionAVR. Dengan cara klik dua kali pada Icon
CodeVisionAVR seperti pada gambar 1.1.

Modul Trainer SMK 22


2. Pada saat jalankan program CodeVisionAVR maka layar kosong tampak seperti
pada gambar 1.2.

3. Klik Menu File dan pilih New, maka tampil jendela pilihan seperti pada gambar
1.3.

4. Untuk membuat program baru pilihlah Project kemudian klik OK, maka muncul
pertanyaan yang menanyakan apakah kita ingin menggunakan CodeWizardAVR
seperti pada gambar 1.4 berikut, kemudian pilih Yes.

Modul Trainer SMK 23


5. Jendela CodeWizardAVR tampil seperti gambar 1.5. Pada tab Chip, lakukan
konfigurasi seperti pada gambar 1.5.

6. Selanjutnya pilih tab Ports, lalu lakukan pengaturan seperti pada gambar 1.6.

Modul Trainer SMK 24


atau bisa juga (sesuaikan dengan kebutuhan).

sedangkan untuk penyettingan timer, seperti gambar di bawah ini*:

Modul Trainer SMK 25


Untuk penyettingan LCD seperti berikut*:

*sesuaikan dengan kebutuhan.


7. Kemudian pilih menu File lalu pilih Generat, Save and Exit. Lalu kita diminta
menyimpan tiga jenis file secara berurut. Dianjurkan simpan ketiga file tersebut
dalam sebuah folder yang sama.
8. Setelah selesai, maka program CodeVisionAVR akan tampak seperti gambar 1.7,
yang menunjukan bahwa sudah terdapat program yang telah dikonfigurasi dan siap
digunakan atau disisipkan program tambahan.

Modul Trainer SMK 26


Dalam pemrograman biasanya didefinisikan terlebih dahulu. Contohnya sebagai
berikut:

9. Kemudian sisipkan program utama seperti yang tampak pada gambar 1.8 berikut.

Modul Trainer SMK 27


Selain program utama, ada juga sub program. Contohnya sebagai berikut:

10. Setelah selesai kita dapat melakukan kompilasi pada program dengan cara pilih
menu Project lalu pilih Build All atau Ctrl+F9.

11. Jika program sudah benar atau tidak terdapat kesalahan, maka akan tampil jendela
informasi seperti gambar 1.9 berikut ini.

Modul Trainer SMK 28


12. Kemudian klik OK, dan program siap di download ke rangkaian. karena
downloader yang digunakan adalah progisp maka kita membutuhkan driver program
PROGISP(ver 1.72). Penggunaannya adalah sebagai berikut:

Langlah-langkah diatas adalah proses untuk menghasilkan file dengan bahasa mesin
yaitu file dengan ekstensi hexa (*.hex). File ini dibutuhkan untuk diisi (download) ke
IC mikrokontroler, karena mikrokontroler hanya mengerti bahasa mesin. Tahap-tahap
ini akan terus dilakukan setiap membuat program baru.

Modul Trainer SMK 29


SOFTWARE PROTEUS 7 PROFESSIONAL

2.1 PENGENALAN
Pada umumnya setiap pegguna yang baru mulai belajar mengalami kesulitan
untuk mempelajari mikrokontroler apabila tidak ada pendukung secara langsung
seperti pengajar dan peralatan yang memadai. Untuk itu dibutuhkan suatu sarana yang
dapat digunakan untuk mencoba suatu rangkaian mikrokontroler. Salah satunya
adalah software Proteus 7 Professional.
Software Proteus 7 Professional ini tidak free, maka pada CD saya hanya bisa
memberikan Proteus 7 Professional versi demo. Penggunaannya tidak jauh berbeda
dengan Proteus 7 Professional. Proteus 7 Professional memiliki program yang dapat
berfungsi untuk mensimulasikan rangkaian mikrokontroler seolah-olah pengguna
berhadapan dengan rangkaian yang sesungguhnya.
Software Proteus terdiri dari dua program utama yaitu ARES dan ISIS.
Dimana masing-masing program memiliki fungsi yang berbeda. ARES biasa
digunakan untuk membuat layout PCB (Printed Circuit Board), sedangkan ISIS biasa
digunakan untuk menggambar schematic rangkaian serta mensimulasikan program.
Pada buku ini hanya menggunakan program ISIS yang digunakan untuk
mensimulasikan rangkaian mikrokontroler. Sedangkan untuk membuat layoutnya
silahkan anda pilih sesuai selera mau menggunakan software mana.

2.2 INSTALASI
Untuk instalasi program, tidak jauh berbeda dengan cara menginstal program
lain pada umumnya. Yang diinstal disini adalah software Proteus-nya, namun pada
penggunaannya kita hanya akan menggunakan program ISIS-nya saja yang dapat
digunakan sebagai simulator, agar rangkaian mikrokontrolernya tampak seperti
rangkaian sesungguhnya. Adapun proses instalasi nya adalah sebagai berikut :
1. Klik dua kali master program Proteus 7 Professional versi Demo yang ada di CD
buku ini atau download dari
http://www.labcenter.co.uk/download/prodemo_download.cfm
2. Ikuti langkah-langkah yang diminta dan lakukan perubahan seperlunya jika
dibutuhkan.
3. Setelah selesai, program dapat langsung dijalankan.

Modul Trainer SMK 30


2.3 TAMPILAN PROGRAM
Pada software Proteus, kita menggunakan program ISIS yang berfungsi
sebagai simulator. Pada program ISIS banyak sekali fasilitas yang disajikan dan akan
memakan banyak waktu jika harus menjelaskan semuanya. Oleh karena itu saya
hanya akan menjelas beberapa saja yang diperlukan. Secara umum tampilan program
ISIS pada Software Proteus 7 Professional adalah sebagai berikut :

Keterangan :
1. Editing Window.
2. Overview Window.
3. Object Selector.

2.4 MEMBUAT SIMULASI PROGRAM


Dalam membuat simulasi program tidaklah sulit. Namun ada beberapa tahap
yang harus dilalui. Secara garis besar ada 3 tahap, yaitu :
 Pemilihan komponen yang akan digunakan.
 Peletakan komponen dan penyusunan rangkaian.
 Download program pada rangkaian.
Namun sebelum pengguna membuat schematic rangkaian, pengguna harus
paham prinsip kerja dari rangkaian yang ingin dibuat, sehingga pengguna dapat
memeriksa kesalahan sedini mungkin pada rangkaian jika terdapat error atau
ketidaksesuaian prinsip kerja pada rangkaian. Untuk mensimulasikan rangkaian
mikrokontroler menggunakan program ISIS ini, pengguna tidak perlu membuat
schematic secara ”lengkap”, tapi cukup membuat rangkaian input/output-nya saja

Modul Trainer SMK 31


seperti pada gambar-gambar schematic yang nanti akan anda temukan pada contoh-
contoh rangkaian. Pada rangkaian sebenarnya kita menggunakan IC mikrokontroler
ATMega8535, tetapi pada simulator tidak terdapat IC ATMega8535, maka kita
menggunakan IC mikrokontroler yang sekelas dengan ATMega8535 yaitu
AT90S8535 dan untuk seterusnya kita akan menggunakan IC tersebut dalam
membuat simulasi-simulasi rangkaian pada buku ini. Berikut ini adalah langkah-
langkah membuat simulasi program menggunakan program ISIS :
1. Siapkan gambar rangkaian yang ingin disimulasikan. Contohnya seperti gambar 2.2
berikut.

Modul Trainer SMK 32


2. Jalankan program ISIS dan buka lembar baru. Tampak seperti gambar 2.3 berikut.

3. Pilih komponen yang akan digunakan, klik Component Mode kemudian tekan
tombol Pick Devices. Seperti gambar 2.4 berikut. Dan cari komponen IC
Mikrokontroler AT90S8535 dan komponen LED.

Modul Trainer SMK 33


4. Pilih kategori, dan ambil komponen yang dibutuhkan dengan cara klik dua kali
nama komponen yang dipilih seperti gambar 2.5 berikut.

5. Setelah semua komponen terkumpul di bagian Object Selector, klik OK.


6. Pilih toolbar Terminal Mode, ambil komponen Power dan letakkan pada
rangkaian, atur posisi komponen pada Editing Window. Seperti gambar 2.6 berikut.

Modul Trainer SMK 34


7. Hubungkan jalur pada masing-masing komponen sesuai gambar rangkaian
sehingga tampak seperti gambar 2.7.

8. Gambar rangkaian tidak perlu lengkap seperti aslinya. Yang penting input dan
output rangkaian terhubung dengan komponen yang diinginkan seperti contoh gambar
2.7. Setelah selesai, rangkaian siap disimulasikan dan lihatlah tampilan yang
dihasilkan pada gambar simulasi.

Modul Trainer SMK 35


9. Klik dua kali IC mikrokontroler pada rangkaian, akan muncul jendela Edit
Component. Pada bagian Program File, klik lambang folder, maka akan muncul
jendela Select File Name, pilih program LED.HEX yang telah dibuat dan berhasil di
compile sebelumnya. Klik Open, lalu Klik OK.
10. Jalankan simulasi rangkaian dengan cara menekan tombol Play pada bagian sudut
kiri bawah.
11. Jika LED pada rangkaian berkedap-kedip, maka berarti rangkaian anda telah
berhasil disimulasikan.

APLIKASI OUTPUT
1.1. RANGKAIAN LAMPU LED
Rangkaian minimum untuk menghidupkan 8 LED melalui Port B ditunjukan pada
Gambar 3.1. yang perlu diperhatikan adalah konfigurasi rangkaian LED yaitu
Common Anode (CA) artinya untuk menghidupkan LED pada Port B, port B harus
dikirim atau diberi logika ‘0’.

1.2. PEMROGRAMAN MENYALAKAN LED


Setelah rangkaian LED dibuat dan dihubungkan dengan port pararel mikrokontroller,
maka sekarang saatnya Anda membuat program yang digunakan untuk
menghidupkan LED tersebut. Program sebagai berikut ini
//-------------------------------------------------------
//Program LED Menyala
//-------------------------------------------------------
#include <mega8535.h>

Modul Trainer SMK 36


#include <delay.h>
void main(void)
{
char a; a=0x000;
DDRC=0xFF;
while(1)
{
PORTC = a;
}
}

Cara kerja program:


Pada program Program LED Menyala, di perlukan deklarasi register dan delay untuk
mikrokontroller jenis ATMEGA8535. Setelah mendeklarasi register, maka program
akan masuk ke dalam program utama. Di dalam program utama, terdapat variabel
karakter yang berfungsi untuk menyimpan data angka 0x000. Data 0x00 digunakan
untuk menyalakan LED karena LED di pasang common anoda Data tersebut akan di
keluarkan oleh mikrokontroller dengan menggunakan PORTC. Data tersebut di
simpan dalam variabel a yang dideklarasikan sebagai char. Data tersebut dikeluarkan
dengan menggunakan PORTC sehingga harus dideklarasikan PORTC sebagai output
dengan DDRC=0xFF. Instruksi while merupakan instruksi perulangan, sehingga
mikrokontroller akan mengeluarkan data yang di simpan oleh variabel karakter secara
terus menerus.

1.3. PEMROGRAMAN LED BERKEDIP


Setelah membuat dan menjalankan program menyalakan lampu LED, maka
sekarang saatnya Anda membuat program kedua yang digunakan untuk
menghidupkan LED berkedip.
Program sebagai berikut ini
//-------------------------------------------------------
//Program Bab 3.2. LED Berkedip
//-------------------------------------------------------
#include <mega8535.h>
#include <delay.h>
void main(void)
{
char a; char b;
a=0x000; b=0x0FF;
DDRB=0xFF;
while(1)

Modul Trainer SMK 37


{
PORTB= a;
delay_ms(500);
PORTB= b;
delay_ms(500);
}
}

Cara kerja program:


Pada program Program LED Berkedip, terlihat menggunakan mikrokontroller
ATMEGA8535, sehingga di perlukan deklarasi register untuk mikrokontroller jenis
ATMEGA8535. Di dalam program utama, terdapat variabel karakter yang berfungsi
untuk menyimpan data 00 dan FF. Data tersebut akan di keluarkan oleh
mikrokontroller dengan menggunakan port 0. Instruksi while merupakan instruksi
perulangan.

1.4. PEMROGRAMAN LED FLIP FLOP


Setelah membuat dan menjalankan program menyalakan lampu LED
berkedip, maka sekarang saatnya Anda membuat program ketiga yang digunakan
untuk menghidupkan LED flip-flop 1.
Program sebagai berikut ini
//-------------------------------------------------------
//Program Bab 3.3. LED Flip-Flop
//-------------------------------------------------------
#include <mega8535.h>
#include <delay.h>
void main(void)
{
char a; char b;
a=0x00f; b=0x0f0;
DDRB=0xFF;
while(1)
{
PORTB= a;
delay_ms(500);
PORTB= b;
delay_ms(500);
}
}

Modul Trainer SMK 38


Cara kerja program:
Pada program LED Flip-Flop di perlukan deklarasi register untuk mikrokontroller
jenis ATMEGA8535. Setelah mendeklarasi register, maka program akan
mendeklarasikan waktu 1 sekon. Waktu tersebut berfungsi untuk waktu tunda.
Kemudian mikrokontroller akan mengeksekusi program utama. Di dalam program
utama, terdapat variabel karakter yang berfungsi untuk menyimpan data 0x00F dan
0x0F0. Data tersebut akan di keluarkan oleh mikrokontroller dengan menggunakan
port B.

1.5. PEMROGRAMAN LED BERJALAN KEKANAN


Setelah membuat dan menjalankan program menyalakan lampu LED flip-flop,
maka sekarang saatnya Anda membuat program yang digunakan untuk
menghidupkan LED berjalan kanan. Program LED berjalan kekanan ini dijalankan
pada hardware nyala led berlogika tinggi atau logika 1. jika menggunakan logika
rendah maka LED bukan menyala tetapi akan mati. Program LED berjalan kekanan
menggunakan operasi geser kanan. Operasi geser kiri akan menggeser bit-bit kekanan
sehingga bit 0 akan berpindah ke bit 1 dan bit 1 akan berpindah ke bit 2 dan
seterusnya. Program sebagai berikut ini
//------------------------------------------------------
//Program Bab 3.4. LED Berjalan Kekanan
//------------------------------------------------------
#include <mega8535.h>
#include <delay.h>
void main(void)
{
volatile unsigned char a=0x01;
DDRB=0xFF;
while(1)
{
a=((a>>7) | (a<<1));
delay_ms(1000);
PORTB=a;
}
}

Cara kerja program:


Pada program Program LED berjalan Kekanan di perlukan deklarasi register untuk
mikrokontroller jenis ATMEGA8535. Setelah mendeklarasi register, maka

Modul Trainer SMK 39


program akan mendeklarasikan waktu kurang lebih 1 sekon. Kemudian
mikrokontroller akan mengeksekusi program utama. Di dalam program utama,
terdapat variabel karakter yang berfungsi untuk menyimpan data 0x01. Data tersebut
akan di keluarkan oleh mikrokontroller dengan menggunakan port 0.
kemudian mikrokontroller menjalankan operasi geser kanan. Diantara operasi geser
kiri dan mengeluarkan data di PORTB tersebut terdapat waktu tunda kurang lebih 1
sekon. Didalam program utama terdapat pernyataan while(1). Pernyataan itu
berfungsi untuk melakukan Looping secara terus menerus.

1.6. PEMROGRAMAN LED BERJALAN KEKIRI


Setelah membuat dan menjalankan program menyalakan lampu LED berjalan
kekanan, maka sekarang saatnya Anda membuat program yang digunakan untuk
menghidupkan LED berjalan kekiri. Program LED berjalan kekanan menggunakan
operasi geser kiri. Operasi geser kiri akan menggeser bit-bit kekanan sehingga bit 7
akan berpindah ke bit 6 dan bit 6 akan berpindah ke bit 5 dan seterusnya. Program
sebagai berikut ini
//------------------------------------------------------
//Program Bab 3.5. LED berjalan ke kiri
//------------------------------------------------------
#include <mega8535.h>
#include <delay.h>
void main(void)
{
volatile unsigned char a=0x01;
DDRB=0xFF;
while(1)
{
a=((a<<7) | (a>>1));
delay_ms(500);
PORTB=a;
}
}

Cara kerja program:


Pada program Program LED berjalan ke kiri di perlukan deklarasi register untuk
mikrokontroller jenis ATMEGA8535. Setelah mendeklarasi register, maka program
akan mendeklarasikan waktu kurang lebih 1 sekon. Kemudian mikrokontroller akan
mengeksekusi program utama. Di dalam program utama, terdapat variabel karakter

Modul Trainer SMK 40


yang berfungsi untuk menyimpan data 0x01. Data tersebut akan di keluarkan oleh
mikrokontroller dengan menggunakan port 0.
kemudian mikrokontroller menjalankan operasi geser kekiri. Diantara operasi geser
kiri dan mengeluarkan data di PORTB tersebut terdapat waktu tunda kurang lebih 1
sekon. Didalam program utama terdapat pernyataan while(1). Pernyataan itu
berfungsi untuk melakukan Looping secara terus menerus.

1.7. PEMROGRAMAN LED BERJALAN BOLAK-BALIK


Setelah membuat dan menjalankan program menyalakan lampu LED berjalan
menyala kekiri, maka sekarang saatnya Anda membuat program ketuga yang
digunakan untuk menghidupkan LED bolak balik. Program LED bolak balik
menggunakan operasi pernyataan geser kanan dan geser kiri. Program sebagai berikut
ini
//------------------------------------------------------
//Program Bab 3.6. LED ping-pong
//------------------------------------------------------
#include <mega8535.h>
#include <delay.h>
void jalankiri(unsigned int n)
{
unsigned char i=0, a=0x01;
DDRB=0xFF;
PORTB = 0;
while(n)
{
for(i=0;i<7;i++)
{
a=((a>>7) | (a<<1));
delay_ms(100);
PORTB=a;
}
n--;
}
}
void jalankanan(unsigned int n)
{
unsigned char i=0, a=0x80;
DDRB=0xFF;
PORTB = 0;
while(n)
for(i=0;i<7;i++)
{
a=((a<<7) | (a>>1));
delay_ms(100);

Modul Trainer SMK 41


PORTB=a;
}
n--;
}
}
void main(void)
{
while(1)
{
iswanto:
jalankiri(1);
jalankanan(1);
goto iswanto;
}
}

Cara kerja program:


Pada program menyalakan LED dari kiri ke kanan di perlukan deklarasi register
untuk mikrokontroller jenis ATMEGA8535. Setelah mendeklarasi register, maka
program akan mendeklarasikan waktu kurang lebih 1 sekon. Waktu tersebut
berfungsiuntuk waktu tunda. Waktu tunda itu tidak tidak akurat.Kemudian
mikrokontroller akan mengeksekusi program utama. Di dalam program utama,
terdapat variabel karakter yang berfungsi untuk menyimpan data 0x01. Data tersebut
akan di keluarkan oleh mikrokontroller dengan menggunakan port 0.
kemudian mikrokontroller menjalankan operasi geser kanan. Diantara operasi geser
kiri dan mengeluarkan data di port 0 tersebut terdapat waktu tunda kurang lebih 1
sekon. Didalam program utama terdapat pernyataan while(1). Pernyataan itu
berfungsi untuk melakukan Looping secara terus menerus.

1.8 APLIKASI 7 SEGMENT NON-MULTIPLEX


Aplikasi 7 segment sering kita temukan pada keseharian kita terutama pada
peralatan elektronik. Biasanya digunakan untuk menampilkan channel atau track pada
televisi atau VCD, pada aplikasi lampu lalu lintas di perempatan jalan dan pada
sistem antriandi Bank atau tempat pelayanan umum lainnya. Pada bab ini akan
membahas aplikasi menggunakan 7 segment secara sederhana.
Aplikasi 7 segment Non-Multiplex disini dimaksudkan cara penggunaan 7
segment secara sendiri-sendiri atau independent. Sebuah 7 segment memiliki 8 buah
pin yang masing-masing dihubungkan dengan 1 buah port pada mikrokontroler.

Modul Trainer SMK 42


Masing-masing port akan mengontrol 1 buah 7 segment yang digunakan untuk
menampilkan 1 digit angka seperti pada gambar 4.1.
Rangkaian Simulasi 7 Segment Non-Multiplex tanpa decoder

Modul Trainer SMK 43


Program 1. Aplikasi 7 Segment 1 digit

Program 2. Aplikasi 7 Segment 2 digit

Modul Trainer SMK 44


Rangkaian Simulasi 7 Segment Non-Multiplex tanpa decoder
Decoder adalah suatu driver yang digunakan mengubah data. Untuk
menampilkan angka pada 7 segment display terkadang kita membutuhkan decoder
BCD (Binary Coded Decimal) untuk membantu kita dalam memproses data. Decoder
ini biasanya digunakan untuk mengubah data desimal menjadi data biner. Decoder
untuk jenis Common Anode diperlukan keluaran aktip rendah (misalnya SN-7447)
sedangkan untuk jenis Common Cathode diperlukan keluaran aktip tinggi (misalnya
SN-7448).
Teknik pemberian datanya agak berbeda dengan sebelumnya. Yakni dengan cara
membagi dua bagian sebuah port lalu mengontrol masing-masing bagian tanpa harus
mengganggu data yang lain. Misalkan data terakhir pada 7 segment adalah 34, berarti
data PORTA =0x43. Kemudian mau diubah menjadi 35, berarti angka satuan menjadi
angka 5 (4 5), berarti kita hanya mengubah data pada LSB, sedangkan data MSB
tetap. Caranya adalah sebagai berikut,

Modul Trainer SMK 45


APLIKASI 7 SEGMENT MULTIPLEX
5.1 Rangkaian Simulasi 7 Segment Multiplex
Aplikasi 7 segment Multiplex merupakan penggunaan 7 segment secara
paralel. 7 segment yang berjumlah 2 atau lebih disusun sedemikian rupa sehingga
masing-masing pin yang sama pada 7 segment terubung secara paralel terhadap pin
pada port mikrokontroler. Sehingga pada mikrokontroler hanya akan menggunakan 2
buah port apabila 7 segment yang digunakan berjumlah maksimum 8 buah. Port pada
mikrokontroler yang dihubungkan dengan pin pada 7 segment digunakan untuk
menetukan data yang akan ditampilkan. Sedangkan port yang terhubung pada
common masing-masing 7 segment digunakan untuk mengontrol 7 segment mana
yang akan aktif/menyala.

Modul Trainer SMK 46


Tugas Program Aplikasi LED.

Buatlah program baru dengan CodeWizardAVR seperti konfigurasi berikut,


kemudian edit program seperti pada gambar.

Modul Trainer SMK 47


5.2 Aplikasi 7 Segment LCD dengan Decoder 7447
Aplikasi 7 segment menggunakan LCD display tidak berbeda dengan menggunakan 7
segment biasa, perbedaan hanya terdapat pada bentuk dan ukuran saja. Namun pada
penjelasan kali ini hanya menambahkan komponen IC TTL sebagai decoder agar
pemberian data menjadi lebih mudah. 7 segment LCD Display ini sudah terdiri dari 8
buah 7 segment yang tersusun secara multiplex. Sehingga kita cukup menggunakan 2
buah port yang akan dihubungkan dengan pin common pada LCD dan Pin Input pada
IC TTL. Untuk jelasnya bisa dilihat pada gambar 5.3.

Rangkaian Simulasi 7 Segment LCD dengan Decoder 7447

Modul Trainer SMK 48


1.9 APLIKASI LED DOT MATRIX
LED Dot Matrix merupakan salah satu aplikasi dari LED yang disusun secara
Matrix dan dapat berfungsi untuk menampilkan berbagai macam karakter. Terdapat
berbagai macam tampilan yang dapat dihasilkan melalui LED Dot Matrix.
Pada LED Dot Matrix 5x7 terdapat 5 pin kolom dan 7 pin baris yang
digunakan untuk menentukan kondisi masing-masing LED. Jika salah satu bagian
menjadi input maka bagian yang lain harus sebagai output atau sebaliknya.
Maksudnya salah satu bagian akan menjadi tempat masuknya arus dan bagian yang
lain akan menjadi tempat keluarnya arus tergantung pada kondisi posisi Anoda/katoda
LED yang terpasang didalamnya. Jika Anoda dari LED terpasang pada bagian kolom
maka semua pin pada bagian kolom merupakn tempat masuknya arus dan bagian
baris merupakan tempat keluarnya arus.
Apabila bagian kolom diberi arus atau diberi data 1 (high) maka kolom
tersebut aktif atau LED pada kolom tersebut siap menyala. LED yang menyala akan
tergantung pada bagian baris yang diberi data 0 (low).

Rangkaian Simulasi

Modul Trainer SMK 49


1.10 APLIKASI LCD DISPLAY 16X2

LCD Display 16x2 merupakan salah satu komponen display yang paling
populer digunakan untuk berbagai aplikasi. LCD Display memberikan kenyamanan
dalam interface, selain lebih menarik LCD Display juga dapat menampilkan berbagai
macam karakter yang tidak dapat ditampilkan menggunakan 7 segment. Lakukan
konfigurasi CodeWizardAVR seperti gambar berikut.

Modul Trainer SMK 50


Contoh Program
Program 1. Penampil Karakter dengan LCD
#include <mega8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
unsigned int temp=15;
char buf[33];
void main(void)
{
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
lcd_gotoxy(0,0);
lcd_putsf("Sensor");
lcd_gotoxy(0,1);
sprintf(buf, "Data = %d",temp);
lcd_puts(buf);
};
}

Modul Trainer SMK 51


Program 2. Penampil Data Variable yang berubah
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
unsigned int temp=0;
char buf[33];
void main(void)
{
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
lcd_gotoxy(0,0);
sprintf(buf, "%d",temp);
lcd_puts(buf);
delay_ms(1000);
++temp;
};
}

1.11 APLIKASI TOMBOL PUSH BUTTON

Tombol salah satu komponen yang paling sering digunakan pada aplikasi
elektronik. Tombol biasa digunakan sebagai pemilih, pengatur dan juga sebagai
sensor yang kemudian diproses untuk mengerjakan sesuatu. Umumnya jenis tombol
ada 2 macam, yaitu tombol Push Button (Tombol Tekan) dan Tombol Toggle
(On/Off). Terdapat berbagai macam bentuk dan ukuran tombol dari yang kecil sampai
yang besar, sehingga pengguna harus memilih tombol yang sesuai tergantung
kebutuhan. Contoh bentuk-bentuk tombol bias dilihat pada gambar 6.1 berikut.

Modul Trainer SMK 52


1.12 PUSH BUTTON
Tombol Push Button sering kita lihat dalam kehidupan sehari-hari pada
peralatan elektronik, seperti radio, televisi, keyboard dan kalkulator lain-lain.
Biasanya tombol push button ini digunakan untuk memilih atau menetukan suatu
proses, misalnya memilih channel televisi atau mengetik komputer.

Program Baca Masukan Tombol Push Button ke LED


#include <mega8535.h>
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0xFF;
Modul Trainer SMK 53
DDRB=0x00;
while (1)
{
// Place your code here
PORTA=PINB;
};
}

Program Baca Masukan Tombol Push Button ke 7 Segment


#include <mega8535.h>
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0xFF;
DDRB=0x00;
while (1)
{
// Place your code here
if(PINB.0==0) PORTA=0x79;
if(PINB.1==0) PORTA=0x24;
if(PINB.2==0) PORTA=0x30;
if(PINB.3==0) PORTA=0x19;
if(PINB.4==0) PORTA=0x12;
if(PINB.5==0) PORTA=0x02;
if(PINB.6==0) PORTA=0x78;
if(PINB.7==0) PORTA=0x00;
if(PINB==255) PORTA=0x40;
};
}

Modul Trainer SMK 54


Rangkaian Aplikasi Tombol Push Button dan LCD

Program Baca Masukan Tombol Push Button ke LCD

#include <mega8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
unsigned int temp=15;
char buf[33];
void main(void)
PORTB=0xFF;
DDRB=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
if(PINB.0==0) temp=1;
if(PINB.1==0) temp=2;
if(PINB.2==0) temp=3;
if(PINB.3==0) temp=4;
if(PINB.4==0) temp=5;
if(PINB.5==0) temp=6;
if(PINB.6==0) temp=7;
if(PINB.7==0) temp=8;
if(PINB==255) temp=0;
lcd_gotoxy(0,0);
sprintf(buf, "Data = %d",temp);

Modul Trainer SMK 55


lcd_puts(buf);
};
}

1.13 TOMBOL MATRIX


Tombol matrix merupakan tombol push button yang disusun secara matrix
sehingga tombol tampak menjadi susunan tombol yang teratur. Kita ambil salah satu
contoh tombol matrix 4x4. ini berarti tombol tersebut memiliki 4 baris dan 4 kolom.
Sebuah tombol yang ditekan akan terhubung ke salah satu baris dan salah satu kolom
yang nantinya akan menghubungkan baris dan kolom tersebut sesuai letak tombol
tersebut. Seperti yang ditunjukan oleh gambar 9.1.

Rangkaian Simulasi Tombol Matrix To LCD

Modul Trainer SMK 56


Contoh Program

Program Baca Masukan Tombol Matrix 4x4


#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
int key;
char buff[33];
unsigned char keypad( )
{
//Kolom 1==================
PORTD = 0b11110111;
if(PIND.7==0) {key=10; goto run;}
if(PIND.6==0) {key=15; goto run;}
if(PIND.5==0) {key=0; goto run;}
if(PIND.4==0) {key=14; goto run;}
//Kolom 2=================
PORTD = 0b11111011;
if(PIND.7==0) {key=13; goto run;}
if(PIND.6==0) {key=9; goto run;}
if(PIND.5==0) {key=8; goto run;}
if(PIND.4==0) {key=7; goto run;}
//Kolom 3=================
PORTD = 0b11111101;
if(PIND.7==0) {key=12; goto run;}
if(PIND.6==0) {key=6; goto run;}
if(PIND.5==0) {key=5; goto run;}
if(PIND.4==0) {key=4; goto run;}

Modul Trainer SMK 57


//Kolom 4=================
PORTD = 0b11111110;
if(PIND.7==0) {key=11; goto run;}
if(PIND.6==0) {key=3; goto run;}
if(PIND.5==0) {key=2; goto run;}
if(PIND.4==0) {key=1; goto run;}
run:
return key;
}
void main(void)
{
PORTD=0xF0;
DDRD=0x0F;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
awal:
lcd_gotoxy(0,0);
lcd_putsf("Tekan Sembarang ");
set:
key=keypad();
lcd_gotoxy(0,1);
sprintf(buff,"%d ",key);
lcd_puts(buff);
delay_ms(5);
//key=keypad();
};
}
Rangkaian Simulasi Kalkulator

Modul Trainer SMK 58


Contoh Program
Program Aplikasi Kalkulator
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
int key=20,step,op,a1,b1,c;
char buff[33];
unsigned char keypad( )
{
//Kolom 1==================
PORTB = 0b11110111;
if(PINB.7==0) {key=10; goto run;} //tambah
if(PINB.6==0) {key=15; goto run;} //sama dengan = Enter
if(PINB.5==0) {key=0; goto run;}
if(PINB.4==0) {key=14; goto run;} //ON = Cancel
//Kolom 2=================
PORTB = 0b11111011;
if(PINB.7==0) {key=13; goto run;} //kurang
if(PINB.6==0) {key=9; goto run;}
if(PINB.5==0) {key=8; goto run;}
if(PINB.4==0) {key=7; goto run;}
//Kolom 3=================
PORTB = 0b11111101;
if(PINB.7==0) {key=12; goto run;} //kali
if(PINB.6==0) {key=6; goto run;}
if(PINB.5==0) {key=5; goto run;}
if(PINB.4==0) {key=4; goto run;}
//Kolom 4=================
PORTB = 0b11111110;

Modul Trainer SMK 59


if(PINB.7==0) {key=11; goto run;} //bagi
if(PINB.6==0) {key=3; goto run;}
if(PINB.5==0) {key=2; goto run;}
if(PINB.4==0) {key=1; goto run;}
run:
return key;
}
void main(void)
{
PORTB=0xF0;
DDRB=0x0F;
// LCD module initialization
lcd_init(16);
while (1)
{
if(step == 0)
{
key=keypad();
if(key < 10)
{
a1=key;
lcd_gotoxy(0,0);
sprintf(buff,"%d ",a1);
lcd_puts(buff);
step = 1;
}
else step=0;
}
if(step == 1)
{
key=keypad();
if(key == 10)
{
op=1; //Tambah
sprintf(buff,"+ ");
lcd_puts(buff);
step = 2;
}
if(key == 13)
{
op=2; //Kurang
sprintf(buff,"- ");
lcd_puts(buff);
step = 2;
}
if(key == 12)
{
op=3; //Kali
sprintf(buff,"* ");
lcd_puts(buff);

Modul Trainer SMK 60


step = 2;
}
if(key == 11)
{
op=4; //Bagi
sprintf(buff,"/ ");
lcd_puts(buff);
step = 2;
}
}
if(step == 2)
{
key=keypad();
if(key < 10)
{
b1=key;
sprintf(buff,"%d ",b1);
lcd_puts(buff);
step = 3;
}
else step=2;
}
if(step == 3)
{
if(op == 1)
{
c=a1+b1;
sprintf(buff,"= %d ",c);
lcd_puts(buff);
step = 4;
}
if(op == 2)
{
c=a1-b1;
sprintf(buff,"= %d ",c);
lcd_puts(buff);
step = 4;
}
if(op == 3)
{
c=a1*b1;
sprintf(buff,"= %d ",c);
lcd_puts(buff);
step = 4;
}
if(op == 4)
{
c=a1/b1;
sprintf(buff,"= %d ",c);
lcd_puts(buff);
Modul Trainer SMK 61
step = 4;
}
step = 4;
}
if(step == 4)
{
key=keypad();
if(key == 14)
{
lcd_clear();
step = 0;
}
else step=4;
}
};
}

1.14 APLIKASI PENGUNCI PINTU (DOOR LOCK)


BERPASSWORD MENGGUNAKAN KEYPAD DAN LCD

Langsung saja ke cara kerjanya, gambar rangkaiannya bisa anda lihat dibawah ini.
Saat pertama kali alat ini saya nyalakan maka dalam keadaan tidak terkunci (unlock),
untuk menguncinya (lock) anda harus menekan tombol = (lihat gambar keypad
dibawah). Setelah terkunci, jika anda ingin membukanya kembali anda harus
memasukkan passwordnya (jika sudah mengetikan password tekan tombol + untuk
memasukkannya). Jika benar maka akan membuka kunci, tetapi jika salah kunci tidak
akan terbuka. Ketika sudah terbuka maka cara kerjanya kembali lagi ke awal.
Sedangkan tombol ON/C saya gunakan untuk menghapus password jika salah dalam
pengetikannya. Untuk indikator kuncinya saya menggunakan sebuah LED, jika LED
menyala maka dalam keadaan tidak terkunci dan jika mati dalam keadaan terkunci.

Modul Trainer SMK 62


berikut adalah program selengkapnya:

#include <mega16.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
Modul Trainer SMK 63
// Declare your global variables here

float nilai=0, password=12345678;


char temp[12], array[10], i=0, indeks=0;
//variabel indeks digunakan untuk mendeteksi jika indeks=0 unlock, indeks=1 lock

void lock()
{
while (indeks==0)
{
lcd_gotoxy(0,0);
lcd_putsf("Please press =");
lcd_gotoxy(0,1);
lcd_putsf("to lock");
PORTB = 0b11111011;
delay_ms(30);
if (PINB.7 == 0)
{
indeks=1;
PORTD.0=1;//terkunci
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("locked");
delay_ms(1000);
lcd_clear();
}
}
}

Modul Trainer SMK 64


void enter()
{
if (nilai==password)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("unlocked");
delay_ms(1000);
i=0; nilai=0;
PORTD.0=0;//kunci terbuka
indeks=0;
}
else
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("wrong password");
delay_ms(2500);
i=0; nilai=0;
indeks=1;//karena password salah jadi masih terkunci
}
}
void simpan_dlm_1variabel()
{ if (i==1){nilai=array[i];}
if (i>=2 && i<=8)
{
nilai=(nilai*10)+array[i];
}
}

Modul Trainer SMK 65


void scanning_keypad()//scanning pendeteksian penekanan keypad
{
lcd_gotoxy(0,0);
lcd_putsf("enter u’r pass");
PORTB = 0b11111110;
delay_ms(30);
if (PINB.4 == 0) {i++; array[i]=1; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.5 == 0) {i++; array[i]=4; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.6 == 0) {i++; array[i]=7; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.7 == 0) {lcd_clear();i=0;nilai=0;delay_ms(300);}
PORTB = 0b11111101;
delay_ms(30);
if (PINB.4 == 0) {i++; array[i]=2; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.5 == 0) {i++; array[i]=5; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.6 == 0) {i++; array[i]=8; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.7 == 0) {i++; array[i]=0; simpan_dlm_1variabel(); delay_ms(300);}
PORTB = 0b11111011;
delay_ms(30);
if (PINB.4 == 0) {i++; array[i]=3; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.5 == 0) {i++; array[i]=6; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.6 == 0) {i++; array[i]=9; simpan_dlm_1variabel(); delay_ms(300);}
if (PINB.7 == 0) {delay_ms(300);}
PORTB = 0b11110111;
delay_ms(30);
if (PINB.4 == 0) {delay_ms(300);}
if (PINB.5 == 0) {delay_ms(300);}
if (PINB.6 == 0) {delay_ms(300);}
if (PINB.7 == 0) {enter();delay_ms(300);}
}

Modul Trainer SMK 66


void tampil_lcd()
{
if (nilai>0)
{
ftoa(nilai,0,temp);
lcd_gotoxy(0,1);
lcd_puts(temp);
}
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization


// Port A initialization
PORTA=0x00;
DDRA=0x00;
// Port B initialization
PORTB=0xFF;
DDRB=0x0F;
// Port C initialization
PORTC=0x00;
DDRC=0x00;
// Port D initialization
PORTD=0x00;
DDRD=0x01;

Modul Trainer SMK 67


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


MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization


TIMSK=0x00;

// USART initialization
// USART disabled

Modul Trainer SMK 68


UCSRB=0x00;

// Analog Comparator initialization


ACSR=0x80;
SFIOR=0x00;

ADCSRA=0x00;

SPCR=0x00;

TWCR=0x00;

// Alphanumeric LCD initialization


// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
lcd_putsf("trainer mikrokontoller");
delay_ms(1000);
lcd_clear();

while (1)

Modul Trainer SMK 69


{
// Place your code here
lock();
scanning_keypad();
tampil_lcd();
}}

1.15 APLIKASI DATA ANALOG PADA LCD DISPLAY


Aplikasi data analog sering digunakan pada sensor-sensor yang keluarannya
seperti sensor suhu, kelembaban, asap dan sensor lainnya. Pada rangkaian simulasi
kita hanya menggunakan resistor variabel sebagai pengatur output analog yang
nantinya diproses oleh mikrokontroler dan kemudian ditampilkan melalui LCD
Display.
Rangkaian Simulasi Analog pada LCD Display

Modul Trainer SMK 70


Contoh Program

Program Pembaca Data Analog 8 Channel


#include <mega8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
// Declare your global variables here
unsigned char temp[30];
void main(void)
{
// Declare your local variables here
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off

Modul Trainer SMK 71


// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
SFIOR&=0xEF;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC0 = %d ",read_adc(0));
lcd_puts(temp);
delay_ms(1000);
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC1 = %d ",read_adc(1));
lcd_puts(temp);
delay_ms(1000);
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC2 = %d ",read_adc(2));
lcd_puts(temp);
delay_ms(1000);
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC3 = %d ",read_adc(3));
lcd_puts(temp);
delay_ms(1000);
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC4 = %d ",read_adc(4));
lcd_puts(temp);
delay_ms(1000);
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC5 = %d ",read_adc(5));
lcd_puts(temp);
delay_ms(1000);
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC6 = %d ",read_adc(6));
lcd_puts(temp);
delay_ms(1000);
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC7 = %d ",read_adc(7));
lcd_puts(temp);
delay_ms(1000);
};
}

Modul Trainer SMK 72


Program Pemilih Channel Data Analog
#include <mega8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
// Declare your global variables here
unsigned char temp[30];
int x;
void main(void)
{
// Declare your local variables here
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTB=0xFF;
DDRB=0x00;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
SFIOR&=0xEF;
// LCD module initialization
lcd_init(16);
while (1)
{
Modul Trainer SMK 73
// Place your code here
if(x==0)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC0 = %d ",read_adc(0));
lcd_puts(temp);
}
if(x==1)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC1 = %d ",read_adc(1));
lcd_puts(temp);
}
if(x==2)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC2 = %d ",read_adc(2));
lcd_puts(temp);
}
if(x==3)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC3 = %d ",read_adc(3));
lcd_puts(temp);
}
if(x==4)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC4 = %d ",read_adc(4));
lcd_puts(temp);
}
if(x==5)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC5 = %d ",read_adc(5));
lcd_puts(temp);
}
if(x==6)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC6 = %d ",read_adc(6));
lcd_puts(temp);
}
if(x==7)
{
lcd_gotoxy(0,0);
sprintf(temp,"Data ADC7 = %d ",read_adc(7));
lcd_puts(temp);
}
if(PINB.0==0) x=0;
Modul Trainer SMK 74
if(PINB.1==0) x=1;
if(PINB.2==0) x=2;
if(PINB.3==0) x=3;
if(PINB.4==0) x=4;
if(PINB.5==0) x=5;
if(PINB.6==0) x=6;
if(PINB.7==0) x=7;
};
}

RTC

RTC yang dimaksud disini adalah real time clock (bukan real time
computing), biasanya berupa IC yg mempunyai clock sumber sendiri dan internal
batery untuk menyimpan data waktu dan tanggal. Sehingga jika system komputer /
microcontroller mati waktu dan tanggal didalam memori RTC tetap uptodate.
Salah satu RTC yang sudah populer dan mudah penggunaanya adalah DS1307,
apalagi pada Codevision sudah tersedia fungsi-fungsi untuk mengambil data waktu
dan tanggal untuk RTCDS1307 ini.

Fitur-fitur DS1307:
 Real-time clock (RTC) menghitung detik, menit, jam,tanggal,bulan dan hari
dan tahun valid sampai tahun 2100
 Ram 56-byte, nonvolatile untuk menyimpan data.
 2 jalur serial interface (I2C).
 output gelombang kotak yg diprogram.
 Automatic power-fail detect and switch
 Konsumsi arus hanya 500nA pada batery internal.
 mode dg oscillator running.
 temperature range: -40°C sampai +85°C
Untuk membaca data tangal dan waktu yg tersimpan di memori RTC Ds1307 dapat
dilakukan melalui komunikasi serial I2C spt tampak pada gambar berikut:

Modul Trainer SMK 75


Cara pembacaan
DS1307 beropersai sebagai slave pada bus I2C. Cara Access pertama
mengirim sinyal START diikuti device address dan alamat sebuah register yg akan
dibaca. Beberapa register dapat dibaca sampai STOP condition dikirim.

Data waktu dan tanggal tersimpan dalam memori masing masing 1 byte , mulai dari
alamat 00H sampai 07H. Sisanya (08H ~ 3FHalamat RAM yg bisa digunakan).

Pemrograman RTC DS1307 dengan Codevision.


Codevision sudah menyediakan fungsi-fungsi khusus untuk mengakses data
DS1307 jadi kita tinggal menggunakanya. Apalagi dengan fasilitas codewizard
pemrograman RTC menjadi mudah.

Modul Trainer SMK 76


setelah kita klik ok maka akan tersedia template Code program sbb:
#include <mega16.h>
// I2C Bus functions
#asm
.equ __i2c_port=0×18 ;PORTB
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
#include <lcd.h>
char tampungLCD[16];
void main(void)
{ unsigned char hour,minute,second;
// I2C Bus initialization
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);
// LCD module initialization
lcd_init(16);
/* initialize the DS1307 RTC */

Modul Trainer SMK 77


rtc_init(0,0,0); //tambahankan baris ini
//this function sets the current time of the RTC.

rtc_set_time(6,0,0); // jam 6:00:00


while (1) {
/* read time from the DS1307 RTC */
rtc_get_time(&hour,&minute,&second);
//tampilkan di LCD 2×16
lcd_gotoxy(0,0);
sprintf(tampungLCD,”Time: %d:%d:%d “,hour,minute,second);
lcd_puts(tampungLCD);
}
}

Modul Trainer SMK 78


PNEUMATIK

Pneumatik adalah teori atau pengetahuan perihal udara yang bergerak, situasi-
keadaan keseimbangan udara serta kriteria keseimbangan. orang pertama yang
menggunakan alat pneumatik yaitu orang yunani bernama Ktesibio. Perkataan
pneumatik berasal bahasa Yunani “ pneuma “ yang berarti “napas” atau “udara”. Jadi
pneumatik berarti terisi udara atau digerakkan oleh udara mampat. Pneumatik
merupakan cabang teori aliran atau mekanika fluida dan tidak hanya meliputi
penelitian aliran-aliran udara melalui suatu sistem saluran, yang terdiri atas pipa-pipa,
selang-selang, gawai dan sebagainya, tetapi juga aksi dan penggunaan udara mampat.

Gambar Komponen Pneumatik

Beberapa bidang aplikasi di industri yang menggunakan media pneumatik


dalam hal penangan material adalah sebagai berikut :

a. Pencekaman benda kerja


b. Penggeseran benda kerja
c. Pengaturan posisi benda kerja
d. Pengaturan arah benda kerja

Modul Trainer SMK 79


Penerapan pneumatik secara umum :
a. Pengemasan (packaging)
b. Pemakanan (feeding)
c. Pengukuran (metering)
d. Pengaturan buka dan tutup (door or chute control)
e. Pemindahan material (transfer of materials)
f. Pemutaran dan pembalikan benda kerja (turning and inverting of parts)
g. Pemilahan bahan (sorting of parts)
h. Penyusunan benda kerja (stacking of components)
i. Pencetakan benda kerja (stamping and embosing of components)

Susunan sistem pneumatik adalah sebagai berikut :


a. Catu daya (energi supply)
b. Elemen masukan (sensors)
c. Elemen pengolah (processors)
d. Elemen kerja (actuators)

1.3 Alasan Pemakaian Pneumatik :


Persaingan antara peralatan pneumatik dengan peralatan mekanik, hidrolik atau
elektrik makin menjadi besar. Dalam penggunaannya sistem pneumatik diutamakan
karena beberapa hal yaitu :

a. Paling banyak dipertimbangkan untuk beberapa mekanisasi,


b. Dapat bertahan lebih baik terhadap keadaan-keadaan tertentu

Sering kali suatu proses tertentu dengan cara pneumatik, berjalan lebih rapi (efisien)
dibandingkan dengan cara lainnya. Contoh :
1. Palu-palu bor dan keling pneumatik adalah jauh lebih baik dibandingkan dengan
perkakas-perkakas elektrik serupa karena lebih ringan, lebih ada kepastian kerja
dan lebih sederhana dalam pelayanan.
2. Pesawat-pesawat pneumatik telah mengambil suatu kedudukan monopoli yang
penting pada :
a) rem-rem udara bertekanan untuk mobil angkutan dan gerbong-gerbong
kereta api, alat-alat angkat dan alat-alat angkut.

Modul Trainer SMK 80


b) pistol-pistol ( alat cat semprot, mesin-mesin peniup kaca, berbagai jenis
penyejukan udara, kepala-kepala asah kecepatan tinggi ).

2.3 Aktuator

Aktuator adalah bagian keluaran untuk mengubah energi suplai menjadi energi
kerja yang dimanfaatkan. Sinyal keluaran dikontrol oleh sistem kontrol dan aktuator
bertanggung jawab pada sinyal kontrol melalui elemen kontrol terakhir.

Aktuator pneumatik dapat digolongkan menjadi 2 kelompok : gerak lurus dan putar. :

1. Gerakan lurus (gerakan linear) :

* Silinder kerja tunggal.

* Silinder kerja ganda.

2. Gerakan putar :

* Motor udara

* Aktuator yang berputar (ayun)

Simbol-simbol aktuator linear sebagai berikut :

Simbol aktuator gerakan putar :

Modul Trainer SMK 81


1.2. Silinder Kerja Tunggal

1.2.1 Konstruksi

Silinder kerja tunggal mempunyai seal piston tunggal yang dipasang pada sisi
suplai udara bertekanan. Pembuangan udara pada sisi batang piston silinder
dikeluarkan ke atmosfir melalui saluran pembuangan. Jika lubang pembuangan tidak
diproteksi dengan sebuah penyaring akan memungkinkan masuknya partikel halus
dari debu ke dalam silinder yang bisa merusak seal.

Apabila lubang pembuangan ini tertutup akan membatasi atau menghentikan


udara yang akan dibuang pada saat silinder gerakan keluar dan gerakan akan menjadi
tersentak-sentak atau terhenti. Seal terbuat dari bahan yang fleksibel yang ditanamkan
di dalam piston dari logam atau plastik. Selama bergerak permukaan seal bergeser
dengan permukaan silinder.

Gambar konstruksi silinder kerja tunggal sebagai berikut :

1.2.2 Prinsip Kerja

Dengan memberikan udara bertekanan pada satu sisi permukaan piston, sisi yang lain
terbuka ke atmosfir. Silinder hanya bisa memberikan gaya kerja ke satu arah .
Gerakan piston kembali masuk diberikan oleh gaya pegas yang ada didalam silinder
direncanakan hanya untuk mengembalikan silinder pada posisi awal dengan alasan
agar kecepatan kembali tinggi pada kondisi tanpa beban.

Pada silinder kerja tunggal dengan pegas, langkah silinder dibatasi oleh panjangnya
pegas . Oleh karena itu silinder kerja tunggal dibuat maksimum langkahnya sampai
sekitar 80 mm.

1.2.3 Kegunaan

Menurut konstruksinya silinder kerja tunggal dapat melaksanakan berbagai fungsi


gerakan , seperti : menjepit benda kerja, pemotongan, pengeluaran, pengepresan
pemberian dan pengangkatan.

Modul Trainer SMK 82


1.2.4. Macam-Macam Silinder Kerja Tunggal

Ada bermacam-macam perencanaan silinder kerja tunggal termasuk : silinder


membran (diafragma) dan silinder membran dengan rol

1.3 Silinder Ganda

1.3.1 Konstruksi

Konstruksi silinder kerja ganda adalah sama dengan silinder kerja tunggal, tetapi
tidak mempunyai pegas pengembali. Silinder kerja ganda mempunyai dua saluran
(saluran masukan dan saluran pembuangan). Silinder terdiri dari tabung silinder dan
penutupnya, piston dengan seal, batang piston, bantalan, ring pengikis dan bagian
penyambungan. Konstruksinya dapat dilihat pada gambar berikut ini :

1.3.2 Prinsip Kerja

Dengan memberikan udara bertekanan pada satu sisi permukaan piston (arah maju) ,
sedangkan sisi yang lain (arah mundur) terbuka ke atmosfir, maka gaya diberikan
pada sisi permukaan piston tersebut sehingga batang piston akan terdorong keluar
sampai mencapai posisi maksimum dan berhenti.

Gerakan silinder kembali masuk, diberikan oleh gaya pada sisi permukaan batang
piston (arah mundur) dan sisi permukaan piston (arah maju) udaranya terbuka ke
atmosfir. Keuntungan silinder kerja ganda dapat dibebani pada kedua arah gerakan
batang pistonnya. Ini memungkinkan pemasangannya lebih fleksibel. Gaya yang
diberikan pada batang piston gerakan keluar lebih besar daripada gerakan masuk.
Karena efektif permukaan piston dikurangi pada sisi batang piston oleh luas
permukaan batang piston

Silinder aktif adalah dibawah kontrol suplai udara pada kedua arah gerakannya. Pada
prinsipnya panjang langkah silinder dibatasi, walaupun faktor lengkungan dan

Modul Trainer SMK 83


bengkokan yang diterima batang piston harus diperbolehkan. Seperti silinder kerja
tunggal, pada silinder kerja ganda piston dipasang dengan seal jenis cincin O atau
membran.

1.3.4 Kegunaan

Silinder pneumatik telah dikembangkan pada arah berikut : Kebutuhan penyensoran


tanpa sentuhan (menggunakan magnit pada piston untuk mengaktifkan katup batas
/limit switch dengan magnit ) Penghentian beban berat pada unit penjepitan dan
penahan luar tiba-tiba. Silinder rodless digunakan dimana tempat terbatas. Alternatif
pembuatan material seperti plastik Mantel pelindung terhadap pengaruh lingkungan
yang merusak, misalnya sifat tahan asam Penambah kemampuan pembawa beban.
Aplikasi robot dengan gambaran khusus seperti batang piston tanpa putaran, batang
piston berlubang untuk mulut pengisap.

Macam-macam Silinder Kerja Ganda

Katup Pneumatik

2.1 Katup Kontrol Arah ( KKA )

Katup kontrol arah adalah bagian yang mempengaruhi jalannya aliran udara . Aliran
udara akan lewat, terblokir atau membuang ke atmosfir tergantung dari lubang dan
jalan aliran KKA tersebut. KKA digambarkan dengan jumlah lubang dan jumlah

Modul Trainer SMK 84


kotak. Lubang-lubang menunjukkan saluran -saluran udara dan jumlah kotak
menunjukkan jumlah posisi.

2.1.1 Simbol

Cara membaca simbol katup pneumatik sebagai berikut :

Simbol-simbol katup kontrol arah sebagai berikut :

Modul Trainer SMK 85


2.1.2 Metode Pengaktifan

Metode pengaktifan KKA bergantung pada tugas yang diperlukan . Jenis pengaktifan
bervariasi, seperti secara mekanis, pneumatis, elektris dan kombinasi dari semuanya.
Simbol metode pengaktifan diuraikan dalam standar DIN 1219 berikut ini :

Modul Trainer SMK 86


Modul Trainer SMK 87

You might also like