Guidline Project

76
GUIDLINE PROJECT AVR with CodevisionAVR - Microcontroller AVR ATMega8535 - CodeVision AVR - Interface (Parallel, Serial, USB) - Example : ADC measurement - Example : LCD - Example : Timer and Servo (PWM) - Delphi 7 “Niscaya Allah akan meninggikan derajat orang-orang yg beriman di antara kamu dan orang-orang yg diberi ilmu pengetahuan beberapa derajat. Dan Allah Maha Mengetahui apa yg kamu kerjakan.” QS Al-Mujaadalah ayat 11 http://devinurtsyani.wordpress.com

description

microcontroller avr guideline

Transcript of Guidline Project

Page 1: Guidline Project

GUIDLINE PROJECT AVR with CodevisionAVR

- Microcontroller AVR ATMega8535 - CodeVision AVR - Interface (Parallel, Serial, USB) - Example : ADC measurement - Example : LCD - Example : Timer and Servo (PWM) - Delphi 7

“Niscaya Allah akan meninggikan derajat orang-orang yg beriman di antara kamu

dan orang-orang yg diberi ilmu pengetahuan beberapa derajat. Dan Allah Maha

Mengetahui apa yg kamu kerjakan.” QS Al-Mujaadalah ayat 11

http://devinurtsyani.wordpress.com

Page 2: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

2

Pengantar

Saya bukanlah orang yang sangat ahli dalam bidang mikokontroller, saya hanyalah orang

yang mengerti dan kebetulan bisa menyisihkan waktu saya untuk menyusun buku ini.

Harapan saya adalah agar setiap orang di negara ini bisa mendapatkan ilmu teknologi

secara gratis dan mudah, sehingga kita bisa mengejar ketertinggalan kita dengan bangsa

lain, dan yang terpenting dengan teknologi tersebut kita bisa lebih mensejahterakan

bangsa ini.

Buku ini merupakan konsep dasar dan juga buku pegangan awal untuk memahami

mikrokontroller. Setelah Anda dapat memahami konsepnya diharapkan Anda dapat

membuat berbagai macam implementasi teknologi yang juga dapat bermanfaat bagi

lingkungan di sekitar Anda.

“Sebaik – baiknya manusia adalah yang selalu memberi manfaat kepada manusia lain”.

( HR. Muttafagun Alaih )

Mari kita perhatikan sekeliling kita, amati masalahnya lalu bertindak. Bangsa ini sangat

besar, butuh banyak orang untuk memajukannya, dan itu dimulai dari diri kita sendiri.

Mulailah saat ini juga.

Selamat Belajar.

Penulis

Bandung, 27 April 2010

Page 3: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

3

DAFTAR ISI (biar dibaca dan dibuka, silahkan cari halamannya sendiri)

Pengenalan Hal

BAB 1 PROGRAMMER AVR …………………………………………………….. 5

Skematik STK200 …………………………………………………….. 6

STK500 …………………………………………………….. 8

BAB 2 MIKROKONTROLLER AVR …………………………………………………….. 12

Deskripsi pin …………………………………………………….. 13

Binary …………………………………………………….. 14

Register …………………………………………………….. 15

BAB 3 CODEVISION AVR …………………………………………………….. 17

CodeWizard …………………………………………………….. 18

Pengenalan bahasa C …………………………………………………….. 23

BAB 4 LATIHAN PROGRAM …………………………………………………….. 39

Program 1 : output …………………………………………………….. 40

Setting chip programmer …………………………………………………….. 44

Cara compile program …………………………………………………….. 44

Program 4: In-Out Dipswitch …………………………………………………….. 48

Program 5: ADC …………………………………………………….. 49

Program 6: ADC to LCD …………………………………………………….. 52

Program 7: PWM …………………………………………………….. 55

BAB 5 ANTARMUKA PC …………………………………………………….. 57

Paralel …………………………………………………….. 58

Serial RS232 …………………………………………………….. 59

RS232 Data Transmission …………………………………………………….. 61

BAB 6 DELPHI …………………………………………………….. 63

Page 4: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

4

PENGENALAN Apa aja yang akan dibahas dalam buku ini…..

Buku ini disusun sebagai panduan praktis dalam mengerjakan proyek instrumentasi

(seperti Tugas Akhir atau proyek lainnya). Karena itu akan banyak sekali contoh program

dan minim pembahasan. Tapi, di setiap bab disertakan referensi lain untuk digunakan

sebagai belajar tambahan ataupun sebagai pematangan konsep. Supaya lebih mudah

dicerna maka bahasa penulisannya pun non-formal.

Pada bab awal ini akan dijelaskan secara singkat isi dari buku keseluruhan.

MIKROKONROLLER

Pertanyaan yang sering muncul begitu mendengar kata mikrokontroller ialah,

Apa bedanya dengan microprocessor ?

Jawaban simplenya, mikrokontroller lebih lengkap. Karena memiliki fitur tambahan

terutama input-output, tapi kapasitas memori yang terbatas 8K atau 16K. Sedangkan

microprocessor memorinya besar tapi tidak memiliki fitur input output, jadi kalau mau

dipake harus menambah banyak ic. Oleh karena itu mikrokontroller lebih sering

digunakan untuk proyek system embedded dan microprocessor digunakan pada PC

computer, karena harus mengolah banyak data.

Kapan harus pakai mikrokontroller ?

Ketika semua rangkaian analog dan IC (Integrated Circuit) tak mampu lagi menangani

tujuan circuit yang kita mau. Atau rangkaian analog terlalu rumit, jadi jauh lebih mudah

menggunakan mikrokontroller.

Ada banyak jenis mikrokontroller. Tiap jenis namanya beda bergantung dari pabriknya,

system pengoperasiannya pun beda, fiturnya juga beda-beda. Cara terbaik untuk

mengenal mikrokontroller yang digunakan ialah dengan membaca datasheet. Walaupun

tiap mikrokontroller berbeda tapi ada satu kunci untuk mengetahui semuanya. Di modul

ini akan diberikan konsep itu.

ANTARMUKA

Atau disebut juga Interface merupakan bagian penting yang harus dipelajari. Ini seperti

-Hubungan Luar Negri- buat mikrokontroller (atau device lain). Akan ada banyak

protocol, sama seperti kalau mau keluar negri ga bisa langsung terbang naik pesawat, tapi

harus buat passport dulu, ngisi prosedur pembuatan passport dan visa, prosedurnya pun

beda-beda tergantung negara dan juga tujuan kesana. Nah, sama halnya dengan

antarmuka computer, mikrokontroller.

Kalau dari computer ada tipe parallel, serial (RS232), dan USB. Paralel : lebih mudah

prosedurnya hanya saja tidak bisa jarak jauh (panjang kabel terbatas), Serial : bisa lebih

panjang dari parallel hanya saja perlu program tambahan, dan transfer datanya lebih

lambat dari parallel (soalnya ngantri), USB : paling susah secara hardware dan juga

software (atau beli USB to serial). Di modul ini akan dibahas ketiganya, tapi akan lebih

fokus ke serial.

Page 5: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

5

BAB 1 PROGRAMMER AVR

Pertama kita akan membahas tentang programmer avr atau banyak yang bilang

downloader avr. Gunanya untuk memasukkan program yang kita buat kedalam

mikrokontroller. Bisa melalui jalur parallel atau USB. Bisa beli atau bikin sendiri. Nah,

dalam buku ini saya akan bahas programmer yang bisa kita buat sendiri.

Ada dua jenis programmer yang sering dibuat orang, pertama STK200 dan yang

kedua AVR USB atau STK500. Perbedaannya STK 200 melalui jalur parallel, sedangkan

STK500 lewat jalur USB. Untuk yang menggunakan laptop tentunya cenderung memilih

STK500, tapi sayangnya rangkaian yang dibuat seringnya tidak konsisten dalam

mendownload program (kadang bisa kadang nggak) . Kelebihan STK200 jauh lebih cepat

(proses download program) dan stabil tapi masalahnya jalurnya parallel DB25, jadi hanya

bisa digunakan untuk PC.

STK200

Pertama-tama saya jelaskan tentang cara pembuatan STK200. Skematiknya ada di

http://www.lancos.com/prog.html saya sertakan juga di halaman berikutnya.

Gambar diatas tu rangkaian STK200 hasil bikin sendiri. Saya buat dua tingkat

(bisa pake spacer tuk tiangnya). PCB tingkat satu rangkaian STK200, sedangkan tingkat

dua (yang ada texttool hijau) adalah rangkaian minimum mikrokontroller AVR.

Page 6: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

6

Page 7: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

7

VCC 5 volt, ini sama dengan VDD pada rangkaian STK200. XTAL adalah Kristal

yang nilai frekuensinya terserah (tinggal pilih dari 3-16 MHz), kalau saya biasa pake

yang 11.0592 MHz. Semakin tinggi nilai Kristal maka semakin cepat proses eksekusi

programnya, tapi akan ada efeknya seperti noise, tapi sejauh ini saya belum pernah

mengalami masalah jadi amanlah klo pake nilai segitu.

Untuk kapasitor yang di Kristal pakai yang nonpolar, sedangkan tuk di deket

tombol reset pakai yang polar 10 volt atau kalau ga ada yang 16 volt pun taka pa (asal tak

kurang dari 5 volt karena tegangan yang lewat disitu kisaran 5 volt)

Selamat mencoba!!!

Page 8: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

8

STK500 Nah, programmer berikutnya yang bisa kita buat sendiri adalah ini STK 500. Linknya

http://www.fischl.de/usbasp/

Klo tadi di STK200 kita hanya menambahkan IC buffer 74HC244, klo disini kita

harus menambahkan mikrokontroller ATMEga48 atau ATMega8. Oh iya, ni ada

keterangan dari web nya (baca di readme-diweb-)

=============================================================== This is the README file for USBasp.

USBasp is a USB in-circuit programmer for Atmel AVR controllers. It

simply

consists of an ATMega48 or an ATMega8 and a couple of passive

components.

The programmer uses a firmware-only USB driver, no special USB

controller

is needed.

Features:

- Works under multiple platforms. Linux, Mac OS X and Windows are

tested.

- No special controllers or smd components are needed.

- Programming speed is up to 5kBytes/sec.

- SCK option to support targets with low clock speed (< 1,5MHz).

- Planned: serial interface to target (e.g. for debugging).

LICENSE

USBasp is distributed under the terms and conditions of the GNU GPL

version

2 (see "firmware/usbdrv/License.txt" for details).

USBasp is built with AVR USB driver by OBJECTIVE DEVELOPMENT GmbH. See

"firmware/usbdrv/" for further information.

LIMITATIONS

Hardware:

Page 9: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

9

This package includes a circuit diagram. This circuit can only be used

for

programming 5V target systems. For other systems a level converter is

needed.

Firmware:

The firmware dosn't support USB Suspend Mode. A bidirectional serial

interface to slave exists in hardware but the firmware doesn't support

it yet.

USE PRECOMPILED VERSION

Firmware:

Flash "bin/firmware/usbasp.atmega48.xxxx-xx-xx.hex" or

"bin/firmware/usbasp.atmega8.xxxx-xx-xx.hex" to the used controller

with a

working programmer (e.g. with avrdude, uisp, ...). Set jumper J2 to

activate

USBasp firmware update function.

You have to change the fuse bits for external crystal (see "make

fuses").

# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef

# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff

Windows:

Start Windows and connect USBasp to the system. When Windows asks for a

driver, choose "bin/win-driver". On Win2k and WinXP systems, Windows

will

warn that the driver is is not 'digitally signed'. Ignore this message

and

continue with the installation.

Now you can run avrdude. Examples:

1. Enter terminal mode with an AT90S2313 connected to the programmer:

avrdude -c usbasp -p at90s2313 -t

2. Write main.hex to the flash of an ATmega8:

avrdude -c usbasp -p atmega8 -U flash:w:main.hex

Setting jumpers:

J1 Power target

Supply target with 5V (USB voltage). Be careful with this option,

the

circuit isn't protected against short circuit!

J2 Jumper for firmware upgrade (not self-upgradable)

Set this jumper for flashing the ATMega(4)8 of USBasp with another

working

programmer.

J3 SCK option

If the target clock is lower than 1,5 MHz, you have to set this

jumper.

Then SCK is scaled down from 375 kHz to about 8 kHz.

BUILDING AND INSTALLING FROM SOURCE CODE

Firmware:

To compile the firmware

Page 10: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

10

1. install the GNU toolchain for AVR microcontrollers (avr-gcc, avr-

libc),

2. change directory to firmware/

3. run "make main.hex"

4. flash "main.hex" to the ATMega(4)8. E.g. with uisp or avrdude (check

the Makefile option "make flash"). To flash the firmware you have

to set jumper J2 and connect USBasp to a working programmer.

You have to change the fuse bits for external crystal, (check the

Makefile

option "make fuses").

Software (avrdude):

AVRDUDE supports USBasp since version 5.2.

1. install libusb: http://libusb.sourceforge.net/

2. get latest avrdude release:

http://download.savannah.gnu.org/releases/avrdude/

3. cd avrdude-X.X.X

5. configure to your environment:

./bootstrap (I had to comment out the two if-blocks which verify the

installed versions of autoconf and automake)

./configure

6. compile and install it:

make

make install

Notes on Windows (Cygwin):

Download libusb-win32-device-bin-x.x.x.x.tar.gz from

http://libusb-win32.sourceforge.net/ and unpack it.

-> copy lib/gcc/libusb.a to lib-path

-> copy include/usb.h to include-path

cd avrdude

./configure LDFLAGS="-static" --enable-versioned-doc=no

make

Notes on Darwin/MacOS X:

after "./configure" I had to edit Makefile:

change "avrdude_CPPFLAGS" to "AM_CPPFLAGS"

(why is this needed only on mac? bug in configure.ac?)

FILES IN THE DISTRIBUTION

Readme.txt ...................... The file you are currently reading

firmware ........................ Source code of the controller

firmware

firmware/usbdrv ................. AVR USB driver by Objective

Development

firmware/usbdrv/License.txt ..... Public license for AVR USB driver and

USBasp

circuit ......................... Circuit diagram in PDF and EAGLE

format

bin ............................. Precompiled programs

bin/win-driver .................. Windows driver

bin/firmware .................... Precompiled firmware

MORE INFORMATION

Page 11: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

11

For more information on USBasp and it's components please visit the

following URLs:

USBasp .......................... http://www.fischl.de/usbasp/

Firmware-only AVR USB driver .... http://www.obdev.at/products/avrusb/

avrdude ......................... http://www.nongnu.org/avrdude/

libusb .......................... http://libusb.sourceforge.net/

libusb-win32 .................... http://libusb-win32.sourceforge.net/

2009-02-28 Thomas Fischl <[email protected]>

http://www.fischl.de

Page 12: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

12

BAB 2 MIKROKONTROLLER AVR

Kenapa harus AVR?

Karena dulu saya stuck dengan mcs (pas download programnya gagal terus, semaleman-

full- Cuma berusaha untuk masukin program- tapi tetep, kadang berhasil tapi lebih

banyak gagalnya). Padahal sampai kulitnya aja belum udah kena trouble, gimana mau

nambah ilmu kalo kayak gitu.

Yang kedua karena ikutan lomba Galelobot (line follower robot), Nah, saya dapat contoh

programnya (dari internet) kebanyakan pake mikrokontroller AVR, jadi „terpaksa‟ pake

AVR. Tapi emang sekarang-sekarang ini orang lebih banyak menggunakan AVR. Karena

keadaan tersebut mulailah saya belajar otodidak,di lab kita ini susah lho nyari bahan

belajar mikro AVR (dibanding MCS). Makanya ada buku ini.

Dan ternyata setelah saya pelajari AVR tuh menyenangkan (lebih mudah dan powerfull),

fiturnya banyak lagi. Nih kutipan dari datasheet

FITUR ATMega8535

Berikut ini adalah fitur-fitur yang dimiliki oleh ATMega8535:

a. 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock,

b. 32 x 8-bit register serba guna,

c. Kecepatan mencapai 16 MIPS dengan clock MHz,

d. 8 Kbyte Flash Memory, yang memiliki fasilitas In-System Programming,

e. 512 Byte internal EEPROM,

f. 512 Byte SRAM,

g. Programming Lock, fasilitas untuk mengamankan kode program,

h. 2 buah timer/counter 8-bit dan 1 buah timer/counter 16-bit,

i. 4 channel output PWM,

j. 8 channel ADC10-bit,

k. Serial USART,

l. Master/Slave SPI serial inteface,

m. Serial TWI atau 12C,

n. On chip Analog Comparator.

ORGANISASI MEMORI

Mikrokontroler ATMega8535 memiliki 3 jenis memori, yaitu: memori program, memori

data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah, mau lebih

jelas lagi silahkan lihat referensi.

Page 13: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

13

DESKRIPSI PIN

PIN 1-8

Port B, merupakan Port I/O 8-bit dua arah (bi-directional) dgn resistor pull-up internal. Selain sebagai Port I/O 8-bit.

Port B dapat juga difungsikan secara individu. Berikut fungsi dari masing-masing pin pada port B:

PB0 : T0 (Timer/Counter 0 External Counter Input)

XCK (USART External Clock Input/Output)

PB1 : T1 (Timer/Counter 1 External Counter Input)

PB2 : AIN0 (Analog Comparator Positif Input)

INT2 (External Interrupt 2 Input)

PB3 : AIN1 (Analog Comparator Negatif Input)

OC0 (Output CompareTimer/Counter 0)

PB4 : SS (SPI Slave Select Input)

PB5 : MOSI (SPI Bus Master Output/Slave Input)

PB6 : MISO (SPI Bus Master Input/Slave Output)

PB7 : SCK (SPI Bus Serial Clock)

PIN 9 = RESET, merupakan pin reset yang akan bekerja bila diberi pulsa rendah (active low) selama minimal 1,5 µs

PIN 10 = VCC, Catu daya digital.

PIN 11 = GND, Ground untuk catu daya digital.

PIN 12 = XTAL2, merupakan output dari penguat osilator pembalik.

PIN 13 = XTAL1, merupakan input ke penguat osilator pembalik dan input ke internal clock.

PIN 14-21

Port D, merupakan Port I/O 8-bit dua arah (bi-directional) dengan resistor pull-up internal.

Port D dapat juga difungsikan secara individu. Berikut fungsi dari masing-masing pin pada port D:

PD0 : RXD (USART receive)

PD1 : TXD (USART transmit)

PD2 : INT0 (External Interrupt 0 Input)

PD3 : INT1 (External Interrupt 1 Input)

PD4 : OC1B (Output Compare B Timer/Counter 1)

PD5 : OC1A (Output Compare A Timer/Counter 1)

PD6 : ICP1 (Timer/Counter 1 Input Capture)

PD7 : OC2 (Output Compare Timer/Counter 2)

PIN 22-29

Port C, merupakan Port I/O 8-bit dua arah (bi-directional) dengan resistor pull-up internal.

Port C dapat juga difungsikan secara individu. Berikut fungsi dari masing-masing pin pada port C:

PC0 : SCL (Serial Clock, I2C)

PC1 : SDA (Serial Data Input/Output, I2C)

PC6 : TOSC1 (Timer Oscillator 1)

PC7 : TOSC2 (Timer Oscillator 2)

PIN 30 = AVCC, merupakan catu daya yang digunakan untuk masukan analog ADC yang terhubung ke port A.

PIN 31 = GND, Ground untuk catu daya analog.

PIN 32 = AREF, merupakan tegangan referensi analog untuk ADC.

PIN 33-40 = Port A, merupakan Port I/O 8-bit dua arah (bi-directional) dengan resistor pull-up internal. Selain itu,

port ini dapat difungsikan sebagai 8 channel ADC.

Page 14: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

14

BINARY Bilangan biner penting untuk dipelajari. Ops..judulnya biner yah…tapi saya mau jelasin

hexa juga ga pa pa yah Sebelum saya jelaskan lebih jauh kita lihat contohnya dulu yak:

Desimal Hexa Biner

0 0 0

1 1 1

2 2 10

3 3 11

4 4 100

9 9 1001

10 A 1010

15 F 1111

16 10 11111

Bilangan desimal ialah bilangan yang sering kita gunakan sehari-hari. Sedangkan hexa

dan biner biasa digunakan pada mesin atau chip seperti mikrokontroller.

Hexa = dikalikan 16 pangkat 0 ……dst

Biner = dikalikan 2 pangkat 0 …dst

Contohnya:

Biner = 1001

Nilai decimal dari bilangan biner 1001 = (1x2^3)+(0x2^

2)+(0x2^

1)+(1x2^

0) = 9

Sedangkan hexa dari angka 0-9 sama dengan decimal lalu lanjut nilai 10 desimal = A

11=B, 12=C, 13=D, 14=E, 15=F. untuk nilai lebih dari F ditaruh di baris yang lebih kiri.

Contoh:

Hexa : 17

Nilai decimal dari bilangan hexa 17 = (1x16^1)+(7x16^

0) = 23

Pemahaman di bagian ini penting untuk mengerti pengaturan perintah pada register

mikrokontroller. Oh iya…ada yang namanya operasi bitwise, ada di bab

Page 15: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

15

REGISTER

Dalam mikrokontroller ada yang disebut register. Ada banyak sekali register, jadi

lumayan capek juga kalo dibahas semua. Register bisa juga dibayangkan sebagai kota

dalam suatu Negara, tiap kota punya ciri khas dan hasil bumi masing-masing, kalau mau

ke kota A pasti jalannya beda dengan ke kota B.

Nah analogi diatas, kalau di mikro kota sebagai register (ada banyak tipe-ada ADC,

USART,dll) dan jalan untuk menuju kekota tertentu disamakan dengan cara kita

mengakses register tersebut. karena banyak banget jadi ga akan dibahas semua, cukup

satu aja (konsepnya jadi tar bisa ngerti semua register, syaratnya punya datasheet

lengkapnya).

Contoh

Misalkan kita mau pake fitur ADC dalam mikro ATMega8535, caranya……

Rule number one. Coba dilihat daftar isi pada datasheet tentang ADC, langsung lompat

ke register-register penyusun ADC, yaitu ADMUX, ADCSRA, ADCHdanADCL, dan

satu register lagi SFIOR. Ga perlu bingung dengan namanya biasanya itu singkatan,

missal ADMUX (ADC Multiplexer Selection Register), ga perlu hafal kok (apa gunanya

datasheet klo hrs hafal)

Secara singkat ini fungsi masing-masing register :

ADMUX = setting ADC, mulai dari clock, tegangan refrensi, pin, dll

ADCSRA = settingan untuk, kapan harus mulai mengaktifkan ADC

ADCH/L = ini untuk tempat menampung data

SFIOR = menentukan trigger ADC

Tiap register diatas terdiri dari 8 bit, masing-masing bit merepresentasikan hal yang

berbeda, seperti contoh untuk register ADMUX ini

Arti dari tiap bit ini bisa dilihat dalam datasheet. Misal,

Pada register ADMUX, untuk bit ke 6 dan 7 merupakan setingan untuk pengambilan

tegangan referensi untuk ADC (klo masih bingung sama ADC coba buka modul

praktikum system instrumentasi). Bit yang lain? (liat sendiri didatasheet )

Page 16: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

16

Kayaknya capek yak klo liat datasheet terus, pengen gampang pake aja CodeWizard.

Dalam Codewizard sudah ada cara setting ADC (tinggal klik-klik), langsung deh jadi

programnya, kayak gini.

// ADC initialization

// ADC Clock frequency: 750.000 kHz

// ADC Voltage Reference: AREF pin

// ADC High Speed Mode: Off

// ADC Auto Trigger Source: Free Running

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0xA4;

SFIOR&=0x0F;

Tapi kita tetep perlu datasheet, karena ada

beberapa perhitungan (biasanya clock), dan

yang paling penting gimana fungsi itu bekerja

(dalam hal ini ADC) –register mana dulu

yang harus di set atau yang harus ditunggu-,

sangat penting saat pembuatan program.

Jadi secara garis besar kalau mau kenal sama mikro(apapun jenisnya) ini gambarannya.

Setiap jenis mikro punya karakteristik yang berbeda, jadi sangat penting untuk memiliki

datasheetnya, emang sih agak kurang enak dibaca tapi itu penting!!!!

Dan satu lagi compilernya juga pasti beda-beda, bahkan satu jenis mikro bisa punya

banyak compiler contohnya AVR bisa pake CodevisionAVR atau WinAVR. So…masih

banyak yang harus dipelajari……..TETEP SEMANGAT…

Page 17: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

17

BAB 3 CODEVISIONAVR

CodevisionAVR merupakan compiler bahasa C, didesain khusus

untuk mikrokontroller keluarga Atmel AVR. Dapat digunakan

pada Windows 98, Me, NT 4, XP, dan Vista. Fungsi utama

CodevisionAVR ialah untuk menuliskan program yang akan kita

masukkan kedalam mikrokontroller. Selain dengan CodevisionAVR masih ada jenis

lainnya (compiler lain) yakni WinAVR yang merupakan Openware sehingga akan selalu

ada versi baru.

Integrated Development Environment (IDE) sudah dibangun dalam AVR Chip In-System

Programmer software yang memungkinkan untuk secara otomatis mengirim program ke

mikrokontroller setelah sukses di compile. In-System Programmer software di disain

untuk dapat bekerja dengan Atmel STK500, AVRISP, AVRISP MkII, AVR Dragon,

AVRProg (AVR910 application note), Kanda Systems STK200+, STK300, Dontronics

DT006, Vogel Elektronik VTEC-ISP, Futurlec JRAVR and MicroTronics' ATCPU,

Mega2000 development boards.

Selain library standar C, CodeVisionAVR C compiler juga memiliki library lainnya yaitu

·Alphanumeric LCD modules

·Philips I2C bus

·National Semiconductor LM75 Temperature Sensor

·Philips PCF8563, PCF8583, Maxim/Dallas Semiconductor DS1302 and DS1307 Real

Time Clocks

·Maxim/Dallas Semiconductor 1 Wire protocol

·Maxim/Dallas Semiconductor DS1820, DS18S20 and DS18B20 Temperature Sensors

·Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat

·Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs

·SPI

·Power management

·Delays

·Gray code conversion.

Contoh pemakaian Library dalam program :

#include <mega8535.h>

#include <stdio.h>

#include <delay.h>

CodeVisionAVR juga terdiri dari CodeWizardAVR Automatic Program Generator, yang

sangat memudahkan pengguna terutama dalam penulisan program, dari sini kita bisa

mengatur:

Page 18: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

18

·External memory access setup

·Chip reset source identification

·Input/Output Port initialization

·External Interrupts initialization

·Timers/Counters initialization

·Watchdog Timer initialization

·UART (USART) initialization and interrupt driven

buffered serial communication

·Analog Comparator initialization

·ADC initialization

·SPI Interface initialization

·Two Wire Interface initialization

·CAN Interface initialization

·I2C Bus, LM75 Temperature Sensor, DS1621

Thermometer/Thermostat and PCF8563, PCF8583,

DS1302, DS1307 Real Time Clocks initialization

·1 Wire Bus and DS1820/DS18S20 Temperature

Sensors initialization

·LCD module initialization.

Sebelum memulai semua program diatas, maka sebelumnya saya ajarkan dulu gimana

caranya pake codevisionAVR. Termasuk gimana caranya pake Codewizard (hidup jadi

terasa lebih mudah klo pake yang satu ini).

CODEWIZARD

Sekarang masuk ke Codewizard, pake ini jadi

gampaaaaaaang banget klo mau bikin

program. Tapi harus ngerti gimana cara

pakainya, disini akan dijelaskan apa saja yang

ada di codewizard, serta fungsi dan cara

pakainya.

Seperti yang terlihat pada gambar, ada 14

komponen dalam codewizard, berikut penjelasan singkatnya :

1. Chip : Tipe Mikrokontroler yang digunakan

2. Ports : Keadaan masing-masing Port (sebagai input /output)

3. External IRQ : Kalau mau pake Interrupt (ada tiga)

4. Timers : bisa dipake untuk PWM

5. LCD : Kalau mau pakai LCD

6. Bit-Banged : Kalau mau pakai DS1302, untuk waktu detik s.d tahun

7. Project Information : Ga ngaruh ke program, hanya info pembuatan program

Page 19: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

19

8. I2C : Salah satu interface serial dari mikrokontroller keluarga AVR

9. 1 Wire : Salah satu interface serial dari mikrokontroller keluarga AVR

10. 2 Wire(I2C) : Salah satu interface serial dari mikrokontroller keluarga AVR

11. USART : Salah satu interface serial dari mikrokontroller keluarga AVR

12. Analog Comparator : kalau mau pake komparator

13. ADC : Setting ADC -Analog to Digital Converter- (s.d. 10 bit)

14. SPI : Serial Pheripeal Interface

Sekarang dijelasin satu-satu

1. Chip

Yang ini fungsinya untuk ceklist hardware

yang digunakan, mikro apa yang kita pake

serta nilai kristal. Ini penting lho, soalnya

nanti yang akan dipanggil library dari mikro

ini. Clock sangat sangat berpengaruh apalagi

kalau kita mau pakai Timer. Klo dihardware

nya pake reset, Check Reset Source di klik,

klo ga ya jangan diapa-apain.

2. PORTS

Ini untuk setting port, mau diguankan sebagai

masukan atau keluaran. Tinggal klik aja.

Gampangkan, disbanding harus buka dulu

datasheet dicocokan dengan table dibawah, ini

lebih praktis.

Untuk keadaan awal OUT ;

bisa 0 (low) atau 1 (high)

Untuk keadaan awal IN ;

Bisa T (Tri-state) atau P (Pull-up)

Tristate tuh tegangannya setengah dari Vcc

Klo PullUp?? Coba cek.

Page 20: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

20

3. Enternal IRQ

Yang ini untuk mengaktifkan Interupsi, mikro

ATMega8535 punya 3 interupsi, tinggal klik

aja, trus pilih deh modenya. Penjelasan

tentang tiap-tiap mode bisa dilihat di

datasheet.

4. Timer

Nah yang ini utnuk timer, pokoknya kalo

aplikasi program kita butuh timer maka yang

satu ini harus dipake. Contoh aplikasi yang

pake timer, PWM (Pulse Width Modulation).

Klo kita kan waktunya dari jam yak, dengan

skala detik, dll. Nah klo dimikro ini

bergantung dari kristal yang kita pake, ntar

frekuensi mikronya dibagi-bagi, tinggal milih

skalanya mau pake yang mana.

5. LCD

Page 21: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

21

Enaknya AVR, make LCD jadi gampang

banget, programnya cuma satu baris, LCD

bisa ditaruh di PORT mana saja, tinggal

pilih. JAngan lupa kabel-kabel dari LCD

harus disesuaikan, kayak disebelah LCD pin

4 nyambungnya ke mikro PORTA.0, dst.

6. Komparator

Lucu ya, mikro ini ada komparatornya.

Prinsip komparatornya sama kayak IC analog

7.ADC

Dalam mirko ini sudah terdapat fasilitas ADC

sampai 10 bit. Untuk menggunakan ADC kita

harus melakukan seting registernya (tinggal klik)

Apakah mau menggunakan interrupt atau dalam

mode high speed, dan penting juga darimana

sumber tegangan referensinya, dicontoh sebelah

Vref dipilih dari pin no 32 yaitu ARef, jadi

berapapun tegangan yang dihubungkan ke Apin

ini akan menjadi tegangan acuan dalam proses

ADC. Clock disini akan berbeda untuk setiap

kristal (kelipatan 1 atau setengahnya) bisa dipilih,

dan yang terakhir auto trigger source, yaitu

sumber trigger dari mana. Maksudnya proses

ADC akan dieksekusi saat sinyal apa ? Bisa

Page 22: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

22

dipilih Free Running untuk ADC yang jalan terus (tanpa perlu pemicu).

8. Macam –macam jalur Interface

Yang terakhir ini tentang komunikasi/interface

(Bab 5) keluar dari mikro, ada banyak tipe

komunikasi yang bisa dipilih tapi biasanya

(seringnya) kita pakai yang disebelah, USART.

Penjelasan lebih lanjut ada di bab 5.

Page 23: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

23

Pengenalan Bahasa C (diambil dari berbagai sumber) Ini penting, soalnya di codevisionAVR pake bahasa C, jadi harus ngerti. Beberapa yang

paling penting (soalnya suka kelupaan)

1. ( = ) artinya masukin data

2. ( == ) artinya nge`cek`

3. Nulis isi register

ADMUX = 0b00001111 ; dalam biner

ADMUX = 0x0F ; dalam Hexa

ADMUX = 15 ; dalam decimal

4. Huruf besar kecil ngaruh

From buku Agus Bejo:

1. Bentuk Dasar Program C

Sebuah program dalam bahasa C setidaknya harus memiliki sebuah fungsi. Fungsi

dasar ini disebut fungsi utama (fungsi main) dan memiliki kerangka program

sebagai berikut:

Void main (void)

{

//pernyataan-pernyataan

}

Jika kita memiliki beberapa fungsi yang lain, maka fungsi utama inilah yang

memiliki kedudukan paling tinggi dibandingkan fungsi-fungsi yang lain, sehingga

setiap kali program dijalankan akan selalu dimulai dari memanggil fungsi utaa

terlebih dahulu. Fungsi-fungsi yang lain dapat dipangil setelah fungsi utama

dijalankan melalui pernyataan-pernyataan yang berada di dalam fungsi utama.

Contoh:

//prototipe fungsi inisialisasi port

Void inisialisasi_port (char A, char B, char C, char D);

//definisi fungsi inisialisasi port

Void inisialisasi_port (char A, char B, char C, char D);

{

Page 24: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

24

DDRA = A;

DDRB = B;

DDRC = C;

DDRD = D;

}

//fungsi utama

Void main (void)

{

Inisialisasi_port (0xFF, 0xF0, 0x0F, 0x00);

}

2. Pengenal

Pengenal atau identifier merupakan sebuah nama yang didefinisikan oleh

pemrogram untuk menunjukkan identitas dari sebuah konstanta, variabel, fungsi,

label atau type data khusus. Pemberian nama sebuah pengenal dapat ditentukan

bebas sesuai keinginan pemrogram tetapi tetap mengikuti aturan berikut ini:

- Karakter pertama tidak boleh menggunakan angka,

- Karakter kedua dapat berupa huruf, angka atau garis bawah,

- Tidak boleh menggunakan spasi,

- Bersifat case Sensitive, artinya huruf kapital dan huruf kecil dianggap

berbeda,

- Tidak boleh menggunakan kata-kata yang meupakan sintaks maupun operator

dalam pemrograman C, misalnya: void, bit, long, char dan lain-lain.

3. Type data

Tipe Data Ukuran Jangkauan Nilai

Bit 1 bit 0 atau 1

Char 1 byte -128 s/d 127

Unsigned Char 1 byte 0 s/d 255

Signed Char 1 byte -128 s/d 127

Int 2 byte -32.768 s/d 32.767

Short Int 2 byte -32.768 s/d 32.767

Unsigned Int 2 byte 0 s/d 65.535

Signed Int 2 byte -32.768 s/d 32.767

Long Int 4 byte -2.147.483.648 s/d 2.147.483.647

Page 25: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

25

Unsigned Long Int 4 byte 0 s/d 4.294.967.295

Signed Long Int 4 byte -2.147.483.648 s/d 2.147.483.647

Float 4 byte 1.2*10-38

s/d 3.4*1038

Double 4 byte 1.2*10-38

s/d 3.4*1038

4. Konstanta dan Variabel

Konstanta berisi data yang nilainya tetap, tidak dapat diubah selama program

dijalankan.

Contoh: const [tipe_data] [nama_konstanta]=[nilai]

const char kontantaku = 0x10;

Variabel berisi data yang bisa berubah nilainya pada saat program dijalankan.

Contoh: [tipe_data] [nama_variabel]=[nilai_awal]

char variabelku; (atau)

char variabelku = 0x20;

5. Pengarah Preprosesor

Digunakan untuk mendefinisikan prosesor yang digunakan, dalam hal ini adalah

untuk mendefinisikan jenis mikrokontroler yang digunakan. Dengan pengarah

preprosesor ini, pendeklarasian register-register dan penamaannya dilakukan pada

file lain yang disisipkan dalam program utama dengan sintaks sebagai berikut:

# include <nama_prosesor>

Contoh:

# include <mega8535.h>

6. Operator Aritmatika

Merupakan beberapa operator yang digunakan untuk melakukan perhitungan

aritmatika.

Operator Keterangan

+ Penjumlahan

- Pengurangan

* Perkalian

/ Pembagian

% Sisa Pembagian

Page 26: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

26

Operator *, / dan % mempunyai prioritas paling tinggi dibandingkan + dan -.

Contoh:

2 + 3 * 4

Hasilnya bukan 20, tetapi 14.

Prosesnya: 2 + (3 * 4) = 14

7. Operator Pembanding

Digunakan untuk membandingkan 2 buah data. Hasil operator pembanding bukan

berupa nilai data tetapi hanya bernilai benar („1‟) atau salah („0‟) saja.

Berikut tabel operator pembanding:

Operator Contoh Keterangan

== x==y Benar : keduanya sama

!= x!=y Benar

> x>y Benar : x lebih besar dari y

< x<y Benar : x lebih kecil dari y

>= x>=y Benar : x lebih besar atau sama dengan

y

<= x<=y Benar : x lebih kecil atau sama dengan

y

8. Operator Logika

Digunakan untuk membentuk suatu logika atas dua buah kondisi atau lebih.

Berikut ini tabel dari operator logika:

Operator Keterangan

&& Logika AND

|| Logika OR

! Logika NOT

9. Operator Bit

Merupakan operator logika yang bekerja pada level bit. Berbeda dengan operator

logika, dimana pada operator logika menghasilkan benar atau salah (boolean),

pada operator ini akan dihasilkan data dalam bentuk biner.

Operator Keterangan

& Operasi AND level bit (biner)

| Operasi OR

Page 27: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

27

^ Operasi XOR

~ Operasi NOT

<< Operasi untuk menggeser ke kiri

>> Operasi untuk mengeser ke kanan

Contoh:

a = 0x12;

b = 0x34;

maka,

a&b = 0x10

a<<1 =0x24

Penjelasan:

a=0x12 0 0 0 1 0 0 1 0

b=0x34 0 0 1 1 0 1 0 0

------------------------------------ &

a&b=0x10 0 0 0 1 0 0 0 0

penggeseran a ke kiri akan menghasilkan:

a<<1 0 0 1 0 0 1 0 0

10. Operator Penugasan dan Operator Majemuk

Digunakan untuk memberikan nilai atau memanipulasi data sebuah variable.

Berikut adalah operator yang termasuk dalam kategori operator penugasan:

Operator Keterangan

= Operator untuk memberi nilai variabel

+= Operator untuk menambahkan nilai

variabel

-= Operator untuk mengurangi nilai variabel

*= Operator untuk mengalikan nilai variabel

/= Operator untuk membagi nilai variabel

Page 28: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

28

%= Oprator untuk memperoleh sisa

pembagian

Contoh:

a +=2; artinya nilai variabel a berubah menjadi a=a+2

b *=4; artinya nilai variabel b berubah menjadi b=b*2

selain operator penugasan di atas, juga ada operator penugasan yang berkaitan

dengan operasi bit seperti tabel berikut:

Operator Contoh Arti

&= X&=1 Variabel x di-AND-kan dengan

1

|= x|=1 Variabel x di-OR-kan dengan 1

~= x~=1 X=~(1) x = 0xFE

^= x^=1 Variabel x di_XOR-kan

dengan 1

<<= x<<1 Variabel x digeser ke kiri 1 kali

>>= x>>1 Variabel x digeser ke kanan 1

kali

11. Operator penambahan dan Pengurangan

Merupakan operator yang digunakan untuk menaikkan atau menurunkan nilai

sebuah variabel dengan selisih 1.

Operator Keterangan

++ Penambahan nilai variabel dengan

1

-- Pengurangan nilai variabel dengan

1

12. Operator Berkondisi

Disebut juga operator ternary. Digunakan untuk mengecek logika sebuah ekspresi

pernyataan untuk kemudian menunjukkan ekspresi pernyataan berikutnya.

Berikut ini adalah sintaks untuk operator berkondisi:

Ekspresi_pernyataan ? nilai_1 : nilai 2

Contoh:

Page 29: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

29

PORTC = data_a > data_b ? data_a : data_b

Program di atas akan mengecek apakah nilai variabel data_a lebih besar dari nilai

variabel data_b, jika ya, maka nilai variabel data_a akan dikeluarkan ke port C

dan jika tidak, maka nilai variabel data_b yang akan dikeluarkan ke port C.

13. Fungsi Pustaka

Bahasa C memiliki sejumlah fungsi pustaka yang berada pada file-file tertentu

dan sengaja disediakan untuk menangani berbagai hal dengan cara memanggil

fungsi-fungsi yang telah dideklarasikan di dalam file tersebut. Dalam banyak hal,

pustaka yang tersedia tidak berbentuk kode sumber, melainkan dalam bentuk

yang telah dikompilasi. Pada saat proses linking, kode-kode dari fungsi ini akan

dikaitkan dengan kode-kode yang dituliskan oleh pemrogram. Sintaks untuk

menggunakan fungsi pustaka adalah sebagai berikut:

# include <nama_file_pustaka>

Contoh:

# include <lcd.h>

# include <string.h>

# include <mem.h>

dll

14. Pernyataan IF

Digunakan untuk melakukan pengambilan keputusan terhadap dua buah

kemungkinan, yaitu mengerjakan suatu blok pernyataan atau tidak.

Bentuk pernyataan if adalah sebagai berikut:

If (kondisi)

{

//blok pernyataan yang akan dikerjakan

//jika kondisi if terpenuhi

}

Contoh:

Page 30: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

30

If (PINA>0x80)

{

Dataku = PINA;

PORTC=0xFF;

}

Pernyataan di atas akan mengecek apakah data yang terbaca pada Port A (PINA)

nilainya lebih dari 0x80 atau tidak, jika „ya‟ maka variabel dataku diisi dengan

nilai PINA dan data 0xFF dikeluarkan ke Port C.

15. Pernyataan IF...Else

Hampir sama dengan pernyataan if di atas, yaitu digunakan untuk melakukan

keputusan terhadap dua buah kemungkinan, yang membedakan adalah kedua

kemungkinan yang akan diputuskan masing-masing mengerjakan suatu blok

pernyataan atau mengerjakan blok pernyataan yang lain.

Bentuk pernyataan if...else adalah sebagai berikut:

If (kondisi)

{

//blok pernyataan yang akan dikerjakan jika kondisi if dipenuhi

}

Else

{

//blok pernyataan yang akan dikerjakan jika kondisi if tidak dipenuhi

}

Contoh:

If (PINA>0x80)

{

Dataku = PINA;

Page 31: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

31

PORTC=0xFF;

}

Else

{

Dataku = ~PINA;

PORTC=0x00;

}

Pernyataan if..else di atas mengecek apakah data yang terbaca oleh Port A (PINA)

nilainya lebih dari 0x80 atau tidak, jika „ya‟, maka variabel dataku diisi dengan

nilai PINA dan data 0xFF dikeluarkan ke Port C, tetapi jika tidak, maka variabel

dataku diisi dengan nilai komplemen dari PINA dan data 0x00 dikeluarkan ke

Port C.

16. Pernyataan IF BERSARANG

Pernyataan if bersarang (nested if) adalah pernyataan if maupun if..else, dimana di

dalam blok pernyataan yang akan dikerjakan terdapat pernyataan if atau if..else

lagi.

Contoh bentuk pernyataan if bersarang 2-tingkat adalah sebagai berikut:

If (kondisi_1)

{

If (kondisi_2)

{

//blok pernyataan_1 yang akan dikerjakan jika kondisi_1 dan kondisi_2

terpenuhi

}

}

Else

Page 32: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

32

{

If (kondisi_3)

{

//blok pernyataan_2 yang akan dikerjakan jika kondisi_1 dan kondisi_3

terpenuhi

}

}

17. Pernyataan Switch

Digunakan untuk melakukan pengambilan keputusan terhadap banyak

kemungkinan.

Bentuk pernyataan switch adalah sebagai berikut:

Switch (ekspresi)

{

Case nilai_1 : pernyataan_1;break;

Case nilai_2 : pernyataan_2;break;

Case nilai_3 : pernyataan_3;break;

...

Default : pernyataan_default;break;

}

Pada pernyataan switch, masing-masing pernyataan (pernyataan_1 sampai

dengan pernyataan_default) dapat berupa satu atau beberapa perintah dan tidak

perlu berupa blok pernyataan. Pernyataan_1 akan dikerjakan jika ekspresi

bernilai sama dengan nilai_1, pernyataan_2 akan dikerjakan jika ekspresi bernilai

sama dengan nilai_2 dan seterusnya. Pernyataan_default bersifat optional, artinya

boleh ada boleh tidak. Setiap akhir dari pernyaan harus diakhiri dengan break,

karena digunakan untuk keluar dari pernyataan switch.

Page 33: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

33

Contoh:

Switch (PINA)

{

Case 0xFE : PORTC=0x00;break;

Case 0xFD : PORTC=0xFF;break;

}

Artinya, Port A akan dibaca dan dicocokkan datanya (PINA) dengan nilai case.

18. Pernyataan While

Digunakan untuk pengulangan sebuah pernyataan atau blok pernyataan secara

terus menerus selama kondisi tertentu masih terpenuhi.

Bentuk pernyataan while adalah sebagai berikut:

While (kondisi)

{

// sebuah pernyataan atau blok pernyataan

}

Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja maka

tanda {dan} bisa dihilangkan.

Contoh:

Unsigned char a=0;

...

While (a<10)

{

PORTC=a;

a++;

}

Page 34: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

34

Pernyataan di atas akan mengeluarkan data a ke port c secara berulang-ulang.

Setiap kali pengulangan, nilai a akan bertambah 1 dan setelah nilai a tidak lagi

lebih kecil dari 10 maka pengulangan akan berhenti.

19. Pernyataan do...while

Pernyataan do...while hampir sama dengan pernyataan while, yaitu pernyataan

yang digunakan untuk pengulangan sebuah pernyataan atau blok pernyataan

secara terus menerus selama kondisi tertentu masih terpenuhi.

Bentuk pernyataan while adalah sebagai berikut:

do {

//sebuah pernyataan atau blok pernyataan

}while (kondisi);

Yang membedakan antara pernyataan while dengan do..while adalah bahwa pada

pernyataan while pengetesan kondisi dilakukan terlebih dahulu, jika kondisi

terpenuhi, maka barulah blok pernyataan dikerjakan. Sebaliknya, pada pernyataan

do..while, blok pernyataan dikerjakan terlebih dahulu setelah itu baru dilakukan

pengetesan kondisi, jika kondisi terpenuhi maka dilakukan pengulangan

pernyataan atau blok pernyataan lagi. Sehingga, dengan demikian pada

pernyataan do...while blok pernyataan pasti akan dikerjakan minimal satu kali,

sedangkan pada pernyataan while blok pernyataan belum tentu dkerjakan.

20. Pernyataan For

Digunakan untuk melakukan pengulangan sebuah pernyataan atau blok

pernyataan, tetapi berapa kali jumlah pengulangannya dapat ditentukan terlebih

spesifik.

Bentuk pernyataan for adalah sebagai berikut:

for (nilai_awal , kondisi , perubahan)

{

//sebuah pernyataan atau blok pernyataan

}

Page 35: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

35

Contoh:

Unsigned int a;

For (a=1 , a<10, a++)

{

PORTC=a;

}

Pertama kali nilai a adalah 1, kemudian data a dikeluarkan ke port C. Selanjutnya,

data a dinaikkan (a++) jika kondisi a < 10 masih terpenuhi, maka data a akan

terus dikeluarkan ke port C.

21. ARRAY

Merupakan sekumpulan data dengan type yang sama yang dideklarasikan dalam

satu nama variabel. Array dapat memiliki dimensi satu, dua atau lebih, tetapi

umumnya hanya sampai 3 dimensi.

Contoh:

Char data[7];

Artinya, variabel array dengan nama data terdiri dari 8 elemen data yang bertype

sama, yaitu: char.

Deklarasi variabel array di atas dapat juga diberi inisial awal seperti contoh

berikut:

Char dataku[7] = {0, 1, 2, 3, 4, 5, 6};

Kita juga dapat mendeklarasikan variabel array dengan jumlah elemen yang tidak

ditentukan, tetapi untuk hal ini inisial awal datanya harus diberikan.

Contoh:

Char data[]; //tidak boleh dilakukan

Char data[]={0, 1, 2, 3, 4, 5, 6};

Page 36: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

36

Deklarasi variabel array dengan jumlah elemen yang tidak ditentukan biasanya

digunakan untuk menyimpan data string karena kita sering malas untuk

menghitung berapa jumlah elemenya seperti contoh berikut:

Char data[]={“Mikrokontroler ATMega8535”};

atau

Char data[]=”Mikrokontroler ATMega8535”;

Untuk mengakses data yang berada di dalam variabel array dapat dilakukan

dengan cara berikut:

Nama_array [indeks];

Indeks adalah penunjuk data elemen tertentu pada variabel array yang nilainya

selalu dimulai dari 0.

22. POINTER

Merupakan suatu variabel yang digunakan utnuk menyimpan alamat dari sebuah

variabel data. Keuntungannya, kita dapat mengakses data dengan ukuran yang

besar dalam waktu yang relatif singkat. Selain itu, untuk menunjuk lokasi memori

tertentu dapat dilakukan ketika program aplikasi sedang dijalankan, sehingga ini

menjadi lebih fleksibel.

a. Deklarasi Pointer

Sebuah variabel pointer (untuk selanjutnya cukup disebut pointer saja)

dideklarasikan dengan cara yang hampir sama dengan deklarasi variabel data

biasa, hanya dibagian awal nama variabelnya ditambahkan tanda * seperti

berikut:

[tipe_data] *[nama_variabel_pointer]=[nilai_awal];

Contoh:

Char *pointerku;

Char *pointerku=0x80;

Pada deklarasi pertama, kita mendefinisikan sebuah pointer yang digunakan

untuk menunjuk sebuah data di memori tetapi belum ditentukan alamat

memori yang dimaksud, sedangkan pada deklarasi yang kedua sudah

ditentukan alamat memorinya, yaitu alamat 0x80.

Page 37: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

37

b. Menunjuk alamat sebuah variabel

Sebuah pointer dideklarasikan maka selanjutnya kita dapat menunjuk pada

alamat memori tertentu tempat menyimpan sebuah variabel data seperti

contoh berikut:

Char dataku = 0x20;

Char *pointerku;

Pointerku =&dataku;

Pada baris pertama kita mendeklarasikan sebuah variabel bernama dataku

dengan tipe char, dimana isi datanya yaitu 0x20 disimpan di alamat memori

tertentu. Selanjutnya kita mendeklarasikan sebuah pointer dengan nama

pointerku yang digunakan untuk menunjuk alamat memori tertentu yang

dalam hal ini belum ditentukan. Baris ketiga digunakan untuk menyatakan

bahwa alamat memori yang digunakan untuk menyimpan variabel dataku

disimpan di pointer, sehingga sekarang pointer sudah menunjuk ke memori

variabel dataku. Jadi, sekarang pointer berisi 0x80 dan data yang ada di

alamat memori 0x80 adalah 0x20.

23. STRUKTUR

Merupakan kumpulan dari variabel-variabel data baik dengan tipe yang sama

ataupun berbeda yang dikemas dalam satu wadah kemudian diberi sebuah nama.

Untuk mendefinisikan sebuah struktur dilakukan dengan cara sebagai berikut:

Struct [nama_struktur]

{

Deklarasi variabel;

....

};

24. Memanggil Assembler

Meskipun kita menggunakan bahasa pemrograman C, kita masih tetap bisa

menggunakan sintaks pemrograman asembler.

Page 38: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

38

Caranya sebagai berikut:

#asm

; instruksi-instruksi assembler

#endasm

Contoh:

#asm

ldi r0,100

mov r2,r3

#endasm

Page 39: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

39

BAB 4 LATIHAN PROGRAM Bab ini merupakan pelatihan dalam menggunakan mikrokontroller AVR (ATMega8535).

Cara belajar yang terbaik adalah dengan mencoba, Pelatihan akan dimulai dari program

yang paling mudah.

Yang akan dipelajari pada bab ini ialah ;

1. Input/Output

2. LED

3. ADC

4. Seven Segment

5. LCD

6. Mengontrol motor DC dan Servo

7. Kontrol PWM

Jangan lupa untuk menyiapkan rangkaian hardware-nya (ada di halaman Getting Started).

Berikut penjelasan singkat setiap program.

OUTPUT

Tujuan Program :

1. Membuat delapan lampu LED menyala

2. Membuat lampu LED menyala dan mati (Selang-seling)

3. Membuat lampu LED menyala berurutan sesuai detik

INPUT/OUTPUT

Tujuan Program :

1. Membuat delapan lampu LED menyala melalui dipswitch

ADC

Tujuan Program :

1. Menampilkan hasil ADC melalui lampu LED

2. Menampilkan hasil ADC melalui LCD

3. Menampilkan hasil ADC melalui Delphi

PWM

Tujuan Program :

1. Menggerakkan motor DC

2. Mengendalikan motor DC melalui dipswitch

3. Mengendalikan motor DC melalui PC (Delphi)

4. Membuat kontrol kipas angin

5. Menggerakan motor Servo

Page 40: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

40

PROGRAM 1 : OUTPUT Tujuan Program : Membuat delapan lampu LED menyala

Hardware : Hubungkan rangkaian LED ke PORTC

Codewizard : setting PORTC sebagai output, set Chip

(Kalau pake Codewizard, program yang ditulis Cuma satu aja : PORTC=1) Karena ini program pertama, maka saya rinci secara lengkap, apa aja yg harus dilakukan.

Ok here we GO!!

1. Pilih shortcut codevisionAVR dengan tampilan seperti berikut

2. Buat file baru dengan cara : File , NEW

3.Pilih Project

4. Pilih Codewizard

Page 41: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

41

5. pilih Atmega

6. Menggunakan CodeWizard : Pengaturan Chip, jenis mikro dan nilai crystal yang

digunakan.

7. Menggunakan CodeWizard, setting PORTC sebagai Output

- klik PORT C

- klik In (agar berubah menjadi OUT)

- Set Chip, pilih mikro dan kristal yang digunakan

Page 42: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

42

8. Simpan hasil CodeWizard

Page 43: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

43

9. Save setting : save tiga kali dengan nama file yang persis sama

10. Hasil yang diperoleh (klo ga kluar sperti ini, di kolom kiri –code navigator- klik file

yang dot c misal title.c)

Page 44: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

44

11. Tulis program di while

PORTC = 0xFF;

SETTING Chip Programmer Yang satu ini jangan sampai kelupaan

1. Pilih settings, programmer

2. Atur setting sesuai dengan programmer yang digunakan. Sebagai contoh saya gunakan

STK200+ (parallel port). OK

CARA COMPILE PROGRAM

1. Buka Project, Configure

Page 45: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

45

2. Pilih AfterBuild, Pilih program the CHIP

3. Pilih OK, PERHATIAN : JANGAN MERUBAH APAPUN (ntar jadi permanent)

Page 46: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

46

4. Pilih Build All

5. Setelah tidak ada error maka pilih Program the Chip, pastikan power supply menyala

Page 47: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

47

OK tinggal sambungkan programmer/downloader ke komputer (jgn lupa power supply

programmer), trus klik Program the chip.

SELESAI

Page 48: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

48

PROGRAM 2

OUTPUT Tujuan Program : Membuat lampu LED menyala dan mati (Selang-seling)

Hardware : Hubungkan rangkaian LED ke PORTC

Codewizard : setting PORTC sebagai output, set Chip

Tambahkan program ini

while (1) { // Place your code here PORTC.0 = 1; PORTC.1 = 0; PORTC.2 = 1; PORTC.3 = 0; PORTC.4 = 1; PORTC.5 = 0; PORTC.6 = 1; PORTC.7 = 0; }; }

PROGRAM 3

OUTPUT Tujuan Program : Membuat lampu LED menyala berurutan sesuai detik

Hardware : Hubungkan rangkaian LED ke PORTC

Codewizard : setting PORTC sebagai output, set Chip

Tambahkan program ini

Diawal (setelah #include <mega8535.h>) :

# include <delay.h>

Diakhir : while (1) { // Place your code here PORTC = 0x01; delay_ms(1000); PORTC = 0x02; delay_ms(1000); PORTC = 0x04; delay_ms(1000); PORTC = 0x08; delay_ms(1000); PORTC = 0x10; delay_ms(1000); PORTC = 0x20; delay_ms(1000); PORTC = 0x40; delay_ms(1000); PORTC = 0x80; delay_ms(1000); }; }

PROGRAM 4

INPUT/OUTPUT Tujuan Program : Membuat delapan lampu LED menyala melalui dipswitch

Hardware : Hubungkan rangkaian LED ke PORTC, Dipswitch ke PORTB

Codewizard : setting PORTC sebagai output, PORT B sebagai input, set Chip Tambahkan program berikut ini :

Diakhir : while (1) { If (PORTB==0x01) { PORTC = 0x01} else if (PORTB==0x02) { PORTC = 0x02} else If (PORTB==0x04) { PORTC = 0x04} else if (PORTB==0x08) { PORTC = 0x08}

Page 49: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

49

else If (PORTB==0x10) { PORTC = 0x10} else if (PORTB==0x20) { PORTC = 0x20} else If (PORTB==0x40) { PORTC = 0x40} else if (PORTB==0x80) { PORTC = 0x80} }; }

PROGRAM 5

ADC Tujuan Program : Menampilkan hasil ADC melalui lampu LED (PORTC)

Hardware : -Hubungkan rangkaian LED ke PORTC

-Aref ke tegangan referensi ADC (missal 5 volt)

-PORTA.0 sebagain input ADC (hubungkan ke tegangan variabel)

Codewizard : setting PORTC sebagai output, set ADC 8 bit, set Chip

Buat File baru lalu setting codewizard aktifkan ADC

Berikut Programnya

/*****************************************************

This program was produced by the

CodeWizardAVR V2.03.9 Evaluation

Automatic Program Generator

© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date : 3/8/2009

Author : Freeware, for evaluation and non-commercial use only

Company :

Comments:

Page 50: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

50

Chip type : ATmega8535

Program type : Application

AVR Core Clock frequency: 12.000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 128

*****************************************************/

#include <mega8535.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x20

// Read the 8 most significant bits

// of the AD conversion result

unsigned char read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage

delay_us(10);

// Start the AD conversion

ADCSRA|=0x40;

// Wait for the AD conversion to complete

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCH;

}

// Declare your global variables here

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0

PORTC=0x00;

DDRC=0xFF;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

Page 51: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

51

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

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

TIMSK=0x00;

// Analog Comparator initialization

Page 52: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

52

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// ADC initialization

// ADC Clock frequency: 750.000 kHz

// ADC Voltage Reference: AREF pin

// ADC High Speed Mode: Off

// ADC Auto Trigger Source: None

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

SFIOR&=0xEF;

while (1)

{

PORTC = read_adc(0); // INI PROGRAMNYA-Cuma ini doank-

};

}

PROGRAM 6

ADC Tujuan Program : Menampilkan hasil ADC melalui LCD (PORTC)

Hardware : -Hubungkan rangkaian LCD ke pin untuk LCD

-Aref ke tegangan referensi ADC (missal 5 volt)

-PORTA.0 sebagain input ADC (hubungkan ke tegangan variabel)

Codewizard : Set Chip, Set LCD, set ADC 8 bit

Page 53: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

53

/*****************************************************

This program was produced by the

CodeWizardAVR V2.03.9 Evaluation

Automatic Program Generator

© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date : 3/8/2009

Author : Freeware, for evaluation and non-commercial use only

Company :

Comments:

Chip type : ATmega8535

Program type : Application

AVR Core Clock frequency: 12.000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 128

*****************************************************/

#include <mega8535.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x15 ;PORTC

#endasm

#include <lcd.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x00

char lcd_buffer[33];

// Read the AD conversion result

unsigned int read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage

delay_us(10);

// Start the AD conversion

ADCSRA|=0x40;

// Wait for the AD conversion to complete

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCW;

}

// Declare your global variables here

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

Page 54: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

54

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

Page 55: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

55

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

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

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// ADC initialization

// ADC Clock frequency: 750.000 kHz

// ADC Voltage Reference: AREF pin

// ADC High Speed Mode: Off

// ADC Auto Trigger Source: None

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

SFIOR&=0xEF;

// LCD module initialization

lcd_init(16);

while (1)

{

lcd_gotoxy(0,0);

sprintf(lcd_buffer,”adc=%c”,read_adc(0));

lcd_puts(lcd_buffer);

};

}

PROGRAM 7

PWM Tujuan Program : Menggerakan motor Servo

Hardware : Hubungkan koneksi pulsa servo(i) ke PORTD.4

Codewizard : Set Chip dan Timer

Sama seperti sebelumnya setting codewizard seperti berikut :

Page 56: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

56

Program yang harus ditambahkan

Diawal : #include<delay.h>

Diakhir :

while (1)

{

// Place your code here

for(OCR1A=600;OCR1A!=1500;OCR1A++){

delay_ms(100);

}

};

}

Page 57: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

57

BAB 5 ANTARMUKA PC

Bab ini sangat penting ketika, TA kita mengharuskan komunikasi antara alat hardware

yang kita buat dengan PC computer (untuk menampilkan data). Atau pun Tugas akhir

yang mengharuskan adanya komunikasi antar dua device, bisa berupa PC-PC, mikro-

mikro, mikro-PC.

Saat membuat program antarmuka terutama antara PC dan mikrokontroller, maka akan

ada dua bagian program yang akan dibuat yakni program pada mikro dan PC. Pada mikro

kita harus memilih jenis antarmuka yang ingin digunakan, demikian halnya pada PC..

Ada banyak jenis antarmuka yang terdapat dalam PC computer, seperti : Serial Port

Interface (digunakan untuk koneksi ke Modems, Printers dan device lainnya), Parallel

Port Interface (Biasa digunakan untuk koneksi ke printer), the IDE Interface (ke Disk

Drives), the USB Interface (ke Mouse, Printers, Scanners, Card Readers, dll), Firewire

Interface (Untuk kecepatan tinggi seperti video cameras), dan various Audio (Sound

System) Interfaces.

Sedangkan pada mikrokontroller dapat di lihat dari diagram berikut :

Yang perlu diketahui dalam Interface computer yaitu :

ASCII (American Standard Code for Information Interchange)

Komputer cuma ngerti angka tertentu, ASCII merupakan kode yang mewakili karakter.

Hasil pembacaan ADC, yang dikeluarkan oleh mikro merupakan data ASCII.

Contoh Code ASCII :

Desimal = 33 ; Hexa = 21; Chr = !

Lebih lengkap di http://www.asciitable.com/

Page 58: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

58

Baudrate

Merupakan banyaknya bit yang dikirim dalam satu detik Beberapa standar baud rate:

1200

2400

4800

9600

19200

38400

57600

115200

... etc

Contoh baud rate 9600bps(bits per second) berarti satu bit membutuhkan waktu 1/9600

detik atau 0.000104 det atau 104uS.

PARALEL

Kita mulai dari yang paling mudah terlebih dahulu. Ini ngutip dari TA Harri SW :

Port parallel merupakan tipe soket pada PC (personal computer) untuk antarmuka dengan

berbagai peralatan, dikenal sebagai printer port atau Centronics port, dengan komunikasi

paralel dua arah menggunakan standar IEEE 1284 [6]. Gambar II.5 memperlihatkan kaki-

kaki pada port parallel tipe IBM, atau DB25. Penjelasan fungsi tiap pin dijelaskan dalam

Tabel II.1 berikut.

Page 59: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

59

SERIAL RS232

Page 60: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

60

Dalam RS232 ada dua jalur data RX dan TX. TX merupakan jalur dimana data dikirm

keluar dari device. Sedangkan RX merupakan jalur dimana device lain menaruh data

yang dibutuhkan untuk dikirm ke device tersebut

Dalam RS232 HIGH = -12V dan LOW = +12V. Karena microcontroller hanya mengerti

tegangan TTL HIGH = 5V dan LOW = 0V maka dibutuhkan pengkonversi tegangan

antara RS232 dengan mikrokontroller, yaitu IC MAX232.

Page 61: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

61

RS232 Data Transmission.

Transmission

1. Ketika tidak terjadi transmisi, keadaan TX HIGH (-12V) ( STOP CONDITION )

2. Ketika device mengirim data, TX LOW selama 104uS (baudrate9600bps) (Ini

disebut Start Bit –selalu nol-)

3. Lalu data dikirim dengan kecepatan 104uS/bit.

4. Terakhir TX set HIGH selama 104uS (balik lagi kayak no 1)

Reception

Hampir sama dengan transmisi, disini device yang akan menerima data menunggu

RX LOW (start bit) (+12V ). Bedanya dengan TX Pembacaan (keadaan LOW atau

HIGH) dilakukan ditengah.

Page 62: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

62

USB Sebenernya susah, tapi bisa beli jadi. Ada dua pilihan

Gambar disebelah ialah AVRISP MK2

(www.grifo.com/PROG/HBI/uk) khusus

untuk mikrokontroller tipe AVR, kalau di e-

bay $19 (ga termasuk ongkos kirim), tapi

kalau beli di surabaya (pesen) kira-kira

harganya 400.000an. Kalau yang ini fiturnya

lengkap, bisa untuk download program dan

yang terpenting bisa untuk interface USB,

makanya harganya juga lumayan.

Kalau USB to RS232 lebih murah kisaran 100.000, bahkan ada yang 50.000 (tapi

kualitasnya jelek). Jadi nanti data yang keluar masuk diperlakukan sama seperti

komunikasi serial RS232. Programnya (di mikro dan Delphi) sama seperti komunikasi

dengan serial RS232.

Referensi

Modul Praktikum Sistem Instrumentasi

http://www.bipom.com/applications/micro_interfacing.pdf

http://extremeelectronics.co.in/avr-tutorials/rs232-communication-the-basics

http://www.asciitable.com/

http://www.grifo.com/PROG/HBI/uk_AVRISP.htm

Page 63: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

63

BAB 6 DELPHI 7 (bukan untuk dibaca tapi DICOBA)

Bab ini sebenernya dari modul pelatihan, saya dah nyoba modulnya dan ternyata banyak

yang ga sinkron atau kurang jelas, nah disini saya benerin biar ga nyasar pas bikin

programnya. Paling enak baca bab ini sambil latihan pakai Delphi 7. Selain Delphi masih

banyak software yang lain, fiturnya juga pasti beda. Tapi intinya sih (cara makenya) sama

aja. Jadi pelajari dulu yang ini yak.

Buat kak Ignatius Aris dan Zulkifli, punten modulnya saya rombak dikit.

Oh iya, bahasa pemrograman Delphi hampir sama dengan pascal (malah pak Rizal

bilangnya sama). Karena kita tadi dah belajar C, jadi harus hati-hati yak mirip-mirip gitu

sama C tapi beda.

MODUL PELATIHAN DELPHI INSTRUMENTASI

BAB I

Form dan Unit

Berbeda dengan Pascal, pada Delphi

kita akan mengenal OOP (Object

Oriented Programming), jadi bila pada

Pascal kita akan melihat tampilan

yang menjemukan, pada Delphi kita

dapat mengatur tampilan kita

semenarik mungkin pada form yang

kita gunakan. Caranya cukup mudah,

kita hanya menaruh komponen-

komponen yang ingin kita gunakan

pada form tersebut, dan

memfungsikan masing-masing

komponen sesuai dengan yang kita

inginkan.

Unit

Setiap perubahan pada form akan

berakibat perubahan pada unit yang

kita miliki. Untuk pindah dari Form ke

Unit, tekan F12.

Berikut ini adalah bentuk unit yang

diberikan Delphi saat pertama kita

membuka sebuah Form.

unit Unit1;

interface

Page 64: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

64

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type

TForm1 = class(TForm)

private

{Private declarations}

public

{Public declarations}

end;

var

Form1:TForm1;

Implementation

{$R *.DFM}

end.

Komponen

Dalam membuat program, Delphi telah menyediakan banyak kemudahan, yaitu dengan

disediakannya komponen-komponen. Komponen ini merupakan sebuah prosedur atau

program yang sudah di kompile dan langsung dapat digunakan, sesuai dengan fungsinya

masing-masing.

Berikut merupakan tampilan komponen-komponen yang dapat digunakan dalam Delphi

ini:

Untuk menggunakan komponen ini, kita dapat meng-klik komponen yang diinginkan,

kemudian kita klik di Form, maka komponen tersebut akan muncul di Form.

Berikut kegunaan dari beberapa komponen:

Button/Bitbtn (Ke-8 dari kiri, klo bitbtn di Additional)

Biasa digunakan sebagai tombol kendali. Berbeda dengan Btn, pada Bitbtn kita dapat

menyisipkan warna pada tombol dan icon tertentu.

Panel (kedua dari kanan)

Berfungsi untuk mengelompokkan komponen-komponen.

Label (kelima dari kiri)

Berfungsi untuk menamakan atau memberi keterangan pada program.

Edit (keenam dari kiri)

Berfungsi sebagai masukan data (input) dalam bentuk string. Dari bentuk string ini, kita

dapat mengolahnya menjadi bentuk integer atau bentuk lainnya untuk kemudian menuju

operasi selanjutnya.

Page 65: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

65

Chart (keempat dari kanan)

Berfungsi untuk menampilkan data dalam bentuk grafik.

Stringgrid (kelima dari kiri)

Berguna untuk menaruh data string ke dalam bentuk kolom tabel, seperti pada Excel.

Kita harus mengubah type data ke dalam bentuk string terlebih dahulu apabila kita akan

menampilkan data yang bukan string.

PopupMenu

Berfungsi sebagai perintah yang aktif bila kita klik kanan mouse. Untuk

mengaktifkannya, kita harus mengaktifkan popup menu pada komponen yang diinginkan,

caranya: ubah pada object inspector.

MainMenu

Salah satu contoh MainMenu adalah Option. Pada komponen ini kita dapat menaruh

fungsi-fungsi program seperti pada aplikasi pada umumnya.

ComboBox

Berfungsi sebagai petunjuk untuk pemilihan berbagai masukan.

RadioButton

Secara prinsip, komponen ini mirip dengan Check Box, yang membedakan hanya pada

tampilannya saja.

Media Player

Berguna untuk menyalakan atau memainkan musik (format wav atau midi) dan

menjalankan video (format avi).

Timer

Berfungsi sebagai jam yang telah disediakan Delphi. Fasilitas ini dapat juga kita

manfaatkan untuk mendecode time, sehingga dapat terjadi akuisisi data.

Clientsocket

Digunakan di Client pada saat koneksi ke server.

Serversocket

Digunakan di Server, yang akan menyediakan layanan koneksi ke Client.

Masih banyak komponen lain yang ada dalam Delphi ini, penjelasan lebih lengkap dapat

ditemui pada Help Menu.

Object Inspector

Object Inspector berguna sebagai

Options dari masing-masing

komponen. Dengan Object Inspector

ini, kita dapat memanipulasi

komponen yang kita gunakan

(walaupun sebenarnya kita juga dapat

menggunakannya dengan menuliskan

lewat text mode).

Beberapa contoh properties:

Font

Menunjukkan jenis font apa yang

digunakan. Selain jenis font, dalam

menu ini terdapat juga pilihan style

dan size font yang akan digunakan.

Page 66: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

66

Caption

Merupakan judul dari form yang sedang digunakan.

Name

Pada prinsipnya, Name hampir sama dengan Caption. Yang membedakannya, Caption

mengubah judul dari Form secara utuh, sedangkan Name hanya mengubah judul yang

tertera pada komponen (yang akan ditampilkan) tanpa mengubah nama komponen

tersebut. Oleh karena itu, ketika kita menggunakan suatu komponen, kita tetap

menggunakan nama kompenennya, bukan nama pada captionnya.

Enabled

Menunjukka bahwa komponen ini bisa digunakan atau tidak. Perintah cukup penting

apabila kita tidak ingin user menekan tombol yang tidak diinginkan.

Height

Merupakan tinggi dari komponen yang akan kita posisikan pada form atau pada

komponen yang lainnya.

Width

Merupakan lebar dari komponen yang akan kita posisikan pada form atau komponen

yang lainnya.

Popup Menu

Auto Size

Komponen ini memberikan pilihan apakah Form yang kita gunakan bisa diperbesar atau

tidak.

Text

Biasanya terdapat pada komponen edit dan mask edit. Kegunaanya untuk menaruh kata-

kata pada suatu komponen.

Color

Berfungsi unutk mengubah warna suatu komponen.

Visible

Memberikan pilihan kepada komponen apakah akan ditampilkan atau tidak.

Hint

Berfungsi untuk memberikan keterangan ketika kursor kita berada di atas suatu

komponen.

BorderStyle

Memberikan pilihan bingkai yang dapat kita gunakan pada Form.

Dengan Object Inspector, kita juga dapat menentukan event apa yang kita buat untuk

suatu komponen. Beberapa contoh event, antara lain:

Onclick

Artinya, prosedur yang kita tuliskan pada suatu komponen akan dijalankan ketika kita

meng-klik komponen tersebut.

Onkeypress

Artinya, prosedur yang kita tuliskan pada suatu komponen akan dijalankan ketika kita

menekan suatu tombol. Perlu diperhatikan bahwa Delphi mengenal character yang

ditekan melalui kode yang masuk ke dalam variabel key.

Contoh:

Prosedur TForm1.Edit1KeyPress(Sender:Tobject; var Key: Char);

Begin

Page 67: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

67

If key =#13 then ....(isikan perintah)

End;

artinya, bila key =#13 (enter), maka p rosedurnya akan dijalankan.

Contoh Program:

Buatlah suatu program dengan sebuah click button, yang mana bila di-klik namanya

berubah dari “start” menjadi “stop”, dan bila di klik lagi, maka namanya akan berubah

lagi menjadi “start”.

Solusi:

Ambil Komponen Button1,

Double click pada button tersebut,

Isikan pada unit1 prosedur berikut:

Prosedure TForm1.Button1Click(Sender: Tobject);

Begin

If Button1.caption =‟Start‟ then

Button1.caption := „Stop‟ //check caption pada button1

//apabila = „Start‟, maka ubah caption menjadi „Stop‟

Else Button1.caption: = „Start‟ ;

End;

File-file pada Delphi

*.pas

Merupakan source file, disini akan disimpan kode pascal yang kita tulis.

*.dpr

Merupakan project file. Sebagai project file, file ini berguna untuk menggabungkan satu

atau lebih file-file source.

*.dpu (Delphi Compiled Unit)

Pada saat kita membuat sebuah aplikasi, Delphi akan membuat file ini. File ini berfungsi

sebagai hyperlink, sehingga kita bisa membuat beberapa form yang terhubung satu

dengan yang lain.

*.dfm (Delphi Form)

File ini berisi informasi mengenai data-data form.

*.res (Windows Resources)

*.dof (Delphi Project Option)

Kita dapat mengubah icon aplikasi yang kita buat dan datanya akan disimpan di sini.

*.exe

Merupakan application file setelah kita meng-compile program yang telah kita buat.

BAB II

Pengolahan Data, Chart dan Oleobject

Type data pada Delphi

Pada umumnya, Delphi merupakan type data yang sama dengan pascal. Namun, type data

pada Delphi lebih lengkap dibandingkan Pascal. Type data yang biasa digunakan pada

Delphi, antara lain:

Page 68: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

68

String

Biasa digunakan untuk memasukkan data string (gabungan beberapa character)

Integer

Merupakan bilangan asli (1,2,3, . . .)

Real

Merupakan bilangan bulat (berupa pecahan dan integer)

Byte

Besar dari tupe ini hanya 8-bit.

Word

Besar bilangan dari type ini adalah 16-bit.

Date and time

Type waktu dan tanggal yang disediakan Delphi.

Konversi type data

Dalam pengolahan data , biasanya kita memerlukan suatu konversi type data, banyak

sekali konversi type data yang bisa dilakukan Delphi, antara lain:

Strtoint

Mengubah type data string menjadi integer.

Inttostr

Mengubah type data integer menjadi string.

Timetostr

Mengubah type data time menjadi string.

Strtofloat

Mengubah type data string menjadi float.

Floattostr

Mengubah type data float menjadi string.

Agar lebih jelas, perhatikan contoh program jam berikut:

Masukkan komponen timer pada form, (ada di system)

Masukkan label pada form (hapus captionnya), (ada di standard)

Double click pada komponen timer,

Tulis prosedur berikut:

Begin

Label1.caption:=timetostr(time);

End;

Penjelasan:

Inti dari program ini adalah mengubah time menjadi bentuk string. Program ini dapat

menunjukkan jam komputer anda, komponen timer akan terus berubah mengikuti waktu

pada jam komputer. Perubahan ini langsung ditulis pada label1.caption, sehingga pada

label 1 berubah juga tiap detiknya.

Memasukkan data ke grafik

Pada pascal, biasanya kita mengalami kesulitan ketika membuat grafik dari data-data

yang kita miliki. Kita dapat memecahkan permasalahan tersebut dengan menggunakan

Delphi.

Perhatikan contoh berikut:

Page 69: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

69

Masukkan komponen,

Edit1

Edit2

Bitbtn1 (ubah captionnya menjadi Send)

Bitbtn2 (ubah captionnya menjadi Clear)

Chart1 (ambil dari Additional)

Double klik pada chart hingga muncul tampilan berikut

Klik tombol Add hingga muncul tampilan berikut

Page 70: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

70

Pilih bentuk grafik, misal line, klo mau 2 dimensi contreng di 3D kosongkan. Pilih OK

Setting chart selesai, pilih close. Hasilnya jadi gini

Page 71: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

71

Tulis prosedur berikut ini:

Prosedure TForm1.Bitbtn1click(sender:Tobject);

Begin

With chart do

With series1 do

Addxy(strtofloat(edit1.text),strtofloat(edit2.text),”,clblue);

Edit1.Clear;

Edit2.clear;

End;

Masukkan data untuk sumbu x pada edit1.text dan sumbu y pada edit2.text

Penjelasan:

Fungsi utama terletak pada prosedure bitbtn1click, setelah tombol ini ditekan, maka isi

dari edit1 (data untuk sumbu x) dan edit2 (data untuk sumbu y) akan dikirim ke grafik.

Pada grafik kita menggunakan addxy, yang mempunyai urutan fungsi addxy (sumbux,

sumbuy, label, warna grafiknya). Perhatikan, data sumbu x pada edit1 dan data sumbu y

pada edit2 harus diubah menjadi float. Untuk label, sebaiknya dikosongkan saja (“ ”),

mengenai warna grafik dapat dilihat pada properties warna seperti yang telah disediakan

oleh Delphi. kegunaan akhir program ini, kita dapat memasukkan berbagai nilai x dan y

(baik dalam bentuk integer maupun real), sehingga data yang telah dihasilkan dapat lebih

mudah dianalisa dengan melihat perubahan pada grafiknya.

Di bawah ini dijelaskan bagaimana mengedit grafik dan bagian-bagian yang penting

untuk diedit.

Oleobject Menggunakan Oleobject untuk akses ke Microsoft Excel dan Microsoft Word

Dengan oleobject, kita bisa mengirim data dan mengakses program-program dari

Microsoft (seperti Excel dan Word), terkadang kita ingin melakukan pengolahan data

yang lebih advanced dengan Excel, oleobject inilah yang bisa kita andalkan untuk

mengatasi hal tersebut.

Berikut ini adalah contoh memasukkan kata yang kita inginkan ke dalam icrosoft word:

Uses comobj;

Prosedure TForm1.bitbtn3click(sender:Tobject);

Page 72: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

72

Var

Keword:variant;

Begin

Keword:=createoleobject(„word.basic‟);

Keword.filenew; {membuka file baru}

Keword.appshow; {perintah menampilkan aplikasi word}

Keword.insert(„Delphi itu menyenangkan‟);

End;

Keterangan program:

Penggunaan oleobject harus diawali dengan comobj.

Kita memasukkan variant keword:=createoleobject(„word.basic‟), kita dapat

menggantinya dengan („excel.Application‟) bila kita ingin koneksi ke Microsoft Excel.

Keword.filenew membuka file baru pada Ms.Word.

Keword.appshow menampilkan program Ms.Word.

Keword.insert mengisi data pada Ms.Word.

Kita dapat menggabungkan program memasukkan data ke grafik dan hasilnya akan di

tampilkan pada Ms.Excel. Berikut flowchart untuk membuatnya:

<gambar>

Prosedur:

Unit jam_grap;

Interface

Uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls,

ExtCtrls, TeEngine, Series, Buttons, TeeProcs, Chart;

Type

TForm1=class(TForm)

Label1:Tlabel;

Timer1:TTimer;

Chart1:TChart;

Panel1:TPanel;

Label2:TLabel;

Label3:TLabel

Edit1:TEdit;

Edit2:TEdit;

BitBtn1:TBitBtn;

Series1:TlineSeries;

BitBtn2:TbitBtn;

BitBtn3:TBitBtn;

Procedure Timer1Timer(Sender:TObject);

Procedure BitBtn1Click(Sender:TObject);

Procedure BitBtn2Click(Sender:TObject);

Page 73: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

73

Procedure BitBtn3Click(Sender:TObject);

Procedure FormCreate(Sender:TObject);

Procedure FormDestroy(Sender:TObject);

Private

{Private declarations}

Public

{Public declarations}

End;

Var

Form1:TForm1;

Fa,g:variant;

I,j:integer;

Datax,datay:array[0..20]of real;

Implementation

{$R*.DFM}

Uses comobj;

Prosedure TForm1.Timer1Timer(Sender:TObject);

Begin

Label1.caption:=timetostr(time);

End;

Prosedure TForm1.BitBtn1Click(sender:TObject);

Begin

Datax[i]:=strtofloat(edit1.text);

Datay[j]:=strtofloat(edit2.text);

With chart1 do

With series1 do

Addxy(strtofloat(edit1.text),strtofloat(edit2.text).”.clblue);

Edit1.clear;

Edit2.clear;

i=i +1;

j=j+1;

End;

Prosedure TForm1.BitBtn2Click(sender:Tobject);

Begin

Series1.clear;

End;

Prosedure TForm1.BitBtn3Click(sender:Tobject);

Begin

fa:=createobject(„Excel.application‟);

fa.visible:=true;

fa.workbook.add;

Page 74: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

74

fa.workbook[1].worksheets[„kirim‟];

g.cells[1,1]:=‟Nomor‟;

g.cells[1,2]:=‟Data X‟;

g.cells[1,3]:=‟Data Y‟;

for i:=2 to j+1 do

begin

g.cells[i,1]:=formatfloat(“,i-1);

end;

for i:=2 to j+1 do

begin

g.cells[i,2]:=formatfloat(“,datax[i]);

end;

for i:=2 to j+2 do

begin

g.cells[i,3]:=formatfloat(„#0.##‟,datay[i]);

end;

end;

procedure TForm1.FormCreate(Sender:TObject);

begin

i:=2;

j:=2;

end;

procedure TForm1.FormDestroy(Sender:TObject);

begin

if not varisempty(fa) then

begin

fa.displayalert:=true;

fa.quit;

end;

end;

end;

penjelasan:

Pertama, kita masukkan data ke edit1 dan edit2,

Kedua data tersebut disimpan pada array i dan j,

Tampilkan data ke dalam grafik,

Tambah 1 , pada i dan j untuk menaikkan array, sehingga datanya tidak bertumpuk,

Data yang terkumpul kemudian dikirim ke Excel,

INTERFACE DARI DELPHI

CPORT-3.0

Sekarang kita bahas yang diluar modul diatas, yakni akses serial untuk Delphi. Jadi

ceritanya gini… dulu jamannya windows98 untuk mengakses port serial bisa langsung,

tapi sekarang ini (XP,Vista,etc) dah diblokir, jadi harus pake tambahan driver lagi. Saya

Page 75: Guidline Project

Nabi Shallallahu ‘alaihi wa sallam pun mengatakan bahwa salah satu dari amalan yg tidak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg bermanfaat.

75

pake cport-3.0 (Freeware) yang bikinnya Dejan Crnila, untuk pelatihan ini sudah saya

sertakan. Untuk Delphi versi 8, dll. versi cport-nya beda lagi.

Cara Instal

Pindahin dulu semua file Comport library yang da di C.

Ini dari blog http://purnawarmanmusa.blogsome.com/2007/03/

1. Klik File Open

2. Cari direktory dimana cport-3.0 di extract

3. Pilih file CPortLib6.dpk (yang warna icon-nya nyolok warna merah)

4. Setelah kebuka tekan tekan Compile (jangan Install) karena ini module utk Runtime-

Library

5. Setelah OK, File-Close All lagi

6. Buka file DsgnCPort6.dpk, tekan Compile, setelah ok tekan Instal

7. Konfirmasi komponen telah di Install akan muncul

8. Close All lagi

9. Selanjutnya mendaftarkan cport library ke Search-Path

10. Klik menu Tools-Environtment Options

11. Aktifkan tab Library

12. Klik tombol „...‟ di bagian Library Path

13. Setelah muncul Directories dialog, cari lokasi dimana Cport Lib tadi di extract

14. Setelah ketemu klik tombo Add

15. Tekan Ok, dan OK lagi utk nutup Environtment Options

16. Selesai, komponen siap digunakan

Tapi saya ubah dikit, soalnya kita pake cport3.0 jadi library nya yang 6.

Cara Pake Kalau sudah terinstal nanti komponennya nambah kayak gini

Pilih yang , kita pelajari yang ini yak.

Double klik di ntar bakal muncul gambar

disebelah, tinggal setting deh. Biar ga bingung

dang a cape mikir lagi, ikutin aja setingan

disebelah.

Page 76: Guidline Project

“ Allah itu senantiasa menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ).

76

coba dilihat Object inspectornya. Di Properties ada

Baudrate (samakan dengan baudrate pada mikro),

Connected, kalau mau konek terus (serial portnya) ubah

jadi True, tapi kalau mau dibuka tutp dari program

Connected = False.

Sekarang lihat event, double klik di sebelah OnRxChar,

dari sini kita baru bisa bikin programnya