Anda di halaman 1dari 108

BAB I

PENDAHULUAN
A. DESKRIPSI JUDUL
Modul Pemrograman Mikrokontroler AT Mega 40 Pin dengan BASCOM-AVR
merupakan modul yang memiliki ruang lingkup meliputi berbagai cara-cara
pemrograman dengan menggunakan BASCOM-AVR, Setting Fuses And Lock Bits,
Contoh Program dengan BASCOM-AVR untuk konsep Input dan Output,
Interupsi, LCD, ADC, Komunikasi Serial dan RTC.
Setelah mempelajari modul ini diharapkan peserta didik dapat mengetahui,
mengaplikasikan dan mempergunakan modul ini serta trainer mikrokontroler AT
Mega 40 pin dengan baik.
Komponenkomponen yang digunakan dan dibahas di dalam materi terkait
trainer Mikrokontroler AT Mega 40 Pin ini antara lain:
a. Light Emiting Diode (LED)
Afrie Setiawan (2010:11-12) menyatakan bahwa LED merupakan komponen
yang dapat mengeluarkan emisi cahaya. LED merupakan produk temuan lain
setelah dioda. Strukturnya sama dengan dioda, tetapi belakangan ditemukan
bahwa elektron yang menerjang sambungan p-n juga melepaskan energi panas
dan energi cahaya. Karakteristik LED sama dengan karakteristik dioda penyearah.
Bedanya jika dioda membuang energi dalam bentuk panas, sedangkan LED
membuang energi dalam bentuk cahaya.
Keuntungan menggunakan LED adalah struktur solid, ukurannya kecil, masa
pakai tahan lama dan tidak terpengaruh oleh on atau off pensaklaran, mudah
dipakai dan mudah didapat. Karena tahan lama dan tidak terpengaruh oleh on atau
off pensaklaran, maka LED banyak digunakan sebagai display atau indikator baik
itu pada audio atau mesin-mesin kontrol.
Radiasi cahaya yang dipancarkan LED tergantung dari materi dan susunan
dioda P-N dan bahan semikonduktor penyusun LED itu sendiri. Bahan
semikonduktor yang sering digunakan dalam pembuatan LED adalah:
Galium Arsenide (Ga As) meradiasikan sinar infra merah.
Galium Arsenide Phospide (Ga As P) meradiasikan warna merah dan kuning.
Galium Phospide (Ga P) meradiasikan warna merah dan kuning.

Gambar 1. Light Emiting Diode


Seperti halnya sebuah dioda, salah satu karakteristik LED adalah harga
ketergantungan antara I terhadap V. Grafik antara V-I untuk LED sama dengan
grafik V-I untuk dioda penyearah. Perbedaannya terletak pada pengertian
tegangan dan arus yang lewat. Harga arus I yang melewati LED menentukan
intensitas cahaya yang dipancarkan, atau dengan kata lain arus LED sebanding
dengan intensitas cahaya yang dihasilkan. Jika arus yang melewati LED besar,
maka intensitas cahaya yang dihasilkan juga terang. Sebaliknya jika arus yang
lewat kecil, maka nyala LED akan redup atau LED tidak akan menyala sama
sekali.
b. Transistor
Afrie Setiawan (2010:19-20) menyatakan bahwa Transistor merupakan
semikonduktor berbahan dasar Silikon atau Germanium dengan bentuk kemasan
yang sangat banyak jenisnya semisal TO- 92, TO-220, dan lain-lain. Secara
umum transistor memiliki 3 titik penyambungan, yaitu Basis (B), Kolektor (C),
dan Emittor (E). pada prinsipnya transistor merupakan 2 buah dioda yang saling
dipertemukan, yaitu dioda Basis-Emittor dan dioda Basis-Kolektor.

Gambar 2. Transistor
Kondisi tersebut menyebabkan transistor semacam ini disebut juga dengan
transistor pertemuan (Junctions). Dengan adanya 2 kemungkinan untuk
mempertemukan kedua buah dioda tersebut, maka akan terdapat 2 jenis transistor
yang dibentuk, yaitu transistor Negatif Positif Negatif ( NPN ) bila yang
dipertemukan anodanya dan transistor Positif Negatif Positif ( PNP ) bila yang
dipertemukan katodanya.

Berdasarkan jenisnya, identifikasi transistor dapat dengan mudah dilakukan


dengan melihat datasheet transistor yang bersangkutan. Sebagai contoh,
penggunaan transistor dalam perancangan alat ini menggunakan spesifikasi dasar
transistor daya dalam kondisi taraf maksimumnya.
Khusus transistor-transistor silikon yang memenuhi spesifikasi persyaratan
Transistor Unijunctions Positive ( TUP ) dan Transistor Unijunctions Negative (
TUN ), memiliki karakteristik batas maksimal IC maksimum sebesar 150 mA
dengan jangkauan tegangan kerja yang bervariasi, sedangkan transistor dengan
arus kolektor maksimum lebih dari 150 mA, dapat digolongkan dalam transistor
penguat frekuensi audio atau radio (AF/RF) dan transistor daya (Po).
c.

Relay 12 Volt DC
Relay adalah saklar elektronik yang dapat membuka atau menutup rangkaian
dengan menggunakan kontrol dari rangkaian elektronik lain. Sebuah relay
tersusun atas kumparan, pegas, saklar (terhubung pada pegas) dan 2 kontak
elektronik (normally close dan normally open).
1) Normally Close (NC) : saklar terhubung dengan kontak ini saat relay tidak
aktif atau dapat dikatakan saklar dalam kondisi terbuka.
2) Normally Open (NO) : saklar terhubung dengan kontak ini saat relay aktif
atau dapat dikatakan saklar dalam kondisi tertutup.
Berdasarkan pada prinsip dasar cara kerjanya, relay dapat bekerja karena
adanya medan magnet yang digunakan untuk menggerakkan saklar. Saat
kumparan diberikan tegangan sebesar tegangan kerja relay maka akan timbul
medan magnet pada kumparan karena adanya arus yang mengalir pada lilitan
kawat. Kumparan yang bersifat sebagai elektromagnet ini kemudian akan menarik
saklar dari kontak NC ke kontak NO. Jika tegangan pada kumparan dimatikan
maka medan magnet pada kumparan akan hilang sehingga pegas akan menarik
saklar ke kontak NC.
Relay yang digunakan pada rangkaian ini memiliki spesifikasi FKE HRS 4HS-DC12V. Jumlah pin pada relay ada 5 dan bertegangan kerja 12 VDC.
Kemampuan arus yang dapat dilewatkan kontaktor Normally Close adalah 6A
pada tegangan 250VAC, 10A pada tegangan 24VDC. Sedangkan kontaktor
Normally Open 10A pada tegangan 250VAC maupun pada tegangan 120VAC.

Gambar 3. Relay 12 Volt DC

d. Komunikasi Serial
Mikrokontroler AT Mega 40 Pin memiliki 4 buah register I/O yang
berkaitan dengan komunikasi serial memakai UART. Pada komunikasi data
secara serial, data dikirimkan melalui 3 jalur, pin RXD (PD.0), TXD (PD.1) dan
ground. Mode operasi pada komunikasi serial pada AT Mega 40 Pin adalah
sinkron dan asinkron. Komunikasi serial yang akan dibahas dalam modul
pemrograman nantinya hanya komunikasi serial Asinkron. Frame data pada
komunikasi serial AVR AT Mega 40 Pin seperti terlihat pada Gambar dibawah
ini :

Gambar 4. Frame Data Komunikasi Serial


Retna Prasetia (2004: 130) menyatakan bahwa dalam komuniskasi serial
asinkron kondisi tidak ada data (idle) sinyal berlogika high. Ketika data mulai
dikirimkan, akan diawali dengan memberikan sinyal start bit (St) yang berlogika
low disusul dengan data yang dikirim (5,6,7,8,atau 9 bit). Bit paritas (P) bersifat
pilihan, kemudian diakhiri dengan bit stop (Sp) yang dapat berjumlah 1 atau 2 bit.
Data Terminal Equipment (DTE) merupakan perangkat yang dilengkapi
Universal Asynchronous Receiver and Transmitter (UART) atau Universal
Asynchronous Synchronous Receiver and Transmitter (USART) yang dapat
mengubah data paralel ke data serial atau sebaliknya.

Gambar 5. Rangkaian Serial IC Max232


e.

Real Time Clock (RTC)


RTC dapat dijelaskan sebagai sebuah rangkaian jam digital. Kebanyakan
RTC menggunakan osilator berupa kristal. Sebuah IC RTC biasanya menyimpan
data waktu mulai dari detik, menit, jam, hari, tanggal bulan dan tahun. Untuk
koneksi dengan Mikrokontroler dapat dilihat pada Gambar 7.

Gambar 6. Hubungan RTC Terhadap Mikrokontroler


DS1307 merupakan IC yang dapat diakses dengan Mikrokontroler
menggunakan komunikasi serial I2C. Dengan adanya RTC ini maka kita dapat
menampilkan waktu yang berupa Jam, Menit, Detik serta tanggal yaitu hari, bulan
dan tahun.

Gambar 7. IC DS1307
f.

Sensor Cahaya Light Dependent Resistor (LDR)


Sensor cahaya yang digunakan pada trainer Mikrokontroler ini adalah LDR.
Light Dependent Resistor (LDR) adalah suatu komponen elektronik yang
resistansinya tergantung pada intensitas cahaya. Jika intensitas cahaya semakin
besar maka resistansi LDR semakin kecil, jika intensitas cahaya semakin kecil
maka resistansi LDR semakin besar. LDR sering juga disebut dengan sensor
cahaya.

Gambar 8. LDR
g.

Sensor Suhu (LM35)


Sensor suhu LM35 berfungsi untuk mengkonversi besaran panas yang
ditangkap menjadi besaran tegangan. Jenis sensor suhu yang digunakan dalam
sistem ini adalah IC LM35, sensor ini memiliki presisi tinggi. Sensor ini sangat
sederhana dengan hanya memiliki buah 3 kaki. Kaki pertama IC LM35 dihubung
ke sumber daya, kaki kedua sebagai output dan kaki ketiga dihubung ke ground.
Adapun karakteristik dari IC LM35 adalah sebagai berikut:
1) Dapat dikalibrasi langsung ke dalam besaran Celcius.
2) Faktor skala linier + 10mV/ C.

3)
4)
5)
6)
7)

Tingkat akurasi 0,5C. saat suhu kamar (25C).


Jangkauan suhu antara -55C sampai 150C.
Bekerja pada tegangan 4 volt hingga 30 volt.
Arus kerja kurang dari 60A.
Impedansi keluaran rendah 0,1 untuk beban 1 mA.
Sensor LM35 bekerja dengan mengubah besaran suhu menjadi besaran
tegangan. Tegangan ideal yang keluar dari LM35 mempunyai perbandingan
100C setara dengan 1 volt. Sensor ini mempunyai pemanasan diri (self heating)
kurang dari 0,1C, dapat dioperasikan dengan menggunakan power supply
tunggal dan dapat dihubungkan antar muka (interface) rangkaian kontrol yang
sangat mudah.

Gambar 9. Sensor suhu LM 35


h. Liquid Crystal Display (LCD) 2x16
LCD yang mempunyai kemampuan untuk menampilkan karakterkarakter
penulisan pada dasarnya memiliki dua bagian yaitu, bagian pertama adalah panel
display dari LCD yang merupakan kumpulan dari banyak titik atau dot .
Kedua adalah prosesor dari Mikrokontroler yang berfungsi mengatur penyalaan
titik atau dot tersebut, fungsi yang lain adalah untuk melakukan komunikasi
antara tampilan LCD dengan perangkat Mikrokontroler eksternal yang juga
membutuhkan penampil berupa LCD.

Gambar 10. Rangkaian Penampil LCD 2x16

i.

Downloader USBAsp
Downloader USBAsp merupakan in-circuit programmer untuk
Mikrokontroler keluarga AVR maupun MCS. Rangkaian USBasp pada umumnya
menggunakan AT Mega48 atau AT Mega8 yang ditanam sebuah firmware khusus
di dalamnya dan beberapa komponen pasif lainnya. Programmer atau downloader
ini menggunakan sebuah penggerak USB hanya firmware (firmwareonly USB
driver), tidak memerlukan pengontrol USB khusus.

Gambar 11. Donwloader USBAsp


j.

Mikrokontroler
Widodo Budiharto dan Gamayel Rizal (2007:27) menyatakan bahwa
mikrokontroler adalah suatu chip yang dapat digunakan sebagai pengontrol utama
sistem elektronika, misalnya sistem pengukur suhu digital (thermometer digital),
sistem keamanan rumah (Home Remote System), sistem kendali mesin industri,
robot penjinak bom, dan lain-lain

Mikrokontroler memiliki berbagai jenis dan kemampuan masing-masing.


Keluarga mikrokontroler terdiri dari keluarga MCS, AVR serta PIC. Untuk saat
ini AVR lebih banyak digunakan karena memiliki berbagai keunggulan terutama
dalam segi fasilitas dan pemrograman serta harganya yang relatif terjangkau serta
banyaknya referensi permograman dalam bentuk buku maupun artikel di internet.
Banyak tipe mikrokontroler AVR yang dapat digunakan untuk membuat Trainer
Mikrokontroler diantaranya AT Mega 8 (28 pin), AT Mega 8535 (40 pin), AT
Mega 8515 (40 pin), AT Mega 16 (40 pin) , AT Mega 32 (28 pin), AT Mega 64
(64 pin) dan AT Mega 128 (64 pin). Setiap jenis AVR memiliki fasilitas yang
berbeda-beda. Perancangan trainer Mikrokontroler ini digunakan mikrokontroler
AT Mega 40 Pin (AT Mega 8535, AT Mega 8515, AT Mega 16, AT Mega 32).
Namun untuk AT Mega 8515 memiliki konfigurasi yang berbeda dengan AT
Mega 40 Pin lainnya, sehingga untuk AT Mega 8515 tidak dibahas pada Modul
Pemrograman yang dibuat, namun jika tetap akan dipergunakan maka diperlukan
sebuah rangkaian adapter yang dapat dibeli secara online di alamat website
www.digi-ware.com . Pemilihan mikrokontroler ini berdasarkan fasilitas yang
dimiliki dan kapasitas memori yang cukup untuk menampung contoh-contoh
program yang disediakan pada Modul Pemrograman Trainer Mikrokontroler
terserbut.

Gambar 12 Menunjukkan bentuk fisik mikrokontroler AT Mega 40 Pin dalam


kemasan Dual In Line (DIL). Varian lain dari mikrokontroler AT Mega 40 Pin
ada yang dikeluarkan oleh Pabrik dalam kemasan Surface Mount Device ( SMD).
Namun kemasan Surface Mount Device (SMD) ini tidak dipilih karena bentuknya
yang terlalu kecil dan sulit dipergunakan dalam proses pembelajaran. Selain itu
ukuran mikrokontroler AT Mega 40 Pin ada yang dikeluarkan oleh Pabrik dalam
kemasan Surface Mount Device (SMD) sangat kecil sehingga akan menyulitkan
dalam proses penyolderan serta rawan terhadap kerusakan oleh proses
penyolderan yang kurang profesional. Sebagai catatan penting bahwa dari tata
cara pemrograman serta fungsi baik AT Mega 40 Pin dalam kemasan Dual In
Line (DIL) maupun kemasan Surface Mount Device (SMD) adalah sama persis.

(a) Bentuk Fisik

(b) Konfigurasi Pin

Gambar 12. Mikrokontroler 40 pin (a) bentuk fisik dan


(b) Konfigurasi Pin
B. PETUNJUK PENGGUNAAN MODUL
Modul pemrograman ini pada dasarnya menerangkan tentang cara memulai
penggunaan software bascom AVR untuk menulis,menyimpan,serta mengcompile source code program yang dibuat. Modul ini juga membahas tentang
bagaimana menggunakan software untuk menjalankan simulasi source code
program yang telah dibuat. Selain kedua hal tersebut modul ini juga menjelaskan
tentang cara pengaturan fuse serta clock bit untuk penyesuaian pemilihan
penggunaan crystal yang dipergunakan oleh rangkaian sistem mikrokontroler.
Tata cara men-download program dari komputer ke trainer mikrokontroler AT
Mega 40 pin melalui bantuan software khazama downloader dan rangkaian
USBAsp Downloader juga dijelaskan dalam modul pemrograman mikrokontroler
ini.
Pembahasan contoh-contoh program pada modul ini lebih kesemuanya
menggunakan mikrokontroler AT Mega 16 sebagai dasar acuan. Trainer
mikokontroler ini mendukung penuh dengan AT Mega 40 pin lainnya (AT Mega

8535 , AT Mega 32, AT Mega 64A). Apabila mikrokontroler yang dipergunakan


di dalam trainer mikrokontroler diganti dengan tipe lain, semisal AT Mega 8535,
maka penyesuaian source code cukup dilakukan dengan mengganti bagian
$regfile = "m16def.dat" dengan $regfile = "m8535.dat", Untuk tipe lain semisal
AT Mega 32, maka cukup mengganti $regfile = "m16def.dat" dengan $regfile =
"m32def.dat".
C. TUJUAN AKHIR
Setelah menyelesaikan modul ini, diharapkan peserta didik dapat
memprogram input dan output, interupsi, pengaksesan LCD, pengaksesan ADC,
Komunikasi Serial Asinkron antara Mikrokontroler dengan Komputer dan RTC
serta dapat mengaplikasikannya untuk kendali.

D. STANDAR KOMPETENSI
Tabel 1. Standard Kompetensi
Materi Pokok Pembelajaran
Sub Kompetensi

Kriteria Unjuk Kerja

4.1

.4.1

Menjelaskan Sistem
Mikrokontroler

Modul pemrograman
mikrokontroler
AT Mega 40 pin

4.2

4.2

Menjelaskan
perkembangan
teknologi
mikrokontroler

Modul pemrograman
mikrokontroler
AT Mega 40 pin

4.3

4.3

Membuat program
sistem
mikrokontroler
sederhana

Modul dan trainer


pemrograman
mikrokontroler AT
Mega 40 pin

Lingkup Belajar
3

Sikap

Pengetahuan

Keterampilan

Pengenalan
mikrokontroler

Mendengarkan
dan
memperhatikan

Menjelaskan
sistem
mikrokontroler

Perkembangan
teknologi
mikrokontroler

Mendengarkan
dan
memperhatikan

Menjelaskan
perkembangan
teknologi
mikrokontroler

Membuat program
sederhana
mikrokontroler

Melaksanakan
K3 dalam
penggunaan alat

10

Membuat program Menggunakan


sederhana
media trainer
mikrokontroler
mikrokontroler
AT Mega 40 pin

E. CEK PENGUASAAN STANDAR KOMPETENSI


Isilah cek list ( ) pada Tabel 2 di bawah ini dengan benar, jujur dan dapat
dipertanggungjawabkan untuk mengetahui kemampuan awal yang telah anda
miliki.
Tabel 2. Check list penguasaan standard kompetensi

Kompetensi
Dasar

Pernyataan

Saya dapat
melakukan
pekerjaan ini
dengan
kompeten
Ya

Bila
jawaban
"Ya"
Kerjakan

Tidak

Menjelaskan sistem Mengetahui tentang sistem


mikrokontroler
mikrokontroler

Latihan
Soal 1

Menjelaskan
perkembangan
teknologi
mikrokontroler

Mengetahui tentang
perkembangan teknologi
mikrokontroler

Latihan
Soal 1

Membuat program
sistem
mikrokontroler
sederhana

Dapat membuat program


system
mikrokontroler
sederhana

Latihan
program
dan evaluasi

Apabila anda menjawab TIDAK pada salah satu pernyataan di atas, maka
pelajarilah modul ini.

11

BAB II
PEMBELAJARAN
A. Kegiatan Belajar 1
1. Kegiatan Belajar 1 : Mengenal Mikrokontroler, Delphi dan Bascom
AVR
Tujuan Pembelajaran 1 :
Setelah mendapatkan materi diharapkan perseta didik dapat :
a) Mengenal tentang mikrokontroler.
b) Memprogram mikrokontroler AT Mega 40 pin dengan bahasa BASIC
c) Menjalankan program secara simulasi dan mendownloadkan program
kedalam IC AT Mega 40 pin dengan software Khazama AVR Programmer.
d) Men-setting Fuses and Lock Bits
2. Uraian Materi 1
a. Apakah mikrokontroler itu?
Seperti halnya sebuah komputer, mikrokontroler merupakan sebuah chip
dengan harga yang murah dan dapat diprogram untuk bekerja sesuai dengan yang
diharapkan programmer. Contohnya tulisan berjalan atau yang sering disebut
"running text" yang sering kita jumpai di toko-toko, penggerak otamatis pada
sistem robotika dan sistem industri.
b. AVR Mikrokontroler
Ada 2 jenis mikrokontroler yang berkembang saat ini, yaitu tipe CISC dan
RISC. Hal ini didasarkan pada arsitektur processor dan set intruksinya. Sebagai
contoh MCS51 (AT89S51/52) merupakan tipe CISC yang memerlukan 12 siklus
clock untuk melaksanakan satu siklus instruksi. Tipe AVR (Alf and Vegard's Risc
processor) yang merupakan jenis RISC, hanya perlu 1 siklus saja, sehingga jelas
lebih cepat waktu eksekusinya.
Mikrokontroler AVR dikelompokkan menjadi 4 group : keluarga AT90SXX,
keluarga ATmega, keluarga ATtiny dan keluarga AT89RFXX. Tidak ada
perbedaan mendasar pada keempatnya, baik arsitektur maupun instruksinya.
Kapasitas memori, peripheral, dan fungsi adalah yang menjadikan masingmasing keluarga AVR memiliki keunikan sendiri.
c. Fitur Dasar Mikrokontroler AT Mega 40 Pin
1. AT Mega 8535
Fitur-fitur AT Mega 8535 sebagai berikut :
Frekuensi clock maksimum 16 MHz
Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD
Analog to Digital Converter 10 bit sebanyak 8 input, 4 channel PWM
Timer/Counter sebanyak 3 buah
CPU 8 bit yang terdiri dari 32 register
12

Watchdog Timer dengan osilator internal


SRAM sebesar 2K Byte
Memori Flash sebesar 8 K Byte dengan kemampuan read while write.
Interrupt internal maupun eksternal
Port komunikasi SPI
EEPROM sebesar 512 byte yang dapat diprogram saat operasi
Komunikasi serial standar USART dengan kecepatan maksimal 2,5
Mbps.

2.

AT Mega 16
Fitur-fitur AT Mega16 sebagai berikiut :
Frekuensi clock maksimum 16 MHz
Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD
Analog to Digital Converter 10 bit sebanyak 8 input, 4 channel PWM
Timer/Counter sebanyak 3 buah
CPU 8 bit yang terdiri dari 32 register
Watchdog Timer dengan osilator internal
SRAM sebesar 2K Byte
Memori Flash sebesar 16 K Byte dengan kemampuan read while write.
Interrupt internal maupun eksternal
Port komunikasi SPI
EEPROM sebesar 512 byte yang dapat diprogram saat operasi
Komunikasi serial standar USART dengan kecepatan maksimal 2,5
Mbps.

3.

AT Mega 32
Fitur-fitur AT Mega 32 sebagai berikut :
Frekuensi clock maksimum 16 MHz
Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD
Analog to Digital Converter 10 bit sebanyak 8 input, 4 channel PWM
Timer/Counter sebanyak 3 buah
CPU 8 bit yang terdiri dari 32 register
Watchdog Timer dengan osilator internal
SRAM sebesar 2K Byte
Memori Flash sebesar 32 K Byte dengan kemampuan read while write.
Interrupt internal maupun eksternal
Port komunikasi SPI
EEPROM sebesar 512 byte yang dapat diprogram saat operasi
Komunikasi serial standar USART dengan kecepatan maksimal 2,5
Mbps.

13

Fitur-fitur diatas merupakan gambaran kecil dari AT Mega 40 pin yang


dipergunakan untuk trainer mikrokontroler, jika ingin lebih jelas untuk fitur-fitur
AT Mega 40 pin,
silakan kunjungi situs resmi dari atmel di
(http://www.atmel.com).
d. Konfigurasi pin AT Mega 40 pin.

AT Mega
40 pin

Gambar 13. Konfigurasi pin AT Mega 40 pin

14

Tabel 3. Deskripsi Pin AT Mega 40 Pin.


No. Pin

Nama

Fungsi

1
2
3

PB0(XCK/T0)
PB1 (T1)
PB2 (INT2/AIN0)

Port B.0/Counter 0/clock eksternal untuk USART (XCK)


Port B.1/Counter 1
Port B.2/Input (+) Analog Komparator (AIN0) dan
interupsi eksternal 2 (INT2)

PB3 (0C0/AIN1)

Port B.3/Input (-)Analog Komparator (AIN1) dan output


PWM 0

5
6
7
8
9
10
11
12-13
14
15
16
17
18
19
20
21
22
23
24-27
28
29
30
31
32
33-40

PB4 (SS)
PB5 (MOSI)
PB6 (MISO)
PB7 (SCK)
RESET
VCC
GND
XTAL 1-XTAL 2
PD0 (RXD)
PD1 (TXD)
PD2 (INT0)
PD3 (INT1)
PD4 (0C1B)
PD5 (0C1A)
PD6 (ICP1)
PD7 (0C2)
PC0 (SCL)
PC1 (SDA)
PC2-PC5
PC6 (T0SC1)
PC7 (T0SC2)
AVCC
GND
AREFF
PA0(ADC0)PA7(ADC7)

Port B.4/ SPI Slave Select Input (SS)


Port B.5/ SPI bus Master Out Slave Input
Port B.6/ SPI bus Master Input Slave Output
Port B.7/ sinyal clock serial SPI
Me-reset mikrokontroler
Catu daya (+)
Sinyal Ground terhadap Catu daya
Sinyal input Clock eksternal (kristal)
Port D.0/ Penerima data serial
Port D.l/ Pengirim data serial
Port D.2/ Interupsi eksternal 0
Port D.3/ interupsi eksternal 1
Port D.4/ Pembanding timer-counter 1
Port D.5/ Output PWM 1A
Port D.6/ Timer-counter 1 input
Port D.7/ Output PWM 2
Port C.0/ Serial bus clock line
Port C.1/ Serial bus data input-output
Port C.2 - C.5
Port C.6/ Timer osilator 1
Port C.7/ Timer osilator 2
Tegangan ADC
Sinyal ground ADC
Tegangan referensi ADC
Port A.0 - A.7 dan input untuk ADC (8 channel : ADC0 ADC 7)

15

e.

Pengenalan Borland Delphi 7


Borland Delphi sering disebut juga dengan Delphi. Delphi adalah sebuah perangkat

lunak (software) yang digunakan untuk membuat aplikasi berbasis antarmuka grafis di
lingkungan sistem operasi Microsoft Windows. Delphi dibuat oleh perusahaan Borland
Software Corporation. Bahasa pemograman yang digunakan Delphi adalah bahasa Pascal
(Handayani S.Winahya, 2011).

1.

IDE Delphi 7

Integrated Development Environment (IDE) adalah area kerja yang dipergunakan


untuk membuat aplikasi mulai dari mendesain antarmuka atau tampilan, menulis source
code program (coding), menjalankan program (running), men-debug, mengkompilasi
(compile), dan menyebarluaskan aplikasi yang dibuat (deploy). Tampilan IDE Delphi
dapat dilihat pada gambar 14.

Gambar 14. IDE Delphi 7


2.

Menu Bar dan Tool Bar


Menu bar merupakan tempat menggulung (pull-down) menu menu perintah.

Sebuah menu terdiri dari beberapa daftar perintah (menu command). Bagian sebelah kiri
dari kiri masing masing perintah terdapat sebuah ikon yang menggambarkan fungsinya.
Tool Bar adalah sekumpulan tombol yang dapat digunakan untuk melakukan suatu
perintah. Fungsi Tool Bar sama dengan Menu Bar, namun keunggulannya adalah cepat
diakses untuk menjalankan perintah tertentu.

Gambar 15. Menu bar serta Tool Bar Delphi

16

3.

Component Palette

Component Palette tempat kumpulan komponen Delphi Komponen Delphi dapat


dibagi menjadi dua jenis, yaitu komponen visual dan komponen non visual. Komponen
visual adalah komponen yang terlihat pada saat proses mendesain aplikasi maupun
setelah aplikasi dijalankan. Sebagai contoh komponen Button dari Component Pallete
Standard. Sedangkan komponen non visual adalah komponen yang hanya terlihat pada
saat proses mendesain aplikasi, namun tidak dapat terlihat pada saat aplikasi dijalankan.
Sebagai contoh komponen Timer dari Component Pallete System

Gambar 16. Component Pallete Delphi 7


4.

Form Designer

Form Designer , lebih umum disebut dengan Form adalah tempat meletakkan
komponen-komponen yang diambil dari Component Palette saat men-desain antarmuka
atau tampilan aplikasi. Secara umum ketika anda memulai menjalankan Delphi maka
akan tampil form secara otomatis seperti gambar 17.

Gambar 17. Form Designer


5.

Code Editor

Code Editor adalah tempat untuk menuliskan Source code aplikasi yang akan
dibuat. Secara default Code Editor membangkitkan beberapa baris yang dibuat Delphi
secara otomatis.

17

Gambar 18. Code Editor


6.

Object Inspector

Fungsi atau kegunaan Object Inspector adalah untuk mengubah nilai properti
komponen terpilih yang di dalam Form. Ada dua bagian utama pada Object Inspector,
yaitu properties dan event. Pada setiap bagian tersebut terdapat dua buah kolom. Kolom
di sebelah kiri pada tab properties merupakan nama nama properti dan kolom di
sebelah kanan adalah nilai nilai yang diisikan pada properties. Sedangkan pada tab
event, Kolom di sebelah kiri merupakan nama nama event dan kolom di sebelah kanan
adalah nilai nilai yang diisikan event, umumnya event terkait dengan kondisi dimana
source code harus dijalankan, semisal event Form Create berarti source code dijalankan
ketika form dibuat.

(b)
(a)
Gambar 19. Object Inspector : (a) Tab Properties dan (b) Tab Events

18

7.

Object TreeView

Object TreeView berfungsi untuk menampilkan daftar komponen yang digunakan


pada saat membuat aplikasi. Komponen komponen ditampilkan dengan struktur pohon.

Gambar 20. Object Tree View


8.

Komponen Delphi

Tabel 4 menunjukkan beberapa komponen yang sering digunakan saat pembuatan


aplikasi dari Component Pallete Standard:

Tabel 4. Beberapa komponen dari Component Pallete Standard


Component Pallete Standard
Ikon

Nama
Frames
Label
Edit

Memo
Button
Listbox
Scrollbar
Radiogroup
9.

Keterangan
Membuka sebuah dialog box yang menampilkan
daftar frames yang disertakan pada proyek.
Menampilkan teks yang tidak dapat diubah oleh
user
Menampilkan sebaris teks yang dapat diisi oleh
user
Menampilkan sebuah area pengeditan dimana
user dapat memasukkan atau memodifikasi
beberapa baris teks didalamnya
Untuk membuat tombol tekan yang akan diisi
dengan suatu aksi tertentu
Menampilkan daftar pilihan yang dapat digulung
(scroll)
Dapat digunakan untuk meluaskan area pandang
di form
Digunakan untuk membuat sekelompok radiobutton

File-file Delphi

Sebuah proyek Delphi akan terdiri dari berberapa file. Beberapa file berfungsi
untuk menyimpan source code program dan ada file lain yang menyimpan kode binari,

19

gambar dan sebagainya. Karena setiap aplikasi terdiri dari beberapa file. Sangat
disarankan agar menyimpan sebuah aplikasi pada sebuah folder agar ketika akan
dilakukan perubahan terhadap aplikasi tersebut di komputer lain, semua file yang ada
tersedia dalam satu buah folder.
Berbagai jenis file yang dibuat saat membangun aplikasi menggunakan Delphi
adalah sebagai berikut :

Tabel 5. Beberapa file dalam membangun aplikasi dengan Delphi


Ekstensi File
Keterangan
.dpr
.dfm
.pas
.dpk
.res
.cfg
.dof
.dcu
.exe
.dsk
.~*

File-file proyek
File-file form
File-file unit
File-file paket
File-file resource
File-file konfigurasi proyek
File-file pilihan proyek
File unit yang terkompilasi
File yang dapat eksekusi
Pengaturan desktop
File-file cadangan (backup)misal .~pas .~dpr

f.

Pemrograman Mikrokontroler
Proses pemograman mikrokontroler diawali dengan menulis program sumber
(source code) baik dalam bahasa assembly, C maupun basic. Source code
kemudian di compile dan akan menghasilkan kode-kode yang dapat dimengerti
oleh mikrokontroler (format*.hex).

Gambar 21. Alur Pemrograman Mikrokontroler


Gambar 21. Langkah-langkah pemrograman Mikrokontroler
g. Pengenalan Bahasa Pemograman Basic menggunakan Bascom AVR
Ada banyak cara menuliskan program ke mikrokontroler, salah satunya
bahasa basic. Alasan penggunaan bahasa ini adalah kemudahan dalam
pemahaman pemograman dan jika kita menggunakan compiler Bascom AVR
maka terasa mudah karena sudah dilengkapi dengan simulator.

20

1) Tipe Data
Tipe data berhubungan dengan variable atau konstanta yang akan
menunjukkan daya tampung atau jangkauan dari variabel atau konstanta tersebut.
Tipe data pada Bascom dapat dilihat pada Tabel 6 :
Tabel 6. Tipe data dan ukurannya (Afrie Setiawan : 2011)
Tipe Data
Ukuran (Byte)
Jangkauan
Bit
Byte
Integer
Word
Long
Single
Double
String

1/8
1
2
2
4
4
8
254

0 atau 1
0 s/d 255
-32.768 s/d 32.767
0 s/d 65535
-2147483648 s/d 2147483647
1,5 x 10-45 s/d 3,4 x 1038
5 x 10-324 s/d 1,7 x 10308

2) Variabel
Variabel digunakan untuk menyimpan data sementara. Variabel diberi nama
dan dideklarasikan terlebih dahulu sebelum digunakan. Aturan pemberian nama
variabel sebagai berikut :
a. Harus dimulai dengan menggunakan huruf
b. Tidak boleh ada nama variabel yang sama pada lingkup yang sama.
c. Maksimum 32 karakter.
d. Tidak boleh ada spasi.
e. Tidak boleh menggunakan karakter-karakter khusus yang digunakan untuk
operator.
Variable dapat dideklarasikan dengan cara :
Dim <namaVariable> As <TipeData>
Contoh :
Dim angka As Integer angka sebagai variable dengan tipe
integer
Dim bilangan As byte bilangan sebagai variable dengan tipe
byte
Jika bilangan variabel dideklarasikan dalam satu baris, maka dipisah dengan
tanda koma.
Contoh :
Dim angka As integer, bilangan As byte
3)

Konstanta
Berbeda dengan variable, sebuah konstanta akan bernilai tetap. Sebelum
digunakan, konstanta dideklarasikan terlebih dahulu dengan cara sebagai berikut :
21

a.
b.

Dim nama_konstanta As Const nilai_konstanta


Const nama_konstanta = nilai_konstanta
Contoh :
Dim pembagi As Const 23 pembagi=23
Const pembagi = 23

4)

Penulisan Bilangan
Pada Bascom-AVR, bilangan kita tuliskan dalam 3 bentuk :
a. Desimal ditulis biasa, contoh 16
b. Biner diawali dengan &B, contoh : &B10001111
c. Heksadesimal diawali dengan &H, contoh : &H8F
5)

Alias
Untuk mempermudah pemograman, biasanya nama register dalam
mikrokontroler dibuatkan nama yang identik dengan hardware yang dibuat.
Contoh :
LED_1 alias PORTC.0 nama lain dari PORTC.0 adalah LED
SW_1 alias PINC.1 nama lain dari PINC.1 adalah SW_1
6)

Array
Array atau larik merupakan sekumpulan variabel dengan nama dan tipe yang
sama, yang berbeda indeks keanggotaannya. Cara mendeklarasikan array sebagai
berikut :
Dim nama_array(jumlah-anggota) As tipe_data
Contoh :
Dim Voltage (5) As byte variable voltage dengan tipe data byte
mempunyai anggota 5.
Untuk mengakses Array dengan cara :
Voltage (1) = 25 anggota pertama dari variabel voltage diisi dengan
bilangan 25.
PORTC = voltage(1) PORTC diisi nilai anggota pertama dari variabel
voltage.

7) Operator
Bascom-AVR menyediakan beberapa operator untuk pengolahan data,
diantaranya operator aritmatik, operator relasional dan operator logika.

22

8) Operator Aritmatik
Tabel 7. Operator Aritmatik Bascom AVR(Afrie Setiawan : 2011)
Operator
Keterangan
+
-

Operasi penjumlahan
Operasi pengurangan

*
/
%

Operasi perkalian
Operasi pembagian
Operasi sisa pembagian

9) Operator Relasional
Tabel 8. Operator Relasional Bascom AVR(Afrie Setiawan : 2011)
Operator
Keterangan

Contoh

Sama dengan

A=B

<>
>

Tidak sama dengan


Lebih besar dari

A<>B
A>B

<
>=
<=

Lebih kecil dari


Lebih besar atau sama dengan
Lebih kecil atau sama dengan

A<B
A>=B
A<=B

10) Operator Logika


Tabel 9. Operator Relasional Bascom AVR(Afrie Setiawan : 2011)
Operator
Keterangan
Contoh
AND
OR
NOT
XOR

Operasi AND
Operasi OR
Operasi NOT
Operasi XOR

&B110 And &B101 hasilnya &B100


&B11001 Or &B10111 hasilnya &B11111
NOT &HFF hasilnya &H00
&B1001 Xor &B0111 hasilnya &B1110

11) Struktur Pemilihan


a) If Then
Merupakan pernyataan untuk menguji apakah kondisi bernilai benar atau salah
untuk melakukan sebuah instruksi. Syntax penulisannya sebagai berikut :

If <kondisi> Then <perintah>


If <kondisi> Then
<Perintah 1>
<Perintah 2>
.
End If
23

(1 baris perintah)
(lebih dari 1 perintah)

b) If Then Else
Untuk keadaan dimana kedua kondisi (benar maupun salah) tetap dikenai perintah.
Syntax penulisannya sebagai berikut :

If <kondisi> Then
<Perintah 1>
Else
<Perintah 2>
End If
c)

If Then Elseif
Kita gunakan ketika terdapat lebih dari satu pengujian kondisi. Syntax penulisannya

sebagai berikut :

If <kondisi 1> Then


<Perintah 1>
Elseif <kondisi 2> Then
<Perintah 2>
Elseif <kondisi 3> Then
<perintah 3>
End If
d) Select Case
Untuk menangani pengujian kondisi yang banyak, maka akan lebih sederhana
menggunakan Select Case. Cara penulisannya :

Select case <variable>


Case 1 : <Perintah 1>
Case 2 : <Perintah 2>
End Select
12) Struktur Perulangan
a) For Next
Perintah ini kita gunakan untuk melaksanakan perintah secara berulang sesuai
dengan jumlah dan tingkat perulangannya. Syntax penulisannya adalah :

For <variabel=nilai awal> To <nilai_akhir> <step penambahan>


<pernyataan>
Next
b) Do Loop
Pernyataan ini untuk melakukan perulangan selama kondisi terpenuhi. Syntax
penulisannya adalah :

Do
24

<pernyataan>
Loop
Jika perulangan yang dilakukan terbatas, sesuai kondisi yang diinginkan, maka
caranya sebagai berikut :

Do
<pernyataan>
Loop Until
c)

<Kondisi>

While Wend

Bentuk perulangan ini akan melakukan perulangan jika sebuah syarat kondisi
terpenuhi. Syntax penulisannya adalah :

While

<kondisi>
<perintah>

Wend
13) Struktur Lompatan
a) Gosub
Perintah ini akan melakukan lompatan ke label yang ditunjuk, biasanya untuk
mengerjakan sebuah rutin perintah, kemudian kembali lagi setelah rutin perintah tersebut
selesai dikerjakan. Rutin yang dibuat harus dituliskan perintah Return pada akhir
pernyataan.

b) Goto
Perintah ini untuk melakukan lompatan ke label untuk melakukan instruksi tanpa
kembali lagi, sehingga tidak perlu Return.

c)

Exit

Untuk keluar secara langsung dari perulangan Do-Loop, for-Next, While-Wend.


Syntax penulisannya sebagai berikut :

EXIT FOR (untuk perulangan For-Next)


EXIT DO (perulangan Do-Loop)
EXIT WHILE (perulangan While-Wend)
EXIT SUB (perulangan Sub - Endsub)
h. Penggunaan BASCOM-AVR
1) Membuka Aplikasi BASCOM-AVR
Pilih Start All Program MCS Electronik BASCOM-AVR, tampak
pada dibawah ini.

25

Gambar 22. IDE Bascom AVR


Buat lembar kerja baru, File New (Ctrl+N). Lembar kerja baru ini adalah
tempat unutk menuliskan kode program dengan bahasa basic. Setelah penulisan
program selesai kemudian simpan dengan cara File Save (Ctrl+S). Compile
program tersebut dengan Program Compile (F7). Jika terdapat error, maka
benahi programnya kemudian compile ulang sampai tidak ada error.
2) Menuliskan Program
Setelah menjalankan aplikasi Bascom maka langkah selanjutnya adalah
mengetikkan listing program pada worksheet Bascom sesuai dengan program
yang akan dibuat.

Gambar 23. Penulisan Program Pada BASCOM


3) Meng- Compile Program yang Dibuat
Setelah listing program pada BASCOM selesai diketik maka langkah
selanjutnya adalah mengkompile program tersebut, hal tersebut dilakukan untuk
mengecek apakah program yang dibuat tidak ada error. Cara compile program
dapat dilakukan dengan menekan tombol F7 sehingga dapat diketahui apakah
program tersebut telah benar. Untuk lebih jelasnya silahkan melihat Gambar 24.
26

Gambar 24. Proses Compile Program BASCOM


i.

Cara Mendownload Program ke IC AT Mega 40 pin


Khazama merupakan aplikasi yang dapat digunakan sebagai proses download
program ke dalam IC. Untuk menggunakan Khazama AVR Programmer kita
harus memilih IC yang kita gunakan. Cara pemilihan IC yang kita gunakan dapat
dilihat sesuai dengan Gambar di bawah ini.

Gambar 25. Pemilihan IC Yang Digunakan


Setelah kita memilih IC yang kita gunakan maka langkah selanjutnya kita
memilih file.Hex yang akan kita download ke dalam IC. Untuk memilih File.Hex
yang kita inginkan maka klik pada bagian Gambar dibawah ini kemudian carilah
file tersebut di folder yang anda simpan.

27

Gambar 26. Cara Mecari File.Hex


Apabila file. dengan ekstensi Hex yang anda cari telah ditemukan maka tekan
"Open" setelah itu anda dapat meng klik "Auto Program". Jika tidak ada pesan
kesalahan yang muncul, maka proses download ke dalam IC telah sukses
dilaksanakan.

Gambar 27. Proses Auto Program


j. Cara Mensimulasikan Program Di Proteus
1) Membuat Rangkaian Simulasi
Proses mengeksekusi program dengan BASCOM dapat dilakukan dengan dua
cara yaitu dengan menggunakan simulasi dan uji hardware secara langsung.
Gambar dibawah ini menunjukkan hasil rangkaian simulasi dengan menggunakan
Proteus.

28

Gambar 28. Rangkaian Untuk Simulasi di Proteus


2) Mendownload Program ke IC AT Mega 40 Pin di Proteus
Untuk men-download-kan program kedalam IC maka hal yang harus
dilakukan adalah double klik IC AT Mega 40 pin, sehingga akan terlihat tampilan
pada gambar 11.

Gambar 29. Tampilan Set Folder Program AT Mega 40 pin


3) Memilih program File *.HEX
Setelah terlihat jendela seperti gambar diatas maka klik pada gambar "folder'
yang telah diberikan petunjuk pada gambar diatas maka jendela akan tampil
seperti gambar dibawah ini. Pilih dan carilah program yang anda simpan di folder
dengan format File.hex, setelah itu klik "Open".
29

Gambar 30. Pilih File.Hex


4) Menjalankan Simulasi di Proteus
Jika pada proses download program secara simulasi selesai maka, langkah
selanjutnya adalah menjalankan program tersebut. Cara untuk menjalankan
program tersebut adalah mengklik tombol dibawah ini yang sudah diberikan
tanda.

Gambar 31. Tampilan Simulasi Program


k. Cara Setting Fuses And Lock Bits dengan Khazama
Proses setting Fuse Bit pada AT Mega 40 pin bertujuan untuk menyamakan
clock eksternal AT Mega 40 pin dengan menggunakan Crystal, hal tersebut
bertujuan untuk proses pengolahan program pada mikrokontroler atau sering
disebut (Machine Siclus). Setting Fuses and Lock Bits sangat perlu dilakukan jika
kita menggunakan eksternal clock. Proses setting fuses bit dapat dilakukan

30

dengan cara seperti alur gambar dibawah ini. Jalankan aplikasi Khazama AVR
Programmer!
Buka program khazama, seperti tampak pada gambar dibawah ini, Jika
mikrokontroler yang akan dikonfigurasi fuse-bitnya adalah mikrokontroler baru
dari pabrikan, maka pastikan Low SCK pada USBasp diaktifkan:

Gambar 32 Halaman muka program Khazama


Pada menu command pilih Fuse and lock Bits

Gambar 33. Perintah Fuse and lock Bits

31

Lalu akan muncul jendela seperti dibawah ini :

Gambar 34. Konfigurasi Fuse Bits jika menggunakan kristal luar


Pilih seperti pada lingkaran merah di atas. Pilihan diatas adalah H-Fuse
bernilai C9 dan L-Fuse bernilai FF dan lock bernilai 3F. Perhatikan Tabel 10
berikut :
Tabel 10. Data Low Fuse dan High Fuse Untuk Setting Fuses & Lock Bits
CRYSTAL
LOW FUSE
HIGH FUSE
1 MHz (Internal)

EI

D9

2 MHz (Internal)

E2

D9

4 MHz (Internal)

E3

D9

8 MHz (Internal)

E4

D9

1 2MHz (Eksternal)

FF

C9

Latihan Soal 1
1.
2.
3.
4.
5.
6.

Jelaskan apa yang dimaksud dengan mikrokontroler!


Jelaskan perbedaan antara mikrokontroler dengan microprocessor!
Sebutkan 2 jenis mikrokontroler yang berkembang pada saat ini!
Sebutkan pengelompokkan mikrokontroler AVR!
Sebutkan minimal 5 fitur-fitur dari AT Mega 40 pin!
Gambarkan konfigurasi pin AT Mega 40 pin beserta fungsi dari tiap
pin tersebut!
7. Jelakan alur pemrograman mikrokontroler!
32

8. Sebutkan 3 bahasa pemrograman yang anda ketahui!


9. Jelaskan langkah-langkah mensimulasikan program secara simulasi

dengan Proteus!

33

B. Kegiatan Belajar 2
1. Kegiatan Belajar 2 : Konsep Input/Output
Tujuan Pembelajaran 2 :
Setelah mendapatkan materi input/output diharapkan perseta didik dapat :
a)

Mengenal tentang konsep input/output pada mikrokontroler

b) Memprogram input/output dengan bahasa pemrograman BASIC


c)

Menjalankan program secara simulasi dan mendownloadkan program


kedalam IC AT Mega 40 pin dengan USBasp untuk konsep input/output.

2. Uraian Materi 2
a. Rangkaian LED
Rangkaian ini akan membuat kode sederhana yaitu memberikan nilai logika 1
dan 0 pada port output AT Mega 40 pin. Port I/O akan diset menjadi port output.
Port yang sama dapat dialihkan fungsinya menjadi port input dengan cara
mengatur DDR (Data Direction Register)nya dari tiap-tiap port.
Untuk penyalaan LED membutuhkan cara yaitu aktif High dan Low.
Pemasangan LED mempunyai 2 cara yaitu :
1) Common Catoda
2) Common Anoda

Gambar 35. Konfigurasi LED

34

Pada gambar diatas perlu dipahami jika common merupakan hubungan


bersama, pada common anoda LED akan aktif "menyala" jika diberikan logika
"0", sedangkan untuk common catoda LED akan aktif "menyala" jika diberikan
logika "1".
Tujuan pembelajaran siswa dapat mengerti dan memahami konsep tentang
input dan output. Sehingga siswa diharapkan dapat memprogram dengan
menggunakan BASCOM dan mensimulasikan program tersebut di Proteus serta
eksekusi ke Hardware Trainer Mikrokontroler AT Mega 40 pin.
Pada gambar rangkaian input dan output ditunjukkan bahwa delapan LED
terpasang secara common catoda (CC), sehingga untuk mengaktifkan LED
tersebut dibutuhkan logika "1". Jangan terbalik dalam pemberian logika untuk led
dikarenakan LED tidak akan dapat menyala.
Untuk mempelajari tentang rangkaian pada mikrokontroler AT Mega 40 pin
tentang konsep input dan output maka pada rangkaian input dan output di bawah
ini telah diperlihatkan rangkaiannya. Pada rangkaian dibawah ini terlihat untuk
konsep input dan output terdiri dari beberapa komponen yaitu Sistem Minimum
dan tambahan LED sebagai output dan Push Button sebagai input.

Gambar 36. Sistem Minimun dengan input dan output


b. Program 1. Menghidupkan LED
'IO LED 1.BAS
$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
Port_led = 255
End

'mendeklarasikan IC yang digunakan


'menentukan frekuensi kerja (Kristal)
'Port B digunakan sebagai output
'Instruksi port B menjadi port led
'data 255 =&B11111111 atau &HFF
'Selesai

35

c. Program 2 Menyalakan dan mematikan LED


'Menyalakan LED berkedip
$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
Do
Port_led = 255
Wait 1
Port_led = 0
Wait 1
Loop

'mendeklarasikan IC yang digunakan


'menentukan frekuensi kerja (Kristal)
'Port B digunanakan sebagai Output
'Instruksi port B menjadi Port led
'atau &B11111111
'tunggu 1 detik
'atau &B00000000
'tunggu 1 detik

d. Program 3. Menghidupkan LED Berjalan dari Tepi


'IO LED 3.bas
$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
Do
Port_led = &B00000001
Waitms 300
Port_led = &B00000010
Waitms 300
Port_led = &B00000100
Waitms 300
Port_led = &B00001000
Waitms 300
Port_led = &B00010000
Waitms 300
Port_led = &B00100000
Waitms 300
Port_led = &B01000000
Waitms 300
Port_led = &B10000000
Waitms 300
Loop

e. Program 4. Menghidupkan LED Berjalan dari Tepi (2)


'IO LED 4.BAS
$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
Dim Data_led As Byte 'Mendeklarasikan variable Data led
Data_led = 1
Do
Port_led = Data_led
Waitms 5 0
Rotate Data_led , Left , 1
Loop

36

f. Program 5. Menghidupkan 2 LED Bergeser dari Tepi


'IO LED 5.BAS
$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
Dim Data_led As Byte , X As Byte
Data_led = &B00000011
Do
For X = 1 To 6
Port_led = Data_led
Waitms 200
Rotate Data_led , Left , 1
Next X
'Menggeser putaran Data led
For X = 1 To 6
Port_led = Data_led
Waitms 200
Rotate Data_led , Right , 1
Next X
Loop

g. Program 6. Menyalakan LED dengan Menekan Tombol


'Program PUSH Membaca Tombol.BAS
$regfile = "m16def.dat"
$crystal = 12000000
Dim X As Byte
Config Portb = Output
Config Portd = Input
Tomboll Alias &B11101111
Tombol2 Alias &B11011111
Tombol3 Alias &B10111111
Tombol4 Alias &B01111111
Hasil Alias Portb
Masukan Alias Pind
Portd = 255
' menghidupkan LED berdasar penekanan push button di PORTD
Do
X = Masukan
Select Case X
Case Tomboll : Hasil = &B00001111
' pushbuton di
Case Tombol2 : Hasil = &B11110000
' pushbuton di
Case Tombol3 : Hasil = &B01010101
' pushbuton di
Case Tombol4 : Hasil = &B10101010
' pushbuton di
End Select
Loop

37

portd
portd
portd
portd

4
5
6
7

h. Program 7. Mengubah Penyalaan LED dengan PushButton


' program PUSH02.BAS
$regfile = "m16def.dat"
$crystal = 12000000
Dim X As Byte , Animasi As Byte , Status As Bit
Config Portb = Output
Config Portd = Input
Hasil Alias Portb
Masukan Alias Pind
Portd = 255
Animasi = &H01
' animasi LED berdasar penekanan push button di PORTD
Do
X = Masukan
Select Case X
Case &B11111011 : Status = 0
portd.2
Case &B11110111 : Status = 1
portd.3
End Select
If Status = 0 Then
Rotate Animasi , Left
Else
Rotate Animasi , Right
End If
Hasil = Animasi
Waitms 200
Loop

' pushbuton di
' pushbuton di

Latihan :
1. Buatlah program menyalakan LED berkedip !
2. Buatlah program menyalakan LED dengan penyalaan dari tengah ke tepi!

38

C. Kegiatan Belajar 3
1. Kegiatan Belajar 3 : Konsep Interrupt
Tujuan Pembelajaran 3 :
Setelah mendapatkan materi interrupt diharapkan perseta didik dapat :
a)

Mengenal tentang konsep interrupt pada mikrokontroler

b) Memprogram interrupt dengan bahasa pemrograman BASIC


c)

Menjalankan program secara simulasi dan men-download-kan program

kedalam IC AT Mega 40 pin dengan USBasp untuk konsep interrupt.


2.

Uraian Materi 3

a.

Interrupt Eksternal
Interupsi merupakan sebuah kondisi dimana CPU berhenti dari program yang

sedang dijalankan untuk melayani permintaan suatu rutin yang terjadi.


Analoginya seperti ini, ketika anda sedang asik belajar, tiba- tiba telepon anda
berbunyi, otomatis anda akan menghentikan belajar anda sejenak untuk menerima
telepon terlebih dahulu. Telepon menginterupsi belajar anda. Untuk AT Mega 40
pin ini, memiliki sumber interupsi sebanyak 21, tiga diantaranya merupakan
interupsi eksternal.
Interupsi eksternal 0, berada pada pin 16 (PD2). Interupsi eksternal 1 berada pada
pin 17 (PD3) serta interupsi eksternal 2 pada pin 3 (PB2). Interupsi eksternal 0
dan 1 dapat dipicu oleh 4 kondisi sinyal, yaitu / low level, falling edge, rising
edge, dan setiap perubahan logika (any logical change). Interupsi eksternal 0 dan
1 dipicu oleh 2 kondisi sinyal : perubahan logika dari low > high dan dari high
> low.
b. Pemrograman Interupsi Eksternal
Pengaktifan interupsi eksternal dilakukan dengan cara mensetting : Config
INTx = Low Level/Falling/Rising/Change
Kemudian untuk menentukan program yang akan dikerjakan ketika terjadi
interupsi, maka perlu didefinisikan atau dibuat label dengan cara
On interrupt label
Sistem interupsi pada mikrokontroler diaktifkan dengan cara
Enable Interrupts Untuk mengaktifkan tipe interupsinya :

39

Enable Int0/Int1 Sedangkan rutin pengerjaan interupsi eksternal


Label:
Return

Untuk mempelajari tentang rangkaian pada mikrokontroler AT Mega 40 pin


tentang konsep Interrupt, maka pada gambar rangkaian interupsi telah
diperlihatkan rangkaiannya. Pada rangkaian tersebut terlihat untuk konsep
Interrupt terdiri dari beberapa komponen yaitu Sistem Minimum dan tambahan
LED sebagai output serta Push Button sebagai input Interrupt. Perbedaan dengan
input/output adalah Interrupt memiliki keunggulan apabila tombol Interrupt 0/1
ditekan dalam waktu lama maka pembacaan input hanya sekali.

Gambar 37. Sistem Minimum dengan Output dan Interrupt

40

c.

Program 1. Interupsi Eksternal 0 dan 1


$regfile = "m16def.dat"
$crystal = 12000000
On Int0 Int_ext0 'Int0 aktif maka program lompat ke label Int_ext0
On Int1 Int_ext1 'Inti aktif maka program lompat ke label Int_ext1
Port_led Alias Portb
Config Int0 = Falling
Config Int1 = Falling
Config Portd = Input
Config Portb = Output
Portd = 255
Enable Int0
'mengaktifkan Int0
Enable Int1
'mengaktifkan Int1
Enable Interrupts 'mengaktifkan interupsi
Do
Port_led = &B11111100
Waitms 500
Port_led = &B11110011
Waitms 500
Port_led = &B11001111
Waitms 500
Port_led = &B00111111
Waitms 500
Loop
Int_ext0:
Port_led = &B10101010 Bitwait Pind.2 , Set
Return
Int_ext1:
Port_led = &B01010101 Bitwait Pind.3 , Set
Return

41

d. Program 2. Interupsi Eksternal 0 dan 1


' program INT_02.BAS
$crystal = 11059200
$regfile = "m16def.dat"
Config Portb = Output
Config Pind.2 = Input
Config Pind.3 = Input
On Int0 Int0_handler
On Int1 Int1_handler
Config Int0 = Falling
Config Int1 = Falling
Enable Int0
Enable Int1
Enable Interrupts
interupsi
Portd = 255
Portb = &B11111111
Dim Pattern As Byte
Dim Direction As Bit
' inisialisasi veriabel
Pattern = 254
&B11111110
Direction = 0
Do
If Direction = 1 Then
Rotate Pattern , Left
Else
Rotate Pattern , Right
End If
Portb = Pattern
mati
Waitms 100
Portb = 255
menyala
Waitms 50
Loop
Int0_handler:
Direction = 1
Return
Int1_handler:
Direction = 0
Return

'LEDs on portB
'Interrupt 0
'Interrupt 1

' aktivasi INT0


' aktivasi INT1
' aktivasi

'turns ON LEDs

'pola

' hanya 1 LED

' semua led

LATIHAN :
1. Buatlah program apabila Int0/1 ditekan maka akan ditampilkan di LCD

42

D. Kegiatan Belajar 4
1. Kegiatan Belajar 4 : Konsep LCD dan ADC
Tujuan Pembelajaran 4 :
Setelah mendapatkan materi LCD dan ADC diharapkan perseta didik dapat :
a) Mengenal tentang konsep LCD dan ADC pada mikrokontroler
b) Memprogram LCD dan ADC dengan bahasa pemrograman BASIC
c) Menjalankan program secara simulasi dan mendownloadkan program kedalam
IC AT Mega 40 pin dengan USBasp untuk konsep LCD dan ADC.

2. Uraian Materi 4
a.

Rangkaian antarmuka LCD 2x16 character


Gambar di bawah ini merupakan gambar antarmuka LCD dan Tampilan

LCD. LCD 2x16 merupakan LCD yang memiliki 2 baris dan tiap baris memiliki
16 karakter. Untuk membentuk karakter-karakter tersebut maka LCD tersebut
terdiri dari dot atau titik yang dinyalakan.

Gambar 38. Rangkaian antarmuka LCD 2x16 4Bit dan Tampilan LCD
b. Pemrograman LCD :
LCD dapat dihubungkan dengan 2 metode :
1) Langsung menghubungkan dengan PORT mikrokontroler, ini disebut "pin

mode"
2) Menghubungkan LCD dengan bus data, hal ini dilakukan jika rangkaian kita

terhubung dengan RAM eksternal.

43

Pada pin mode maka akan diberikan instruksi :


Config LCDPIN = PIN,
DB4=PN,DB5=PN,DB6=PN,DB7=PN,E=PN,RS=PN 4 Bit
Config LCDPIN = PIN, PORT = PORTx, E = PN, RS = PN 8 Bit
Dimana PN = nama salah satu port misalnya PORTA.O Perintah pada LCD :
Tabel 11. Perintah pada LCD
Syntax

Keterangan

Syntax

Keterangan

Cls

Menghapus tampilan

Cursor on

Shiftlcd left

Menggeser display ke kiri

Cursor off Cursor tidak tampil

Shiftlcd right

Menggeser display ke
kanan
Menggeser kursor ke kiri

Cursor
blink

Shiftcursor left
Shiftcursor
right
Lowerline
Upperline

Home =
upper/lower

c.

Menggeser kursor ke
kanan
Mereset cursor LCD ke
baris 2
Mereset cursor LCD ke
baris 1
Meletakkan cursor ke
posisi baris 1 atau 2

Cursor tampil

Cursor berkedip

Cursor tidak berkedip


Cursor
noblink
Display on Display ditampilkan
Display off Display tidak ditampilkan
Locate y,x Meletakkan cursor keposisi
kolom ke x(1-16) dan baris
ke y(1-2)
Menulis text ke LCD
LCD
"Text"

Rangkaian Antarmuka LCD dan ADC


Tujuan pembelajaran siswa dapat mengerti dan memahami konsep tentang

LCD dan ADC. Sehingga siswa diharapkan dapat memprogram dengan


menggunakan BASCOM dan mensimulasikan program tersebut di Proteus serta
eksekusi ke Hardware Trainer Mikrokontroler AT Mega 40 pin .
Untuk mempelajari tentang rangkaian pada mikrokontroler AT Mega 40 pin
tentang konsep LCD dan ADC, maka pada gambar 21 dibawah ini telah
diperlihatkan rangkaiannya. Pada rangkaian dibawah ini terlihat untuk konsep

44

LCD dan ADC terdiri dari beberapa komponen yaitu Sistem Minimum, Sensor
Cahaya (LDR), Multitone (Potensio), Sensor Suhu (LM35) sebagai input ADC dan
LCD 2x16 sebagai tampilan karakter-karakter data. Untuk lebih jelasnya silahkan
lihat rangkaian dibawah ini!

Gambar 39. Sistem Minimum dengan ADC dan LCD


d. Program 1. Menampilkan Tulisan pada LCDZ
'PROGRAM LCD 1.
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Cursor Off Cls
Locate 1 , 2
Lcd "belajar program"
Locate 2 , 4
Lcd "*AT Mega 40 pin *"
wait 1
End

45

e.

Program 2. Menampilkan Tulisan Berkedip Pada LCD

'PROGRAM LCD 2.BAS


$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Cursor Off Cls
Do
Cls
Waitms 200
Locate 1 , 2
Lcd "belajar program"
Locate 2 , 4
Lcd "*AT Mega 40 pin *"
Waitms 200
' tunggu 200 milidetik
Loop

f.

Program 3. Menggeser Tulisan pada LCD

' Program 3. Menggeser Tulisan Pada LCD


'PROGRAM LCD 3.BAS
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Dim Pos As Byte
Do
Cls
Upperline
Lcd "test lcd"
Lowerline
Lcd "at mega 40 pin"
For Pos = 0 To 16 Step 1
Waitms 500
Shiftlcd Left
Next Pos
Loop

g.

Analog to Digital Converter (ADC)


ADC merupakan fitur AVR AT Mega 40 pin yang sangat menguntungkan,
adanya kemampuan membaca sinyal analog kemudian dikonversikan menjadi
data digital. Proses konversi tersebut dilakukan oleh ADC. AT Mega 40 pin
memiliki kemampuan ADC 10B/'t dengan 8 channel.

46

Mode Konversi
Dalam melakukan konversi, ADC dapat menggunakan 3 cara/mode konversi :
a. Single Conversion
Dalam setiap konversi diperlukan satu kali instruksi.
b. Auto Trigger
Perintah konversi dilakukan secara otomatis oleh sumber pemicu, yang berasal
dari :
Analog comparator
Timer/counter 0
Interups/ eksternal
Timer/counter 1
c. Free Running
Pada mode ini, ADC cukup diberi perintah sekali saja, maka secara otomatis
akan bekerja terus sampai ada perintah yang menghentikannya.
PEMROGRAMAN ADC
Dalam BASCOM - AVR, memprogram ADC tidaklah terlalu rumit. Pertama
kali harus anda konfigurasikan ADC-nya yaitu :
CONFIG ADC = Single/Free, PRESCALER = auto/2/4/8/16/32, REFERENCE =
off/AVCC/internal
Proses pengambilan data oleh ADC dilakukan dengan memanggil fungsi
GETADC(Channel)

47

h. Program 4. Penggunaan ADC Untuk Membaca Sensor Cahaya (LDR)


'ADC LDR.BAS
'
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim Data_adc As Word , Adc_convert As Single , Adc_string As String * 10
Cursor Off Cls
Locate 1 , 1
Lcd "Data ADC (volt):"
Do
Data_adc = Getadc(0)
Adc_convert = Data_adc
Adc_convert = Adc_convert / 1024
Adc_convert = Adc_convert * 5
Adc_string = Fusing(adc_convert , "#.##")
Locate 2 , 6
Lcd Adc_string ; "
"
Waitms 200
Loop

i.

Program 5. Penggunaan ADC Untuk Membaca Potensiometer


'ADC Potensiometer.BAS
'
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim Data_adc As Word
Cursor Off Cls
Locate 1 , 1
Lcd "Data ADC:"
Do
Data_adc = Getadc(1)
Locate 2 , 6
Lcd Data_adc ; "
"
Waitms 200
Loop

48

j.

Program 6. Penggunaan ADC Untuk Membaca Sensor Suhu (LM35)


' ADC 2 SENSOR SUHU.BAS
'
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Dim Data_adc As Word , Adc_convert As Single , Adc_string As String * 10
Start Adc
Cursor Off
Locate 1 , 2
Lcd "Sensor progres"
Locate 2 , 2
Lcd "Suhu sekarang"
Wait 1
Cls
Do
Data_adc = Getadc(2)
Adc_convert = Data_adc
Adc_convert = Adc_convert / 1024
Adc_convert = Adc_convert * 500
Adc_string = Fusing(adc_convert , "#.##")
Locate 1 , 1
Lcd "Data Suhu:"
Locate 2 , 2
Lcd Adc_string ; " celcius"
Waitms 200
Loop

Latihan:
1. Buatlah program untuk menampilkan input tombol yang ditekan pada
LCD!
o
2. Buatlah program sensor suhu jika suhu > 45 C maka buzzer PortA.7 akan
aktif!
3. Buatlah program sensor cahaya (LDR) jika keadaan gelap maka akan
mengaktifkan relay PortA.6 untuk mengaktifkan lampu.

49

E. Kegiatan Belajar 5
1. Kegiatan Belajar 5 : Konsep Komunikasi Serial
Tujuan Pembelajaran 5 :
Setelah mendapatkan materi Komunikasi Serial diharapkan perseta didik dapat:
a) Mengenal tentang konsep Komunikasi Serial pada mikrokontroler
b) Memprogram Komunikasi Serial dengan bahasa pemrograman BASIC
c) Menjalankan program secara simulasi dan mendownloadkan program ke
dalam IC AT Mega 40 pin dengan USBasp untuk konsep Komunikasi Serial.
2. Uraian Materi 5
a.

Komunikasi Serial
Jika pada port pararel data dikirimkan secara pararel, maka pada serial port
data dikirimkan secara serial. Lebih praktis, karena hanya memerlukan 3 jalur, pin
RXD (PD.0), TXD (PD.1) dan ground. Mode operasi pada komunikasi serial pada
AT Mega 40 pin adalah sinkron dan asinkron. Frame data pada komunikasi serial
AVR AT Mega 40 pin seperti terlihat pada gambar dibawah ini :

Gambar 22. Frame Data Komunikasi Serial


Gambar 40. Frame Komunikasi data serial
Pada kondisi tidak ada data (idle) sinyal berlogika high. Ketika data mulai
dikirimkan, akan diawali dengan memberikan sinyal start bit (St) yang berlogika
low disusul dengan data yang dikirim (5,6,7,8,atau 9 bit). Bit paritas (P) bersifat
pilihan, kemudian diakhiri dengan bit stop (Sp) yang dapat berjumlah 1 atau 2 bit.
b. Pemrograman Port Serial
Pada pemrograman komunikasi serial dengan BASCOM-AVR sangat
sederhana, cukup kita atur baud rate, hal ini dilakukan dengan dua cara :

50

1) Mengatur setting pada compiler, dengan cara Option Compiler


Communication, pada kolom baud rate dan frequency diisi dengan nilai yang
sesuai.
2) Menuliskan assembler directive pada program yang kita buat, misalnya :
$Crystal = 12000000
$Baud = 9600

Tujuan pembelajaran siswa dapat mengerti dan memahami konsep tentang


Komunikasi Serial. Sehingga siswa diharapkan dapat memprogram dengan
menggunakan BASCOM dan mensimulasikan program tersebut di Proteus serta
eksekusi keHardware TrainerMikrokontroler AT Mega 40 pin .
Untuk mempelajari tentang rangkaian pada mikrokontroler AT Mega 40 pin
tentang konsep Komunikasi Serial, maka pada gambar 22 dibawah ini telah
diperlihatkan rangkaiannya. Pada rangkaian dibawah ini terlihat untuk konsep
Komunikasi Serial terdiri dari beberapa komponen yaitu Sistem Minimum, LED,
LCD, IC MAX 232, DB9. IC MAX 232 merupakan converter TTL yang
dikoneksikan terhadap mikrokontroler melalui port Rx dan Tx. DB9 merupakan
koneksi komunikasi data serial yang akan dihubungkan ke PC.
Komunikasi serial ini difungsikan sebagai kendali mikrokontroler dengan PC
(Personal Computer) sehingga kita dapat mengendalikan sesuatu dari PC dengan
interface mikrokontroler ini. Kita juga dapat mengirimkan data dari
mikrokontroler untuk dibaca ke PC, dikarenakan komunikasi serial memiliki
fungsi searah dan dua arah. Untuk rangkaian dari komunikasi serial dapat dlihat
rangkaian di bawah ini.

Gambar 41. Sistem Minimum dengan rangkaian RS 232 Converter dan LCD

51

c.

Program 1. Komunkasi Serial Searah Dengan PC

'Program komunikasi serial dengan PC. BAS


$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Locate 1 , 1
Lcd "Test Serial"
Locate 2 , 1
Lcd "Communication OK"
Print "Test Serial"
Print "Communication serial OK"
End

Program tersebut adalah program komunikasi serial antara mikrokontroler


dengan komputer, dimana mikrokontroler akan mengirim data teks Test Serial,
kemudian ENTER dan kemudian diikuti data teks "Communication serial OK",
pada sisi komputer diperlukan sebuah software untuk menerima data teks
tersebut. Hyper Terminal merupakan software yang data dipergunakan , software
lain yang juga dapat dipergunakan adalah putty. Pada level selnjutnya akan
dibahas mengenai komunikasi serial antara mikrokontroler dengan PC
menggunakan software development tools Delphi 7.
Cara pen-setting-an hyperterminal adalah sebagai berikut.
Start Program Accessories Communication Hyper Terminal

Gambar 42. Hyperterminal


52

Beri nama pada kolom Name, kemudian OK

Gambar 43. Penamaan Hyperterminal


Pada dialox box Connect To, pilihlah COM17, kemudian OK

Gambar 44. Menghubungkan Hyperterminal

53

Maka akan muncul jendela COM17 Properties, isikan pada kolom


Bits per second = 9600
Data bits = 8
Parity = None
Stop bits = 1
Flow Control = None

Gambar 45. Tampilan Hyperterminal Properties


Tekan OK, maka Hyperterminal siap melakukan komunikasi dengan
mikrokontroler

54

d. Program 2 . Komunikasi Serial Dua Arah PC-uC


'Program komunikasi serial dua arah PC-uC. BAS
$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600
Config Portb = Output
Portb = &H00
Dim Tombol As Byte
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Locate 1 , 1
Lcd "Test Serial"
Locate 2 , 1
Lcd "Communication OK"
Print "Tekan sembarang tombol pada keyboard!"
Do
Tombol = Waitkey()
Print "Tombol yang anda tekan :"
Print Chr(tombol)
Select Case Tombol
Case "1" : Portb = &B00000001
Case "2" : Portb = &B00000010
Case "3" : Portb = &B00000100
Case "4" : Portb = &B00001000
Case "a" : Portb = &B00010000
Case "b" : Portb = &B00100000
Case "c" : Portb = &B01000000
Case "d" : Portb = &B10000000
End Select
Loop

LATIHAN :
1. Buatlah program komunikasi serial untuk mengaktifkan relay dan buzzer !

55

D. Kegiatan Belajar 6
1. Kegiatan Belajar 6 : Kendali nyala led via komunikasi serial dengan
Delphi
Tujuan Pembelajaran 6 :
Setelah mendapatkan materi Kendali nyala led via komunikasi serial dengan
Delphi diharapkan peserta didik dapat:
a)

Mengenal tentang konsep Kendali nyala led via komunikasi serial dengan
Delphi

b) Memprogram Kendali nyala led via komunikasi serial dengan Delphi dengan
bahasa pemrograman basic pada sisi mikrokontroler.
c)

Membangun Kendali nyala led via komunikasi serial dengan Delphi dengan
bahasa pemrograman pascal pada sisi komputer.

2. Uraian Materi 6
Bagian ini akan membahas bagaimana cara menyalakan dan memadamkan
nyala light emiting dioda (LED) melalui komunikasi serial dengan antarmuka
aplikasi pada komputer yang dibuat dengan menggunakan Delphi 7 . untuk dapat
menyalakan dan memadamkan LED yang terkoneksi dengan pin pin
mikrokontroller maka harus disepakati dulu protokol komunikasi antara sisi
komputer dengan sisi mikrokontroller
Lebih jelas nya adalah sebagai berikut :
Jika komputer mengirim data serial berupa string ON1+ char(13) dan
mikrokontroller menerima karakter tersebut (baca: ON1+ char(13)) maka LED 1
akan di nyalakan, selanjutnya mikrokontroller akan mengirim notifikasi kepada
komputer berupa string ON1-OK lalu kemudia karakter ini akan di oleh oleh
komputer untuk menampilkan keterangan LED1 nyala
Jika komputer mengirim data serial berupa string OFF1+ char(13) dan
mikrokontroller menerima karakter tersebut (baca: OFF1+ char(13)) maka LED 1
akan di padamkan, selanjutnya mikrokontroller akan mengirim notifikasi kepada
komputer berupa string OFF1-OK lalu kemudia karakter ini akan di oleh oleh
komputer untuk menampilkan keterangan LED1 padam

56

Tinggal nantinya di pin mikrokontroller manakah LED di hubungkan pada


mikrokontroller,
Dalam hal ini PCB yang di sediakan , di desain bahwa LED dipasang pada
PINB.0 sampai dengan PIN B.7 , namun yang akan dipergunakan hanya LED
yang terhubung pada PINB.0 sampai dengan PIN B.3 dengan konfigurasi active
high yakni jika pin pada mikrokontroller berlogika high (1), maka LED yang
terhubung ke pin mikrokontroller yang dimaksud akan aktif (menyala).
Tabel 12 berisi daftar perintah yang dibuat untuk merencanakan protocol
komunikasi yang dapat di mengerti oleh komputer dan mirkokontroler untuk
saling bercakap-cakap.
Tabel 12. Protocol komunikasi serial kendali via komputer
No Perintah
Dari Balasan
dari Aksi
komputer (dikahiri Mikrokontroler mikrokontroler
chr(13))
saat
ada
perintah
dari
komputer
1
ON1
ON1-OK
Menyalakan LED
di pin B.0
2
OFF1
OFF1-OK
Memadamkan
LED di pin C.0
3
ON2
ON2-OK
Menyalakan LED
di pin B.1
4
OFF2
OFF2-OK
Memadamkan
LED di pin B.1
5
ON3
ON3-OK
Menyalakan LED
di pin B.2
6
OFF3
OFF3-OK
Memadamkan
LED di pin B.2
7
ON4
ON4-OK
Menyalakan LED
di pin B.3
8
OFF4
OFF4-OK
Memadamkan
LED di pin B3
9
ON-ALL
ON-ALL-OK
Menyalakan LED
di pin B.0-3
10

OFFALL

OFF-ALL-OK

57

Memadamkan
LED di pin B.0-3

Aksi
pada
komputer

Menampilkan
LED1 nyala
Menampilkan
LED1 padam
Menampilkan
LED2 nyala
Menampilkan
LED2 padam
Menampilkan
LED3 nyala
Menampilkan
LED3 padam
Menampilkan
LED4 nyala
Menampilkan
LED4 padam
Menampilkan
SEMUA LED
nyala
Menampilkan
SEMUA LED
padam

Dari tabel tersebut di atas , pertama kita buat source code pada software
bascom yang akan di download kan ke mikrokontroller
Source code nya adalah sebagai berikut :
$regfile = "m16def.dat"
$baud = 9600
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 ,
Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
cls
Cursor Off
Config Portb.0 = output
Config Portb.1 = output
Config Portb.2 = output
Config Portb.3 = output
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
wait 1
cls
locate 1 , 1
lcd "KONTROL LED"
locate 2 , 1
lcd "SERIAL"
Dim Perintah As String * 6
Print "Ok!";
Do
Input Perintah
Select Case Perintah
Case "ON1" : Portb.0 = 1
print "ON1-OK" ;
cls
locate 1 , 1
lcd perintah
Case "ON2" : Portb.1 = 1
cls
locate 1 , 1
lcd perintah
print "ON2-OK" ;
Case "ON3" : Portb.2 = 1
cls
print "ON3-OK" ;
locate 1 , 1
lcd perintah
Case "ON4" : Portb.3 = 1
cls
print "ON4-OK";
locate 1 , 1
lcd perintah
Case "ON-ALL" : Portb = &B11111111
cls
print "ON-ALL-OK";
locate 1 , 1
lcd perintah

58

Case "OFF1" : Portb.0


cls
print "OFF1OK" ;
locate 1 , 1
lcd perintah
Case "OFF2" : Portb.1
cls
print "OFF2OK";
locate 1 , 1
lcd perintah
Case "OFF3" : Portb.2
cls
print "OFF3OK";
locate 1 , 1
lcd perintah
Case "OFF4" : Portb.3
cls
print "OFF4-OK";
locate 1 , 1
lcd perintah
Case "OFFALL" : Portb
cls
print "OFF-ALL-OK";
locate 1 , 1
lcd perintah
End Select
Loop
End

= 0

= 0

= 0

= 0

= &B00000000

Simpan source code diatas dengan nama semisal kontrol serial led.bas ,
selanjutnya pada lembar kerja Bascom AVR silakan tekan tombol keyboard F7
atau dapat juga dengan menggunakan menu program compile. Proses compile
ini akan menghasilkan file dengan nama kontrol serial led.hex, kontrol serial
led.bin dan lain lain yang nantinya file dengan ekstensi hex inilah yang akan di
downloadkan ke chip mikrokontroller. (video cara download file dengan extensi
hex dari komputer ke dalam mikrokontroler dapat dilhat pada folder video.)
Selanjutnya kita buat source code pada Delphi untuk mengirim data serial
ke mikrokontroler dan menerima data yang dikirim dari mikrokontroller ke
komputer yang nanti nya akan ditampilkan sebagai status kondisi nyala-padamnya
LED pada display komputer.

59

Komponen nya adalah sebagai berikut :


Tabel 13. Daftar Komponen kendali via port serial
No Nama komponen
Properties
1
Groupbox1
Caption
2
Button1
Caption
3
Button2
Caption
4
Button3
Caption
5
Button4
Caption
6
Button5
Caption
7
8
9
10
11
12
13

Shape1
Shape2
Shape3
Shape4
Shape5
Groupbox2
Label1

Shape
Shape
Shape
Shape
Shape
Caption
Caption

Value
| Relay Tester |
ON1
ON2
ON3
ON4
ON SEMUA

stCircle
stCircle
stCircle
stCircle
stCircle
Keterangan
Keterangan
Lampu
14
Memo1
15
Button
Caption
Open
Name
Buttonopen
16
Button
Caption
Close
Name
ButtonClose
17
Button
Caption
Setting
Name
Buttonset
Selanjutnya untuk tampilan desain aplikasi nya adalah sebagai berikut :

60

Kondisi

Gambar 46. Tampilan desain pengendali Delphi

Source code untuk masing masing komponen dapat dilihat pada Tabel 14
sebagai berikut:
Tabel 14. Source Code kendali via port serial
No Nama
Event
Source
komponen
1
Form
On
begin
create
shape1.Brush.Color:=clblack;
shape2.Brush.Color:=clblack;
shape3.Brush.Color:=clblack;
shape4.Brush.Color:=clblack;
shape5.Brush.Color:=clblack;
end;
2
Button1
Onclick begin
if button1.Caption='ON1' then
begin
comport1.WriteStr('ON'+#13);
shape1.Brush.Color:=clred;
button1.Caption:='OFF1' end
else
if button1.Caption='OFF1'then
begin
comport1.WriteStr('OFF'+#13);
shape1.Brush.Color:=clblack;
61

Button2

Onclick

Button3

Onclick

Button4

Onclick

button1.Caption:='ON1'
end;
end;
begin
if button2.Caption='ON2' then
begin
comport1.WriteStr('ON2'+#13);
shape2.Brush.Color:=clred;
button2.Caption:='OFF2' end
else
if button2.Caption='OFF2'then
begin
comport1.WriteStr('OFF2'+#13);
shape2.Brush.Color:=clblack;
button2.Caption:='ON2'
end;
end;
begin
if button3.Caption='ON3' then
begin
comport1.WriteStr('ON3'+#13);
shape3.Brush.Color:=clred;
button3.Caption:='OFF3' end
else
if button3.Caption='OFF3'then
begin
comport1.WriteStr('OFF3'+#13);
shape3.Brush.Color:=clblack;
button3.Caption:='ON3'
end;
end;
begin
if button4.Caption='ON4' then
begin
comport1.WriteStr('ON4'+#13);
shape4.Brush.Color:=clred;
button4.Caption:='OFF4' end
else
if button4.Caption='OFF4'then
begin
comport1.WriteStr('OFF4'+#13);
shape4.Brush.Color:=clblack;
button4.Caption:='ON4'
end;
end;

62

Button5

Onclick

Buttonset

Onclick

Buttonclose

Onclick

Buttonopen

Onclick

10

Memo1

Onchan
ge

begin
if button5.Caption='ON SEMUA' then
begin
comport1.WriteStr('ON-ALL'+#13);
shape5.Brush.Color:=clred;
button5.Caption:='OFF SEMUA' end
else
if button5.Caption='OFF SEMUA'then
begin
comport1.WriteStr('OFFALL'+#13);
shape5.Brush.Color:=clblack;
button5.Caption:='ON SEMUA'
end;
end;
begin
comport1.ShowSetupDialog;
end;
Begin
Application.Terminate;
End;
begin
if Comport1.Connected then
// jika smalll
port(untuk koneksi dengan port paralel ) sudah
terbuka,
begin Comport1.Connected :=false; //maka
tutup koneksi dengan port paralel
ButtonOpen.Caption:='Open Driver' //maka
caption tombol menjadi Open Driver
end
else Comport1.Connected :=true; // selain itu,
buka smallport (terkoneksi dengan port paralel)
if
Comport1.Connected
then
ButtonOpen.Caption:='Close Driver'; // jika
small port terbuka (terkoneksi dengan port
serial) maka tombol akan bertuliskan Close
Driver
end;
var
on1,on2,on3,on4,onsemua,off1,off2,off3,off4,o
ffsemua:integer;
datamasuk:string;
begin
datamasuk:=memo1.Lines[memo1.Lines.Count
-1];
on1:=pos ('ON1-OK',datamasuk);
on2:=pos ('ON2-OK',datamasuk);

63

on3:=pos ('ON3-OK',datamasuk);
on4:=pos ('ON4-OK',datamasuk);
onsemua:=pos ('ON-ALL-OK',datamasuk);
off1:=pos ('OFF1-OK',datamasuk);
off2:=pos ('OFF2-OK',datamasuk);
off3:=pos ('OFF3-OK',datamasuk);
off4:=pos ('OFF4-OK',datamasuk);
offsemua:=pos ('OFF-ALL-OK',datamasuk);
if on1 <> 0 then
begin
label1.caption:= 'LED1 nyala';
end else
if on2<> 0 then
begin
label1.caption:= 'LED2 nyala';
end else
if on3<> 0 then
begin
label1.caption:= 'LED3 nyala';
end else
if on4<> 0 then
begin
label1.caption:= 'LED4 nyala';
end else
if onsemua<> 0 then
begin
label1.caption:= 'SEMUA LED nyala';
shape1.Brush.Color:=clred;
shape2.Brush.Color:=clred;
shape3.Brush.Color:=clred;
shape4.Brush.Color:=clred;
end else
if off1 <> 0 then
begin
label1.caption:= 'LED1 padam';
end else
if off2<> 0 then
begin
label1.caption:= 'LED2 padam';
end else
if off3<> 0 then
begin
label1.caption:= 'LED3 padam';
end else

64

11

Comport1

Onrxch
ar

if off4<> 0 then
begin
label1.caption:= 'LED4 padam';
end else
if offsemua<> 0 then
begin
label1.caption:= 'SEMUA LED padam';
shape1.Brush.Color:=clblack;
shape2.Brush.Color:=clblack;
shape3.Brush.Color:=clblack;
shape4.Brush.Color:=clblack;
end;
end;
var Str, datamasuk: String;
begin
comport1.ReadStr(str,count);
memo1.Text:=memo1.Text+str;
datamasuk:=memo1.Lines[memo1.Lines.Count
-1];
form1.Caption:=datamasuk;

Keterangan fungsi pos pada bagian memo text adalah sebagai berikut:
Fungsi pos adalah untuk mencari kata tertentu yang sesuai dengan kata
kunci yang telah di set, jika ada maka dia bernilai 1 (bukan 0)
Dalam contoh tersebut , kita ambil on1:=pos ('ON1-OK',datamasuk);
berarti jika ada karakter ON1-OK pada memo1 baris terakhir , maka nilai on 1
adalah 1 (bukan 0), setelah itu aka nada tugas lain yang di lakukan yakni
menampilkan tulisan led 1 nyala pada komponen label1
Sebagai mana source code sebagai berikut :
if on1 <> 0 then
begin
label1.caption:= 'LED1 nyala';
end else

Eksekusi program , seharusnya aplikasi menjadi sebagai berikut :

65

Gambar 47. Ujicoba aplikasi pengendali dengan Delphi

Pertama kali klik setting


sebagaimana gambar di bawah

port, pilih com number, baud rate dll

Gambar 48. Setting Comport

Kemudian klik open port, baru dapat dipergunakan untuk pengontrolan

66

Gambar 49. Uji pengontrolan dengan Delphi

67

D. Kegiatan Belajar 7
1.

Kegiatan Belajar 7 : Mengontrol relay dengan tegangan kerja 12 volt

dengan komputer untuk aktivasi lampu dengan tegangan kerja 220 volt AC
Tujuan Pembelajaran 7 :
Setelah mendapatkan materi Mengontrol relay dengan tegangan kerja 12 volt
dengan komputer untuk aktivasi lampu dengan tegangan kerja 220 volt AC
diharapkan peserta didik dapat :
a)

Mengenal tentang konsep Mengontrol relay dengan tegangan kerja 12 volt


dengan komputer untuk aktivasi lampu dengan tegangan kerja 220 volt AC

b) Memprogram Mengontrol relay dengan tegangan kerja 12 volt dengan


komputer untuk aktivasi lampu dengan tegangan kerja 220 volt AC dengan
bahasa pemrograman basic pada sisi mikrokontroler.
c)

Membangun aplikasi untuk Mengontrol relay dengan tegangan kerja 12 volt


dengan komputer untuk aktivasi lampu dengan tegangan kerja 220 volt AC
dengan bahasa pemrograman pascal pada sisi komputer.

Uraian Materi 7
Bagian adalah kelanjutan dari materi sebelumnya yang berjudul Kendali
nyala led via komunikasi serial dengan Delphi. Hanya saja dalam hal ini
dikembangkan lebih kompleks supaya dapat dipergunakan untuk mengontrol
peralatan listrik dengan tegangan kerja 220volt AC atau biasa disebut tegangan
kerja PLN. bagaimanakah logikanya? Secara sederhana dapat dijelaskan bahwa
logika high atau low pada pin mikrokntroller dapat dipergunakan untuk trigger
pada rangkaian transistor sebagai saklar, dalam hal ini logika High akan dijadikan
bias maju bagi pin basis transistor sehingga transistor dapat aktif ketika kaki
colektor dan emitor dibias maju (sebagai catatan transistor yang dipergunakan
adalah BC 547 yang merupakan transistor NPN).
Skematik transistor sebagai saklarnya adalah sebagai berikut :
RL1

12Vol

2.

R3
1k

L1

D2

D1

220v

LED-BLUE

DIODE

Q1

RL1(COM)
12V

R2
Out1
4k7
BC547

Gambar 50. Relay Driver


68

Program antar muka yang pada komputer dibuat dengan Delphi 7


memanfaatkan komponen tambahan yakni comport. Tabel 15 menunjukkan
protocol komunikasi yang supaya komputer dan mikrokontroler dapat saling
bercakap-cakap.
Tabel 15. Protocol komunikasi komputer dan mikrokontroler
Aksi mikrokontroler saat Aksi pada komputer
No Perintah Balasan
ada
perintah
dari
dari
Dari
komputer Mikrokontr komputer
(diakhiri oler
enter)
1
ON1
ON1-OK
Menyalakan LED di pin B.0 Menampilkan LED1
nyala
2
OFF1
OFF1-OK
Memadamkan LED di pin Menampilkan LED1
B.0
padam
3
ON2
ON2-OK
Menyalakan LED di pin B.1 Menampilkan LED2
nyala
4
OFF2
OFF2-OK
Memadamkan LED di pin Menampilkan LED2
B.1
padam
5
ON3
ON3-OK
Menyalakan LED di pin B.2 Menampilkan LED3
nyala
6
OFF3
OFF3-OK
Memadamkan LED di pin Menampilkan LED3
B.2
padam
7
ON4
ON4-OK
Menyalakan LED di pin B.3 Menampilkan LED4
nyala
8
OFF4
OFF4-OK
Memadamkan LED di pin Menampilkan LED4
B.3
padam
9
ON-ALL ON-ALL-OK Menyalakan LED di pin B0- Menampilkan
3
SEMUA LED nyala
10

OFFALL

OFF-ALLMemadamkan LED di pin Menampilkan


OK
B.0-3
SEMUA LED padam
Tabel 15 tersebut di atas memeberikan arahan bahwa langkah pertama
yang harus dilakukan adalah membuat source code bascom yang akan di
download kan ke mikrokontroler

69

Source code nya adalah sebagai berikut :


$regfile = "m16def.dat"
$baud = 9600
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 =
Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
cls
Cursor Off
Config
Config
Config
Config
PortB.0
PortB.1
PortB.2
PortB.3

PortB.0
PortB.1
PortB.2
PortB.3
=
=
=
=

=
=
=
=

output
output
output
output

0
0
0
0

wait 1
cls
locate 1 , 1
lcd "KONTROL 220 volt"
locate 2 , 1
lcd "SERIAL"
Dim Perintah As String * 6
Print "Ok!";
Do
Input Perintah
Select Case Perintah
Case "ON1" : Portb.0 = 1
print "ON1-OK" ;
cls
locate 1 , 1
lcd perintah
Case "ON2" : Portb.1 = 1
cls
locate 1 , 1
lcd perintah
print "ON2-OK" ;
Case "ON3" : Portb.2 = 1

70

cls
print "ON3-OK" ;
locate 1 , 1
lcd perintah
Case "ON4" : Portb.3 = 1
cls
print "ON4-OK";
locate 1 , 1
lcd perintah
Case "ON-ALL" : Portb = &B00001111
cls
print "ON-ALL-OK";
locate 1 , 1
lcd perintah
Case "OFF1" : Portb.0 = 0
cls
print "OFF1OK" ;
locate 1 , 1
lcd perintah
Case "OFF2" : Portb.1 = 0
cls
print "OFF2OK";
locate 1 , 1
lcd perintah
Case "OFF3" : Portb.2 = 0
cls
print "OFF3OK";
locate 1 , 1
lcd perintah
Case "OFF4" : Portb.3 = 0
cls
print "OFF4-OK";
locate 1 , 1
lcd perintah
Case "OFFALL" : Portb = &B00000000
cls
print "OFF-ALL-OK";
locate 1 , 1
lcd perintah
End Select
Loop
End

71

Keterangan : source code di atas sama persis dengan source code pada
bagian yang berjudul Kendali nyala led via komunikasi serial dengan Delphi,
tapi ada perbedaan pada bagian
locate 1 , 1
lcd "KONTROL 220 volt"
locate 2 , 1
lcd "SERIAL"

Kode tersebut di atas hanya dipergunakan untuk mengganti tulisan yang


muncul di LCD ketika pertama kali sistem mikrokontroler dinyalakan.
Silakan compile source code di atas, lalu kemudian download ke chip
mikrokontroler

72

D. Kegiatan Belajar 8
1. Kegiatan Belajar 8 : Tombol input mikrokontroler ditampilkan pada form
aplikasi yang dibangun dengan Delphi 7
Tujuan Pembelajaran 8 :
Setelah mendapatkan materi Tombol input mikrokontroler ditampilkan pada form
aplikasi yang dibangun dengan Delphi 7diharapkan peserta didik dapat:
a) Mengenal tentang konsep Tombol input mikrokontroler ditampilkan pada
form aplikasi yang dibangun dengan Delphi 7
b) Memprogram Tombol input mikrokontroler ditampilkan pada form aplikasi
yang dibangun dengan Delphi 7 dengan bahasa pemrograman basic pada sisi
mikrokontroler.
c) Membangun aplikasi Tombol input mikrokontroler ditampilkan pada form
aplikasi yang dibangun dengan Delphi 7 dengan bahasa pemrograman pascal
pada sisi komputer.
2. Uraian Materi 8
Pada bagian ini , akan dibahas mengenai tombol pushbutton (push on)
pada pin mikrokontroler yang di fungsikan sebagai inputan bagi aplikasi pada
yang dibangun dengan Delphi 7. Secara sederhana dapat dijelaskan bahwa jika
tombol 1 di tekan, maka pada form Delphi akan di tampilkan keterangan pada
label bahwa tombol 1 ditekan , begitupun saat tombol 2 di tekan maka akan
ditampilkan pada label bahwa tombol 2 ditekan.
Dalam pembahasan kali ini akan di bahas 2 tombol inputan saja sebagai
contoh supaya nantinya pembaca dapat mengembangkan nya menjadi lebih
kompleks lagi, semisal untuk jumlah tombol yang jumlahnya lebih banyak lagi.
Pada contoh aplikasi ini , sekali lagi mikrokontroler akan dibungkan ke
komputer / laptop melalui port serial atau port USB (menggunakan kabel usb to
serial converter). Sedangkan tombol push button sebagai input dipasang pada
PinD3 dan PinD4 mikrokontroler , konfigurasinya sebagai pin input yang bersifat
low aktif dimana ketika tombol push button di tekan, maka secara otomatis akan
menyebabkan pin mikrokontroler terhubung ke jalur ground rangkaian sehingga
berlogika low, nah ketiki logika low inilah kode bahwa tombol di tekan dikirim
ke PC / laptop. Dalam contoh kasus ini, aturan yang dibuat adalah : ketika tombol
1 ditekan maka mikrokontroler akan mengirim karakter angka 1 ke komputer /
laptop melalui komunikasi serial , nah di saat yang lain yaitu saat tombol 2
ditekan maka mikrokontroler akan mengirim karakter angka 2 ke komputer /
laptop.

73

Source code yang ditulis pada software bascom untuk nantinya di-compile
dan kemudian di downloadkan pada mikrokontroler adalah sebagai berikut :
$regfile = "m16def.dat"
' jenis mikro yang digunakan
$crystal = 12000000
' Cristal yang digunakan
$baud = 9600
' baud rate yang digunakan
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
cls
Cursor Off
CONFIG PORTD.4 = INPUT
CONFIG PORTD.5 = INPUT
PortD.4 = 1
PortD.5 = 1
Print "Ok!"
wait 1
cls
locate 1 , 1
lcd "INPUT TOMBOL"
locate 2 , 1
lcd "PORT SERIAL"
Do
if PIND.4 = 0 then
WAITms 200
Print "1" ;
WAITms 200
Cls
Locate 1 , 4
Lcd "TOMBOL 1"
elseif PIND.5 = 0 then
WAITms 200
Print "2";
WAITms 200
Cls
Locate 1 , 4
Lcd "TOMBOL 2"
end IF
loop

Sedikit penjelasan pada program utama dari source code di atas adalah bagian
source code sebagai berikut :
if PORTC.0 = 0 then
Print "1";

Adalah bagian perintah jika tombol 1 yang terhubung di portd.3 ditekan maka
akan mengirimkan karakter 1 ke komputer. Begitu pula bagian source code
elseif PORTC.1 = 0 then
Print "2";

74

Adalah bagian perintah jika tombol 2 yang terhubung di portd.4 ditekan maka
akan mengirimkan karakter 1 ke komputer.
Dari penjelasan jalannya program di atas, dapat dijelaskan bahwa bahwa :
ketika tombol 1 ditekan maka mikrokontroler akan mengirim karakter
angka 1 ke komputer / laptop melalui komunikasi serial , nah di saat yang lain
yaitu saat tombol 2 ditekan maka mikrokontroler akan mengirim karakter angka
2 ke komputer / laptop
Maka dapat diambil kesimpulan, nantinya komputer akan menerima
karakter angka 1 saat tombol 1 ditekan , dan angka 2 saat tombol 2 ditekan.
Dari aturan / rule tersebut, nantinya aplikasi yang di buat dengan Delphi akan
menampilkan keterangan pada komponen label bahwa tombol 1 ditekan atau
tombol 2 ditekan ketikan tombol 1 atau tombol 2 pada mikrokontroler di tekan.
Tabel 16 menunjukkan aturan komunikasi penekanan tombol antara
mikrokontroler dengan komputer
Tabel 16. Aturan komunikasi penekanan tombol antara mikrokontroler dengan
komputer
No Tombol ditekan Karakter dikirim Karakter
Keterangan yang
pada
dari
diterima
ditampilkan pada
mikrokontroler
mikrokontroler
oleh
komponen label
komputer aplikasi Delphi
/ laptop
1
Tombol 1
1
1
tombol 1 ditekan
2
Tombol 2
2
2
tombol 1 ditekan

Setelah source code didownloadkan pada mirkokontroller (cara download


pada bagian mikrokontroler dapa dilihat pada video yang terlampir pada CD
folder video)
Saat nya di ujicoba melalui hyperteminal, apakah benar saat tombol 1
ditekan, maka mikrokontroler akan mengirim karakter angka 1 ke komputer/
laptop? Demikian juga untuk tombol 2,apakah ketika ditekan akan mengirim
karakter angka 2

75

Berikut ini adalah hasil uji cobanya :

Gambar 51. Tampilan uji coba penekanan tombol 1 ditampilkan ke Hyperterminal

Gambar 52. Tampilan uji coba penekanan tombol 2 ditampilkan ke Hyperterminal


Setelah ujicoba dengan Hyperterminal berhasil, selanjutnya pembuatan
source code pada aplikasi Delphi yang dipergunakan untuk menampilkan status
tombol yang di tekan pada mikrokontroler. Tabel 17 menunjukkan komponen
yang dipergunakan dalam pembuatan aplikasi

76

Tabel 17. Daftar Komponen aplikasi penghitung tombol ditekan.


No
1
2

Nama komponen
Label1
Button1

Button2

Button3

Comport1

Properties
Caption
Caption
Name
Caption
Name
Caption
Name
-

Value
Tombol ditekan
Open Conn uC
Button1
Cek
Button2
Set port
Button3
-

Susunan komponen pada form adalah sebagai berikut :

Gambar 53. Desain tampilan aplikasi penampil tombol ditekan


Untuk source code nya dapat dilihat pada Tabel 18

77

Tabel 18. Source Code aplikasi penghitung tombol ditekan.


No Nama komponen
Event
Source
1

Comport1

Onrxchar

var datain: String;


begin
ComPort1.ReadStr(datain,
Count);
if datain ='1' then
begin
label1.Caption:='Tombol 1
ditekan'
end
else

Button1

Button3

if datain ='2' then


begin
label1.Caption:='Tombol 2
ditekan'
end
end
if ComPort1.Connected then
begin
ComPort1.Close;
button1.Caption:='Open
Conn uC';
end
else
begin
ComPort1.Open;
button1.Caption:='Close
Conn uC';
end;
comport1.ShowSetupDialog;

78

Hasil eksekusi program nya adalah sebagai berikut:

Gambar 54. Uji aplikasi penampil tombol ditekan


Ujicoba nya adalah sebagai berikut :

Gambar 55. Uji aplikasi penampil tombol ditekan koneksi sukses

Gambar 56. Uji aplikasi penampil tombol ditekan

79

Gambar 57. Uji aplikasi penampil tombol ditekan

80

D. Kegiatan Belajar 9
1.

Kegiatan Belajar 9 : Menghitung dan menampilkan jumlah berapa kali

tombol pada mikrokontroler ditekan ditampilkan pada form aplikasi yang


dibangun dengan Delphi 7
Tujuan Pembelajaran 9 :
Setelah mendapatkan materi Menghitung dan menampilkan jumlah berapa kali
tombol pada mikrokontroler ditekan ditampilkan pada form aplikasi yang
dibangun dengan Delphi 7diharapkan peserta didik dapat:
a) Mengenal tentang konsep Menghitung dan menampilkan jumlah berapa kali
tombol pada mikrokontroler ditekan ditampilkan pada form aplikasi yang
dibangun dengan Delphi 7
b) Memprogram Menghitung dan menampilkan jumlah berapa kali tombol pada
mikrokontroler ditekan ditampilkan pada form aplikasi yang dibangun dengan
Delphi 7 dengan bahasa pemrograman basic pada sisi mikrokontroler.
c) Membangun aplikasi Menghitung dan menampilkan jumlah berapa kali tombol
pada mikrokontroler ditekan ditampilkan pada form aplikasi yang dibangun
dengan Delphi 7 dengan bahasa pemrograman pascal pada sisi komputer.
2. Uraian Materi 9
Menghitung dan menampilkan
mikrokontroler ditekan

jumlah

berapa

kali

tombol

pada

Contoh aplikasi ini merupakan pengembangan selanjutnya dari bagian


yang berjudul Tombol input mikrokontroller ditampilkan pada form aplikasi
yang dibangun dengan Delphi 7, dimana pada bagian tersebut tombol ditekan
hanya ditampilkan keterangan pada aplikasi Delphi yang dibuat, sedangkan pada
bagian ini, setiap kali tombol 1 ditekan, maka pada aplikasi delphi yang dibuat
akan di tampilkan keterangan tentang berapa kali tombol 1 sudah ditekan.Begitu
pula dengan tombol 2 , jika tombol 2 ditekan, maka pada aplikasi delphi yang
dibuat akan di tampilkan keterangan tentang berapa kali tombol 2 sudah ditekan.
Source code pada bagian mikrokontroler sama dengan source code pada
bagian yang berjudul Tombol input mikrokontroller ditampilkan pada form
aplikasi yang dibangun dengan Delphi 7, sedangkan source code pada aplikasi

81

komputer yang dibuat dengan Delphi akan di modifikasi dengan menambahkan


komponen tambahan dan sedikit tambahan source code sebagai pencacah berapa
kali jumlah tombol sudah ditekan.
Berikut ini adalah tambahan komponen yang ditambahkan ke form pada
aplikasi Tombol input mikrokontroller ditampilkan pada form aplikasi yang
dibangun dengan Delphi 7,
Tabel 19. Komponen tambahan penghitung jumlah tombol ditekan.
No Nama komponen
Properties
Value
1
Label2
Caption
Tombol 2 ditekan
2
Label1
Caption
Tombol 1 ditekan

sedangkan tampilannya adalah sebagai berikut :

Gambar 58. Desain tampilan penghitung jumlah tombol ditekan


NB :
Jangan lupa deklarasikan 2 buah variable global tekan1 dan tekan2 dengan tipe
integer sebagaimana Gambar 59 berikut :

82

Gambar 59. Deklarasi Variabel Global


Selanjutnya Source code nya dapat dilihat pada Tabel 20.

83

Tabel 20. Source code penghitung jumlah tombol ditekan.


No Nama
event
Source
komponen
1
Comport1 onrxchar var datain: String;
begin
ComPort1.ReadStr(datain, Count);
if datain =1 then
begin
inc(tekan1);
label1.Caption:=Tombol 1 ditekan sebanyak = +
inttostr(tekan1) + kali;
end
else
if datain =2 then
begin
inc(tekan2);
label2.Caption:=Tombol 2 ditekan sebanyak = +
inttostr(tekan2) + kali;
end
end;
2
Button1
Onclick if ComPort1.Connected then
begin
ComPort1.Close;
button1.Caption:=Open Conn uC;
end
else
begin
ComPort1.Open;
button1.Caption:=Close Conn uC;
end;
4
Button3
Onclick comport1.ShowSetupDialog;
5

Form

On
create

tekan1:=0;
tekan2:=0;

Hasil eksekusi program nya adalah sebagai berikut :

84

Gambar 60. Uji aplikasi penampil tombol ditekan saat penekanan tombol
Test koneksi suksesnya sebagai berikut :

Gambar 61. Uji aplikasi penampil tombol ditekan saat test koneksi

Gambar 62. Uji aplikasi penampil tombol ditekan saat tombol 1 ditekan

85

Gambar 63. Uji aplikasi penampil tombol ditekan saat tombol 2 ditekan

Gambar 64. Uji aplikasi penampil tombol ditekan, saat tombol 2 ditekan 2 kali

86

Kegiatan Belajar 10
1. Kegiatan Belajar 10 : Konsep Real Time Clock
Tujuan Pembelajaran 10 :
Setelah mendapatkan materi Real Time Clock diharapkan perseta didik dapat:
a)

Mengenal tentang konsep Real Time Clock pada mikrokontroler

b) Memprogram Real Time Clock dengan bahasa pemrograman BASIC


c)

Menjalankan program secara simulasi dan mendownloadkan program


kedalam IC AT Mega 40 pin dengan USBasp untuk konsep Real Time Clock.

2. Uraian Materi 10
a. Real Time Clock
DS1307 merupakan IC Real Time Clock (RTC) yang dapat diakses dengan
mikrokontroler menggunakan komunikasi serial I2C. Berikut ini saya berikan
contoh untuk menampilkan RTC DS1307 pada LCD dan Hyperterminal
menggunakan BASCOM-AVR. Dengan adanya RTC ini maka kita dapat
menampilkan waktu yang berupa Jam, Menit, Detik serta tanggal yaitu hari, bulan
dan tahun.

Gambar 65. Bentuk Fisik IC DS 1307


Tujuan pembelajaran siswa dapat mengerti dan memahami konsep tentang
Real Time Clock. Sehingga siswa diharapkan dapat memprogram dengan
menggunakan BASCOM dan mensimulasikan program tersebut di Proteus serta
eksekusi ke Hardware Trainer Mikrokontroler AT Mega 40 pin
Untuk mempelajari tentang rangkaian pada mikrokontroler AT Mega 40 pin
tentang konsep RTC, maka pada gambar 66 di bawah ini telah diperlihatkan
rangkaiannya. Pada rangkaian dibawah ini terlihat untuk konsep RTC terdiri dari

87

beberapa komponen yaitu Sistem Minimum, LCD, IC DS1307, Komunikasi serial.


Contoh program 1 dan 2 merupakan contoh pengaksesan jam digital secara
langsung menggunakan komunikasi i2c antara mirkontroler dengan ic ds 1307.
Sedangkan Komunikasi serial dalam RTC ini berfungsi sebagai pengatur jam,
menit dan detik dengan PC. Jadi apabila kita akan merubah waktu, kita dapat
mengubahnya dengan menggunakan PC yang dikomunikasikan secara serial.

Gambar 66. Sistem Minimum dengan RTC dan Rangkaian komunikasi serial

88

a.

Program 1. Jam digital dengan RTC dengan IC DS 1307


'program RTC01.BAS
'
$regfile = "m16def.dat"
$crystal = 12000000
Dim Weekday As Byte
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Config Date = Dmy , Separator = /' setup format tanggal + deklarasi
variabel
Config Clock = User
' untuk aktivasi pemanggilan GetDateTime otomatis
' konfigurasi bus I2C
Config Scl = Portc.0
' jalur untuk clock I2C
Config Sda = Portc.1
' jalur untuk data I2C
'------------------------------------------' perintah penulisan
Const Ds1307w = &HD0
' perintah pembacaan
Const Ds1307r = &HD1
'------------------------------------------Cls
Cursor Off
Locate 1 , 3
Lcd "DS1307 demo!"
Wait 1
'------------------------------------------Cls
Do
' jalankan setiap saat 1 detik sekali
Locate 1 , 2
Lcd Time$
Locate 2 , 2
Lcd Date$
Wait 1
' tunggu 1 detik
Loop
'------------------------------------------End

89

Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Ack
I2crbyte Weekday , Ack
I2crbyte _day , Ack
I2crbyte _month , Ack
I2crbyte _year , Nack
I2cstop
_sec = Makedec(_sec)
_min = Makedec(_min)
_hour = Makedec(_hour)
_day = Makedec(_day)
_month = Makedec(_month)
_year = Makedec(_year)
Return

' _sec sdh otomatis terdefinisi

b. Program 2. Jam digital dengan RTC dengan IC DS 1307 (Alternatif)


'program RTC02.BAS
$regfile = "m16def.dat"
$crystal = 12000000
Dim Weekday As Byte
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Config Date = Dmy , Separator = / 'setup format tanggal + deklarasi variabel
Config Clock = User
' untuk aktivasi pemanggilan GetDateTime otomatis
Declare Sub Baca_waktu
'-----------------------------------------' konfigurasi bus I2C
Config Scl = Portc.0
' jalur untuk clock I2C
Config Sda = Portc.1
' jalur untuk data I2C
'------------------------------------------' perintah penulisan
Const Ds1307w = &HD0
' perintah pembacaan
Const Ds1307r = &HD1
'------------------------------------------Cls
Locate 1 , 3
Lcd "DS1307 demo!"
Date$ = "01/01/10"
Time$ = "00:00:00"
Wait 1
Cls

90

Do

' jalankan setiap saat 1 detik sekali


Locate 1 , 2
Lcd Time$
Locate 2 , 2
Lcd Date$
Wait 1
Loop

' tunggu 1 detik

End
Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
' _sec sdh otomatis terdefinisi
I2crbyte _min , Ack
I2crbyte _hour , Ack
I2crbyte Weekday , Ack
I2crbyte _day , Ack
I2crbyte _month , Ack
I2crbyte _year , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart
' Generate start code
I2cwbyte Ds1307w
' send address
I2cwbyte 4
' starting address in 1307
I2cwbyte _day
' Send Data to SECONDS
I2cwbyte _month
' MINUTES
I2cwbyte _year
' Hours
I2cstop
Return
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart
' Generate start
code
I2cwbyte Ds1307w
' send address
I2cwbyte 0
' starting
address in 1307
I2cwbyte _sec
' Send Data to
SECONDS
I2cwbyte _min
' MINUTES
I2cwbyte _hour
' Hours
I2cstop
Return

91

BAB III
EVALUASI DAN JAWABAN SOAL
A. Soal Evaluasi
1.

Sebutkan 2 tipe mikrokontroler yang berkembang pada saat ini!

2.

Sebutkan 4 keluarga dari mikrokontroler AVR!

3.

Sebutkan jenis mikrokontroler pada keluarga ATmega!

4.

Sebutkan dan jelaskan fungsi dari fitur - fitur yang dimiliki oleh AT Mega 40
pin !

5.

Tuliskanlah nama dari pin AT Mega 40 pin dibawah ini!

6.

Jelaskan dan sebutkan alur dalam pemrograman mikrokontroler!

7.

Sebutkan macam-macam bahasa pemrograman yang anda ketahui!

8.

Jelaskan apa yang dimaksud dengancompiler?

9.

Jelaskan langkah-langkah mensimulasikan program secara simulasi dengan


Proteus!

10. Jelaskan mengapa setiap IC perlu di setting fuse and locks bits!
92

B. Soal Evaluasi Program


1. Jelaskan gambar dibawah ini!

2. Jelaskan fungsi program dibawah ini!


$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
3. Jelaskan fungsi program dibawah ini!
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
4. Jelaskan fungsi program dibawah ini!
Data_adc = Getadc(0)
Adc_convert = Data_adc
Adc_convert = Adc_convert / 1024
Adc_convert = Adc_convert * 5
Adc_string = Fusing(adc_convert , "#.##")
5. Jelaskan fungsi program dibawah ini!
$baud = 9600
Print "Tekan sembarang tombol pada keyboard!"
Tombol = Waitkey()
Print "Tombol yang anda tekan :"
Print Chr(tombol)

93

Jawaban Soal Latihan


Kegiatan Belajar 2
1. Buatlah program menyalakan LED berkedip !
2. Buatlah program menyalakan LED dengan penyalaan dari tengah ke tepi!
Jawab :
1.

Program menyalakan LED berkedip :

$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output Port B digunanakan sebagai Output
Port_led Alias Portb
Do
Port_led = 255 'atau &B11111111
Wait 1
Port_led = 0 'atau &B00000000
Wait 1
Loop
2.

Program menyalakan LED dengan penyalaan dari tengah ke tepi:

$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
Do
Port_led = &B00011000
Waitms 300
Port_led = &B00111100
Waitms 300
Port_led = &B01111110
Waitms 300
Port_led = &B11111111
Loop

Kegiatan Belajar 3
1.
Buatlah program apabila Int0/1 ditekan maka akan ditampilkan di LCD
Jawab :
1.

Program apabila Int0/1 ditekan maka akan ditampilkan di LCD :

$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
94

Config Pind.2 = Input


Config Pind.3 = Input
On Int0 Int_ext0
On Int1 Int_ext1
Config Int0 = Falling
Config Int1 = Falling
Enable Int0
Enable Int1
Enable Interrupts

Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 =


Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls
Locate 1 , 2
Lcd "Program"
Locate 2 , 4
Lcd "Interupsi"
Int_ext0:
Cls
Locate 1 , 2
Lcd "Int0"
Locate 2 , 4
Lcd "Ditekan"
Return
Int_ext1:
Cls
Locate 1 , 2
Lcd "Int1"
Locate 2 , 4
Lcd "Ditekan"
Return

Kegiatan Belajar 4
1.
Buatlah program untuk menampilkan input tombol yang ditekan pada
LCD!
2.
Buatlah program sensor suhu jika suhu > 45oC maka buzzer PortA.7 akan
aktif!
3.
Buatlah program sensor cahaya (LDR) jika keadaan gelap maka akan
mengaktifkan relay PortA.6 untuk mengaktifkan lampu.
95

Jawab :
1.
Program untuk menampilkan input tombol yang ditekan pada LCD:
$regfile = "m16def.dat"
$crystal = 12000000
Dim X As Byte
Config Portb = Output
Config Portd = Input
Tombol1 Alias &B11101111
Tombol2 Alias &B11011111
Tombol3 Alias &B10111111
Tombol4 Alias &B01111111
Hasil Alias Portb
Masukan Alias Pind
Portd = 255
' menghidupkan LED berdasar penekanan push button di PORTD
Do
X = Masukan
Select Case X
Case Tombol1 : cls
Locate 1 , 1
Lcd "Tombol 1 ditekan"
Case Tombol2 : cls
Locate 1 , 1
Lcd "Tombol 2 ditekan"
Case Tombol3 : cls
Locate 1 , 1
Lcd "Tombol 3 ditekan"
Case Tombol4 : cls
Locate 1 , 1
Lcd "Tombol 4 ditekan"
End Select
Loop
2.
Program sensor suhu jika suhu > 45C maka buzzer PortA.7 akan aktif :
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 =
Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Config PortA.7 = Output
Dim Data_adc As Word , Adc_convert As Single , Adc_string As
String * 10
Start Adc
96

Cursor Off
Locate 1 , 2
Lcd "Sensor Suhu :"
Locate 2 , 2
Lcd "Suhu sekarang"
Wait 1
Cls
Do
Data_adc = Getadc(2)
Adc_convert = Data_adc
Adc_convert = Adc_convert / 1024
Adc_convert = Adc_convert * 500
Adc_string = Fusing(adc_convert , "#.##")
Locate 1 , 1
Lcd "Data Suhu:"
Locate 2 , 2
Lcd Adc_string
If Adc_convert > 45 then
PortA.7 = 1
Waitms 200
Loop
3.
Program sensor cahaya (LDR) jika keadaan gelap maka akan
mengaktifkan relay PortA.6
untuk mengaktifkan lampu:
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 =
Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Config PortA.6 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim Data_adc As Word , Adc_convert As Single , Adc_string As
String * 10
Cursor Off
Cls
Locate 1 , 1
Lcd "Data ADC (volt):"
Do
Data_adc = Getadc(0)
Adc_convert = Data_adc
Adc_string = Fusing(adc_convert , "#.##")
Locate 2 , 6
Lcd Adc_string ; " "
97

If Adc_convert <200 then


PortA.6 = 1
Waitms 200
Loop
Kegiatan Belajar 5
1. Buatlah program komunikasi serial untuk mengaktifkan relay dan buzzer
Jawab :
1.

Program komunikasi serial untuk mengaktifkan relay dan buzzer:

$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600
Config PortA.6 = Output
Config PortA.7 = Output
Portb = &H00
Dim Tombol As Byte
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 =
Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Locate 1 , 1
Lcd "Test Serial"
Locate 2 , 1
Lcd "Communication OK"
Print "Tekan sembarang tombol pada keyboard!"
Do
Tombol = Waitkey()
Print "Tombol yang anda tekan :"
Print Chr(tombol)
Select Case Tombol
Case "1" : PortA.6 = 1
Case "2" : PortA.6 = 0
Case "3" : PortA.7 = 1
Case "4" : PortA.7 = 0
End Select
Loop

Jawaban Soal LEMBAR EVALUASI:


A.
Soal Evaluasi
1. Sebutkan 2 tipe mikrokontroler yang berkembang pada saat ini!
2. Sebutkan 4 keluarga dari mikrokontroler AVR!
3. Sebutkan jenis mikrokontroler pada keluarga ATmega!

98

4. Sebutkan dan jelaskan fungsi dari fitur fitur yang dimiliki oleh AT Mega 40
pin !
5. Tuliskanlah nama dari pin AT Mega 40 pin dibawah ini!

AT Mega
40 pin

6. Jelaskan dan sebutkan alur dalam pemrograman mikrokontroler!


7. Sebutkan macam-macam bahasa pemrograman yang anda ketahui!
8. Jelaskan apa yang dimaksud dengan compiler?
9. Jelaskan langkah-langkah mensimulasikan program secara simulasi dengan
Proteus!
10. Jelaskan mengapa setiap IC perlu di setting fuse and locks bits

Jawaban :
1.
Ada 2 jenis mikrokontroler yang berkembang saat ini, yaitu tipe CISC dan
RISC. Hal ini didasarkan pada arsitektur processor dan set intruksinya. Sebagai
contoh MCS51 (AT89S51/52) merupakan tipe CISC yang memerlukan 12 siklus
clock untuk melaksanakan satu siklus instruksi. Tipe AVR (Alf and Vegards Risc
processor) yang merupakan jenis RISC, hanya perlu 1 siklus saja, sehingga jelas
lebih cepat waktu eksekusinya.
99

2.
Mikrokontroler AVR dikelompokkan menjadi 4 group : keluarga
AT90SXX, keluarga ATmega, keluarga ATtiny dan keluarga AT89RFXX. Tidak
ada perbedaan mendasar pada keempatnya, baik arsitektur maupun instruksinya.
Kapasitas memori, peripheral, dan fungsi adalah yang menjadikan masing-masing
keluarga AVR memiliki keunikan sendiri.
3.
AT Mega 8, AT Mega 8535, AT Mega 16, AT Mega 32, AT Mega 328,
AT Mega 128, AT Mega 64 dan sebagainya
4.
Fitur AT Mega 16 :
a.
Port I/O 32 jalur (Port A,B,C,D masing-masing 8 bit)
b.
ADC (Analog Digital Converter)
c.
Timer / counter
d.
Osilator
e.
Flash PEROM
f.
EEPROM
g.
SRAM
h.
Interupsi Eksternal dan Internal
i.
Port USART untuk komunikasi serial
5.
Nama dari pin AT Mega 40 pin :

6.

Alur Pemrograman Mikrokontroler

100

7.
Pemrogramman Mikokontroller dengan bahasa Assembly, Basic dan C,
sebagai tambahan dapat pula dengan bahasa pascal.
8.
Compiler : Program komputer yang menerjemahkan program yang ditulis
dalam bahasa pemrograman tingkat tinggi (semacam bahasa Pascal, C, BASIC)
menjadi bahasa mesin, biasanya dengan bahasa Assembly sebagai perantara.
9.
Cara Mensimulasikan Program Di Proteus
1.
Membuat Rangkaian Simulasi
2.
Mendownload Program ke IC AT Mega 40 pin di Proteus
Untuk mendownloadkan program kedalam IC maka hal yang harus dilakukan
adalah double klik IC AT Mega 40 pin , sehingga akan terlihat tampilan pada
gambar

3.
Memilih program File *.HEX
Setelah terlihat jendela seperti gambar diatas maka klik pada gambar folder
yang telah diberikan petunjuk pada gambar diatas maka jendela akan tampil
101

seperti gambar dibawah ini. Pilih dan carilah program yang anda simpan di folder
dengan format File.hex, setelah itu klik Open.

4.
Menjalankan Simulasi di Proteus
Jika pada proses download program secara simulasi selesai maka, langkah
selanjutnya adalah menjalankan program tersebut. Cara untuk menjalankan
program tersebut adalah mengklik tombol dibawah ini yang sudah diberikan
tanda.

10.
Proses setting Fuse Bit pada AT Mega 40 pin bertujuan untuk
menyamakan clock eksternal AT Mega 40 pin dengan menggunakan Crystal, hal
102

tersebut bertujuan untuk proses pengolahan program pada mikrokontroler atau


sering disebut (Machine Siclus). Setting Fuses and Lock Bits sangat perlu
dilakukan jika kita menggunakan eksternal clock.

B.
1.

Soal Evaluasi Program


Jelaskan gambar dibawah ini!

2.

Jelaskan fungsi program dibawah ini!

$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb
3.
Jelaskan fungsi program dibawah ini!
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 =
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
4.

Jelaskan fungsi program dibawah ini!

Data_adc = Getadc(0)
Adc_convert = Data_adc
Adc_convert = Adc_convert / 1024
Adc_convert = Adc_convert * 5
Adc_string = Fusing(adc_convert , "#.##")
103

5.

Jelaskan fungsi program dibawah ini!

$baud = 9600
Print "Tekan sembarang tombol pada keyboard!"
Tombol = Waitkey()
Print "Tombol yang anda tekan :"
Print Chr(tombol)
Jawab
1.
Arti dari gambar tersebut adalah :

Gambar sebelah kiri adalah rangkaian LED yang dirangkai secara Common
Anoda dimana untuk menyalakan / mengaktifkan LED dilakukan dengan
memberikan logika Low pada kaki Katoda , apabila ingin memadamkan /
menonaktifkan LED dilakukan dengan memberikan logika High pada kaki
Katoda.
Gambar sebelah kanan adalah rangkaian LED yang dirangkai secara Common
Katoda dimana untuk menyalakan / mengaktifkan LED dilakukan dengan
memberikan logika High pada kaki Anoda , apabila ingin memadamkan /
menonaktifkan LED dilakukan dengan memberikan logika Low pada kaki Anoda.
2.
Arti dari baris program :
$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Port_led Alias Portb

104

Adalah sebagai berikut :


$regfile = "m16def.dat" Mikrokontroler yang dipergunakan adalah ATMega 16
$crystal = 12000000 Crystal yang dipergunakan adalah 12MegaHertz
Config Portb = Output Konfigurasi PortBsebagai Output
Port_led Alias Portb nama lain dari PORTB adalah Port_led

3.
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7
=
Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Merupakan Konfigurasi Program Untuk Akses LCD 16*2, dimana :
Pin Db4 LCD terkoneksi pada Portc.5
Pin Db5 LCD terkoneksi pada Portc.4
Pin Db6 LCD terkoneksi pada Portc.3
Pin Db7 LCD terkoneksi pada Portc.2
PinE LCD terkoneksi pada Portc.6
Pin Rs LCD terkoneksi pada Portc.7
4.
Fungsi Program
Data_adc = Getadc(0)
Adc_convert = Data_adc
Adc_convert = Adc_convert / 1024
Adc_convert = Adc_convert * 5
Adc_string = Fusing(adc_convert , "#.##")
Adalah untuk membaca data sensor suhu yang terpasang pada ADC channel 0
(Pin A.0)
Rumus :
Adc_convert = Adc_convert / 1024
Adc_convert = Adc_convert * 5
Berfungsi untuk mengubah hasil pembacaan sensor berupa teganan keluaran
sensor suhu menjadi nilai sensor suhu yang tepat ,
Bagian Adc_string = Fusing(adc_convert , "#.##") untuk mengubah data suhu
dalam bentuk data string dengan 2 karakter di belakang koma.
5.
Fungsi Program :
$baud = 9600
Print "Tekan sembarang tombol pada keyboard!"
Tombol = Waitkey()
Print "Tombol yang anda tekan :"
Print Chr(tombol)
105

Adalah untuk komunikasi serial antara PC dengan mikrokontroler.


dimana $baud = 9600 baudrate yang dipergunakan dalam komunikasi serial
adalah 9600 bit per sekon,
Print "Tekan sembarang tombol pada keyboard!" Mikrokontroler akan
mengirim kan tulisan Tekan sembarang tombol pada keyboard!
Tombol = Waitkey() Mikrokontroler menunggu untuk menangkap data hingga
ada tombol pada keyboard PC yang ditekan.
Print "Tombol yang anda tekan :"
Print Chr(tombol)
jika tombol pada keyboard sudah ditekan maka mikrokontroler akan mengirim
data ke ke PC berupa karakter Tombol yang anda tekan : digabung dengan
kode ASCII tombol pada keyboard.

106

BAB IV
PENUTUP
Demikian modul ini dibuat semoga dapat bermanfaat untuk proses
pembelajaran "Pemrograman Mikrokontroler AT Mega 40 pin dengan Bascom
AVR ". Tak ada gading yang tak retak itulah pepatah yang tepat untuk modul ini
yang masih jauh dari harapan. Penulis menyadari sepenuhnya bahwa tidak ada
karya manusia yang sempurna, untuk itu jika ada kritik, saran, pertanyaan dan
sebagainya mohon dikirimkan ke alamat email : taufiksanjaya@yahoo.com
Sekian dan terimakasih.
Semoga bermanfaat,

107

DAFTAR PUSTAKA
Afrie, Setiawan. (2011). 20 Aplikasi Mikrokontroler ATMEGA8535,ATMEGA16
menggunakan BASCOM-AVR. Yogyakarta: ANDI Offset.
Eko. P ,Agfianto. (2002). Belajar Mikrokontroler AT89C51/52/55 Teori dan
Aplikasi. Yogyakarta : Penerbit Gava Media.
Wardana Lingga (2006). Belajar Sendiri Microcontroller AVR seri AT Mega
8535. Yogyakarta : ANDI Offset.
Widodo Budiharto dan Gamayel Rizal. (2007). 12 Proyek Mikrokontroler
untuk Pemula. Jakarta: Elex Media Komputindo.

108

Anda mungkin juga menyukai