Anda di halaman 1dari 76
GUIDLINE PROJECT AVR with CodevisionAVR - Microcontroller AVR ATMega8535 - CodeVision AVR - Interface (Parallel,

GUIDLINE PROJECT

AVR with CodevisionAVR

GUIDLINE PROJECT AVR with CodevisionAVR - Microcontroller AVR ATMega8535 - CodeVision AVR - Interface (Parallel,

- 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

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

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

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.

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

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

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.

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.

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.

saya sertakan juga di halaman berikutnya. Gambar diatas tu rangkaian STK200 hasil bikin sendiri. Saya

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.

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

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

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.

yg telah meninggal sekalipun adalah ilmu yg bermanfaat. VCC 5 volt, ini sama dengan VDD pada

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!!!

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

STK500

Nah, programmer berikutnya yang bisa kita buat sendiri adalah ini STK 500. Linknya http://www.fischl.de/usbasp/

adalah ini STK 500. Linknya http://www.fischl.de/usbasp/ Klo tadi di STK200 kita hanya menambahkan IC buffer 74HC244,

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:

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.

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

Set jumper J2 to

working programmer (e.g. with avrdude, uisp, activate

USBasp firmware update function. You have to change the fuse bits for external crystal (see "make fuses").

# TARGET=atmega8

# TARGET=atmega48

).

HFUSE=0xc9 LFUSE=0xef

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

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

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

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.

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

USBasp

Firmware-only AVR USB driver avrdude libusb

libusb-win32

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

http://www.obdev.at/products/avrusb/ http://www.nongnu.org/avrdude/ http://libusb.sourceforge.net/

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

2009-02-28 Thomas Fischl <tfischl@gmx.de> http://www.fischl.de

http://libusb-win32.sourceforge.net/ 2009-02-28 Thomas Fischl <tfischl@gmx.de> http://www.fischl.de 11

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

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.

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.

DESKRIPSI PIN

PIN 1-8 Port B , merupakan Port I/O 8-bit dua arah ( bi-directional) dgn resistor

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)

PB1

:

XCK (USART External Clock Input/Output) T1 (Timer/Counter 1 External Counter Input)

PB2

:

AIN0 (Analog Comparator Positif Input)

PB3

:

INT2 (External Interrupt 2 Input) AIN1 (Analog Comparator Negatif Input)

PB4

:

OC0 (Output CompareTimer/Counter 0) 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, I 2 C)

PC1

:

SDA (Serial Data Input/Output, I 2 C)

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.

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

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

= dikalikan 2 pangkat 0 …dst Contohnya: Biner = 1001 Nilai decimal dari bilangan 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

dari F ditaruh di baris yang lebih kiri. Contoh: Hexa : 17 Nilai decimal dari bilangan

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

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.

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

hal yang berbeda, seperti contoh untuk register ADMUX ini Arti dari tiap bit ini bisa dilihat

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

Arti dari tiap bit ini bisa dilihat dalam datasheet. Misal, Pada register ADMUX, untuk bit ke

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 )

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

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.

yang harus ditunggu-, sangat penting saat pembuatan program. Jadi secara garis besar kalau mau kenal sama

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

kalau mau kenal sama mikro(apapun jenisnya) ini gambarannya. Setiap jenis mikro punya karakteristik yang berbeda, jadi

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…

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.

BAB 3

CODEVISIONAVR

sekalipun adalah ilmu yg bermanfaat. BAB 3 CODEVISIONAVR CodevisionAVR merupakan compiler bahasa C, didesain khusus

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 I 2 C 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:

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

·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 ·I 2 C 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.

Sensors initialization ·LCD module initialization. Sebelum memulai semua program diatas, maka sebelumnya saya

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

jadi terasa lebih mudah klo pake yang satu ini). CODEWIZARD Sekarang masuk ke Codewizard, pake ini

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

: Keadaan masing-masing Port (sebagai input /output)

: Kalau mau pake Interrupt (ada tiga)

: bisa dipake untuk PWM

: Kalau mau pakai LCD

: Kalau mau pakai DS1302, untuk waktu detik s.d tahun

2. Ports

3. External IRQ

4. Timers

5. LCD

6. Bit-Banged

7. Project Information

: Ga ngaruh ke program, hanya info pembuatan program

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.

8. I2C

: Salah satu interface serial dari mikrokontroller keluarga AVR

10. : Salah satu interface serial dari mikrokontroller keluarga AVR

: Salah satu interface serial dari mikrokontroller keluarga AVR

9. 1 Wire

2 Wire(I2C)

11. : Salah satu interface serial dari mikrokontroller keluarga AVR

12. Analog Comparator : kalau mau pake komparator

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

14. : Serial Pheripeal Interface

USART

ADC

SPI

Sekarang dijelasin satu-satu

1. Chip

Interface USART ADC SPI Sekarang dijelasin satu-satu 1. Chip Yang ini fungsinya untuk ceklist hardware yang

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

Reset Source di klik, klo ga ya jangan diapa-apain. 2. PORTS Ini untuk setting port, mau

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.

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

hambanya itu menolong saudaranya.” ( HR. As Shaikhan ). 3. Enternal IRQ 4. Timer 5. LCD

3. Enternal IRQ

saudaranya.” ( HR. As Shaikhan ). 3. Enternal IRQ 4. Timer 5. LCD Yang ini untuk

4. Timer

( HR. As Shaikhan ). 3. Enternal IRQ 4. Timer 5. LCD Yang ini untuk mengaktifkan

5. LCD

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.

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.

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.

yg telah meninggal sekalipun adalah ilmu yg bermanfaat. Enaknya AVR, make LCD jadi gampang banget, programnya

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

LCD pin 4 nyambungnya ke mikro PORTA.0, dst. 6. Komparator Lucu ya, mikro ini ada komparatornya.

Lucu ya, mikro ini ada komparatornya. Prinsip komparatornya sama kayak IC analog

7.ADC

Prinsip komparatornya sama kayak IC analog 7.ADC Dalam mirko ini sudah terdapat fasilitas ADC sampai 10

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

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

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

8. Macam macam jalur Interface

(tanpa perlu pemicu). 8. Macam – macam jalur Interface Yang terakhir ini tentang komunikasi/interface (Bab 5)
(tanpa perlu pemicu). 8. Macam – macam jalur Interface Yang terakhir ini tentang komunikasi/interface (Bab 5)

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.

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.

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 ADMUX = 15

; dalam Hexa ; 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);

{

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

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

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.

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*10 38

Double

4

byte

1.2*10 -38 s/d 3.4*10 38

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

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

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

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.

^

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

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

%=

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:

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.

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:

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

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

If (kondisi)

{

else

adalah sebagai berikut:

//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;

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.

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

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

{

If (kondisi_3)

{

//blok pernyataan_2 yang akan dikerjakan jika kondisi_1 dan kondisi_3 terpenuhi

}

}

17. Pernyataan Switch

Digunakan

kemungkinan.

untuk

melakukan

pengambilan

keputusan

terhadap

banyak

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.

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.

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++;

}

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

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

yang digunakan untuk pengulangan sebuah pernyataan atau blok pernyataan secara terus menerus selama kondisi tertentu masih terpenuhi.

hampir sama dengan pernyataan while, yaitu pernyataan

while

Bentuk pernyataan while adalah sebagai berikut:

do {

//sebuah pernyataan atau blok pernyataan

}while (kondisi);

adalah bahwa pada

pernyataan while pengetesan kondisi dilakukan terlebih dahulu, jika kondisi

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

do

pengetesan kondisi, jika kondisi terpenuhi maka dilakukan pengulangan pernyataan atau blok pernyataan lagi. Sehingga, dengan demikian pada

pernyataan do

blok pernyataan pasti akan dikerjakan minimal satu kali,

blok pernyataan dikerjakan terlebih dahulu setelah itu baru dilakukan

Yang membedakan antara pernyataan while dengan do

while

while,

while

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

}

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.

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};

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

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.

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.

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.

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

Caranya sebagai berikut:

#asm

; instruksi-instruksi assembler

#endasm

Contoh:

#asm

ldi r0,100

mov r2,r3

#endasm

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.

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

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

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

Pilih shortcut codevisionAVR dengan tampilan seperti berikut 2. Buat file baru dengan cara : File ,

2. Buat file baru dengan cara : File , NEW

dengan tampilan seperti berikut 2. Buat file baru dengan cara : File , NEW 3.Pilih Project

3.Pilih Project

dengan tampilan seperti berikut 2. Buat file baru dengan cara : File , NEW 3.Pilih Project

4. Pilih Codewizard

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.

yg telah meninggal sekalipun adalah ilmu yg bermanfaat. 5. pilih Atmega 6. Menggunakan CodeWizard : Pengaturan

5. pilih Atmega

6. Menggunakan

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

Chip, jenis mikro dan nilai crystal yang digunakan. 7. Menggunakan CodeWizard, setting PORTC sebagai Output -

7. Menggunakan CodeWizard, setting PORTC sebagai Output

- klik PORT C

- klik In (agar berubah menjadi OUT)

- Set Chip, pilih mikro dan kristal yang digunakan

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

menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ). 8. Simpan hasil CodeWizard

8. Simpan hasil CodeWizard

menolong hambanya selagi hambanya itu menolong saudaranya.” ( HR. As Shaikhan ). 8. Simpan hasil CodeWizard

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. Save setting : save tiga kali dengan nama file yang persis sama

setting : save tiga kali dengan nama file yang persis sama 10. Hasil yang diperoleh (klo

10. Hasil yang diperoleh (klo ga kluar sperti ini, di kolom kiri code navigator- klik file yang dot c misal title.c)

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

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

11. Tulis program di while

PORTC = 0xFF;

HR. As Shaikhan ). 11. Tulis program di while PORTC = 0xFF; SETTING Chip Programmer Yang

SETTING Chip Programmer

Yang satu ini jangan sampai kelupaan

1. Pilih settings, programmer

ini jangan sampai kelupaan 1. Pilih settings, programmer 2. Atur setting sesuai dengan programmer yang digunakan.

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

STK200+ (parallel port). OK

yang digunakan. Sebagai contoh saya gunakan STK200+ (parallel port). OK CARA COMPILE PROGRAM 1. Buka Project,

CARA COMPILE PROGRAM

1. Buka Project, Configure

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.

yg telah meninggal sekalipun adalah ilmu yg bermanfaat. 2. Pilih AfterBuild, Pilih program the CHIP 3.

2. Pilih AfterBuild, Pilih program the CHIP

yg bermanfaat. 2. Pilih AfterBuild, Pilih program the CHIP 3. Pilih OK, PERHATIAN : JANGAN MERUBAH

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

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

hambanya itu menolong saudaranya.” ( HR. As Shaikhan ). 4. Pilih Build All 5. Setelah tidak

4. Pilih Build All

saudaranya.” ( HR. As Shaikhan ). 4. Pilih Build All 5. Setelah tidak ada error maka

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

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.

yg telah meninggal sekalipun adalah ilmu yg bermanfaat. OK tinggal sambungkan programmer/downloader ke komputer (jgn

OK tinggal sambungkan programmer/downloader ke komputer (jgn lupa power supply programmer), trus klik Program the chip.

SELESAI

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

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}

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.

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

Codewizard

-Aref ke tegangan referensi ADC (missal 5 volt) -PORTA.0 sebagain input ADC (hubungkan ke tegangan variabel) : setting PORTC sebagai output, set ADC 8 bit, set Chip

Buat File baru lalu setting codewizard aktifkan ADC

set Chip Buat File baru lalu setting codewizard aktifkan ADC Berikut Programnya

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

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

Comments:

: 3/8/2009

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

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

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.

// 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

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

// 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

Codewizard

-Aref ke tegangan referensi ADC (missal 5 volt) -PORTA.0 sebagain input ADC (hubungkan ke tegangan variabel) : Set Chip, Set LCD, set ADC 8 bit

ADC (missal 5 volt) -PORTA.0 sebagain input ADC (hubungkan ke tegangan variabel) : Set Chip, Set

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.

/***************************************************** 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

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

: 3/8/2009

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

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

// 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

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.

// 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 :

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

hambanya itu menolong saudaranya.” ( HR. As Shaikhan ). Program yang harus ditambahkan Diawal :

Program yang harus ditambahkan Diawal :

#include<delay.h>

Diakhir :

while (1)

{

// Place your code here

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

delay_ms(100);

}

}

};

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.

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 :

pada mikrokontroller dapat di lihat dari diagram berikut : Yang perlu diketahui dalam Interface computer yaitu

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/

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

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.

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

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.

yg tid ak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg
yg tid ak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg

SERIAL RS232

yg tid ak akan putus pahalanya dari seorang muslim yg telah meninggal sekalipun adalah ilmu yg

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

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.

TTL HIGH = 5V dan LOW = 0V maka dibutuhkan pengkonversi tegangan antara RS232 dengan mikrokontroller,
TTL HIGH = 5V dan LOW = 0V maka dibutuhkan pengkonversi tegangan antara RS232 dengan mikrokontroller,
TTL HIGH = 5V dan LOW = 0V maka dibutuhkan pengkonversi tegangan antara RS232 dengan mikrokontroller,

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.

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)

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

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.

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

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

USB

Sebenernya susah, tapi bisa beli jadi. Ada dua pilihan

USB Sebenernya susah, tapi bisa beli jadi. Ada dua pilihan Gambar ( www.grifo.com/PROG/HBI/uk ) khusus untuk

Gambar

(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.

MK2

disebelah

ialah

AVRISP

makanya harganya juga lumayan. MK2 disebelah ialah AVRISP Kalau USB to RS232 lebih murah kisaran 100.000,

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

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.

BAB 6 DELPHI 7

(bukan untuk dibaca tapi DICOBA)

bermanfaat. BAB 6 DELPHI 7 ( bukan untuk dibaca tapi DICOBA) Bab ini sebenernya dari modul

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

F12. Berikut ini adalah bentuk unit yang diberikan Delphi saat pertama kita membuka sebuah Form. unit

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

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:

komponen-komponen yang dapat digunakan dalam Delphi ini: Untuk menggunakan komponen ini, kita dapat meng-klik

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.

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.

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.

ini, penjelasan lebih lengkap dapat ditemui pada Help Menu. Object Inspector Object Inspector berguna sebagai Options

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.

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

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

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.

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:

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

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:

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.

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

dari Additional) Double klik pada chart hingga muncul tampilan berikut Klik tombol Add hingga muncul tampilan

Klik tombol Add hingga muncul tampilan berikut

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

hambanya itu menolong saudaranya.” ( HR. As Shaikhan ). Pilih bentuk grafik, misal line, klo mau

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

misal line, klo mau 2 dimensi contreng di 3D kosongkan. Pilih OK Setting chart selesai, pilih

Setting chart selesai, pilih close. Hasilnya jadi gini

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.

yg telah meninggal sekalipun adalah ilmu yg bermanfaat. Tulis prosedur berikut ini: Prosedure

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);

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

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);

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.

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

Implementation

{$R*.DFM}

Uses comobj;

20]of real;

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;

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

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

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.

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.

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

Kalau sudah terinstal nanti komponennya nambah kayak gini Pilih yang , kita pelajari yang ini yak.

Pilih yang

terinstal nanti komponennya nambah kayak gini Pilih yang , kita pelajari yang ini yak. ntar bakal

, kita pelajari yang ini yak.

nambah kayak gini Pilih yang , kita pelajari yang ini yak. ntar bakal muncul gambar disebelah,
nambah kayak gini Pilih yang , kita pelajari yang ini yak. ntar bakal muncul gambar disebelah,

ntar bakal muncul gambar

disebelah, tinggal setting deh. Biar ga bingung

dang a cape mikir lagi, ikutin aja setingan disebelah.

Double klik di

75

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

hambanya itu menolong saudaranya.” ( HR. As Shaikhan ). coba dilihat Object inspectornya. Di Properties ada

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

Connected = False. Sekarang lihat event, double klik di sebelah OnRxChar, dari sini kita baru bisa