Anda di halaman 1dari 17

DAFTAR ISI

Kata Pengantar ............................................................................. v Daftar Isi ..................................................................................... vii Bab 1 1.1 Membuat Rangkaian dan PCB................................... 1 Mengenal Software Protel DXP...................................... 1 1.1.1 Spesifikasi Protel DXP .................................... 2 1.1.2 Membuat Proyek Baru .................................... 3 Membuat Dokumen PCB ............................................ 16 1.2.1 Routing Komponen....................................... 20 1.2.2 Mencetak Hasil (Print Out) dengan File CamStatic .................................................... 23 Proyek 1: Lampu Kelap-Kelip.................................. 27 Teori Dasar Mikrokontroler AVR ................................. 27 2.1.1 Arsitektur ATmega8535 ............................... 29 2.1.2 Konfigurasi Pin ATmega8535 ....................... 30 Penggunaan Software AVR Studio .............................. 33 Aplikasi Lampu LED Kelap-Kelip ............................... 35 Isi Program dengan PonyProg ..................................... 37 Proyek 2: Analog to Digital Converter (ADC) ........... 43 Teori ADC AVR .......................................................... 43 3.1.1 Inisialisasi ADC ............................................ 44

1.2

Bab 2 2.1

2.2 2.3 2.4 Bab 3 3.1

vii

BAB

Proyek 3: Display LCD

Pokok Bahasan: Konsep LCD Aplikasi penampil LCD

4.1 Teori Dasar LCD


LCD (Liquid Crystal Display) adalah modul penampil yang banyak digunakan karena tampilannya menarik. LCD yang paling banyak digunakan saat ini ialah LCD M1632 refurbish karena harganya cukup murah. LCD M1632 merupakan modul LCD dengan tampilan 2x16 (2 baris x 16 kolom) dengan konsumsi daya rendah. Modul tersebut dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan LCD. Mikrokontroler HD44780 buatan Hitachi yang berfungsi sebagai pengendali LCD memiliki CGROM (Character Generator Read Only Memory), CGRAM (Character Generator Random Access Memory), dan DDRAM (Display Data Random Access Memory). LCD yang umum, ada yang panjangnya hingga 40 karakter (2x40 dan 4x40), dimana kita menggunakan DDRAM untuk mengatur tempat penyimpanan karakter tersebut. 51

Gambar 4.1 Susunan alamat pada LCD

Alamat awal karakter 00H dan alamat akhir 39H. Jadi, alamat awal di baris kedua dimulai dari 40H. Jika Anda ingin meletakkan suatu karakter pada baris ke-2 kolom pertama, maka harus diset pada alamat 40H. Jadi, meskipun LCD yang digunakan 2x16 atau 2x24, atau bahkan 2x40, maka penulisan programnya sama saja. CGRAM merupakan memori untuk menggambarkan pola sebuah karakter, dimana bentuk dari karakter dapat diubah-ubah sesuai dengan keinginan. Namun, memori akan hilang saat power supply tidak aktif sehingga pola karakter akan hilang. Berikut tabel pin untuk LCD M1632. Perbedaannya dengan LCD standar adalah pada kaki 1 VCC, dan kaki 2 Gnd. Ini kebalikan dengan LCD standar.
Tabel 4.1 Susunan kaki LCD M1632
NO 1 2 3 4 5 6 7 8 9 10 11 12 Nama Pin VCC GND VEE RS R/W E D4 D5 D6 D7 Anode Katode + 5V 0V Tegangan Kontras LCD Register Select, 0=Input Instruksi, 1=Input Data 1= Read ; 0 = Write Enable Clock Data Bus 4 Data Bus 5 Data Bus 6 Data Bus 7 Tegangan Positif backlight Tegangan Negatif backlight PD7 PD5 PD6 PC4 PC5 PC6 PC7 Deskripsi Port VCC GND

52

Perlu diketahui, driver LCD seperti HD44780 memiliki dua register yang aksesnya diatur menggunakan pin RS. Pada saat RS berlogika 0, register yang diakses adalah perintah, sedangkan pada saat RS berlogika 1, register yang diakses adalah register data. Agar dapat mengaktifkan LCD, proses inisialisasi harus dilakukan dengan cara mengeset bit RS dan meng-clear-kan bit E dengan delay minimal 15 ms. Kemudian mengirimkan data 30H dan ditunda lagi selama 5 ms. Proses ini harus dilakukan tiga kali, lalu mengirim inisial 20H dan interface data length dengan lebar 4 bit saja (28H). Setelah itu display dimatikan (08H) dan di-clear-kan (01H). Selanjutnya dilakukan pengesetan display dan cursor, serta blinking apakah ON atau OFF. Init_LCD:
cbi sbi cbi ldi Loopdelay: rcall dec cpi brne ldi rcall rcall ldi rcall rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall sbi ret portb,3 portd,7 portd,6 r20,8 delay5 r20 r20,0 Loopdelay r17,0x30 Kirim_Perintah delay5 r17,0x30 Kirim_Perintah delay100u r17,0x30 Kirim_Perintah r17,0x20 Kirim_Perintah r17,0x28 Kirim_Perintah r17,0x08 Kirim_Perintah r17,0x01 Kirim_Perintah r17,0x0E Kirim_Perintah r17,0x06 Kirim_Perintah portb,3

53

Gambar berikut menampilkan hubungan antara LCD dengan port mikrokontroler, biasa terdapat potensiometer untuk mengatur kontras/kecerahan dari LCD tersebut. Pada input LED, dipasang transistor sebagai penguat arus, sehingga dapat menampilkan cahaya LED yang cukup terang.
VCC VCC R2 10K VEE R/W D4 D6 VCC VCC U1 Q1 2N3904 8 X LED R4 390 R3 390 1 2 3 4 5 6 7 8 14 15 16 17 18 19 20 21 9 C1 Cap 18pF C2 Cap 18pF 2 12 13 PB0 (XCK/T0) PB1 (T1) PB2 (AIN0/INT2) PB3 (AIN1/OC0) PB4 (SS) PB5 (MOSI) PB6 (MISO) PB7 (SCK) PD0 (RXD) PD1 (TXD) PD2 (INT0) PD3 (INT1) PD4 (OC1B) PD5 (OC1A) PD6 (ICP) PD7 (OC2) RESET XTAL2 XTAL1 PA0 (ADC0) PA1 (ADC1) PA2 (ADC2) PA3 (ADC3) PA4 (ADC4) PA5 (ADC5) PA6 (ADC6) PA7 (ADC7) PC0 (SCL) PC1 (SDA) PC2 PC3 PC4 PC5 PC6 (TOSC1) PC7 (TOSC2) VCC AVCC AREF GND GND 1 ATmega8535 11.0592MHz 40 39 38 37 36 35 34 33 22 23 24 25 26 27 28 29 10 30 32 31 11 JP1 1 3 5 7 9 11 13 15 LCD 2 4 6 8 10 12 14 16 RS E D5 D7

R/W E RS

D4 D5 D6 D7

VCC

Gambar 4.2 Rangkaian LCD pada AVR

54

Berikut adalah contoh program menampilkan pesan dengan geser kanan kiri dengan delay tertentu. Buatlah sebuah proyek baru dengan nama LCD, lalu masukkan kode berikut. LCD.asm
; Program Display LCD ; Lab Embedded System ; e-Technology Center 2007 .include"c:\m8535def.inc" .equ timer_value = 0xffca .equ timer_value100 = 0xfbaf .org 0x0000 rjmp main main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0xff out ddrb,r16 ldi r19,0x00 out PORTB,r19 out ddra,r19 out PORTA,r16 out ddrc,r16 out PORTC,r19 out ddrd,r16 out PORTD,r19 rcall Init_LCD start: ldi rcall ldi ldi rcall rcall ldi ldi rcall rcall rcall rcall rcall rcall rcall rcall ldi ldi rcall rcall

; sebagai output ; sebagai input ; sebagai ouput data ke LCD ; sebagai output

r17,0x01 kirim_Perintah ; Clear LCD ZL, low(2*mystring) ZH, high(2*mystring) Baris1 KirimPesan_LCD ZL, low(2*mystring2) ZH, high(2*mystring2) Baris2 KirimPesan_LCD GeserDisplay_Kanan GeserDisplay_Kanan GeserDisplay_Kanan GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri ZL, low(2*mystring3) ZH, high(2*mystring3) Baris1 KirimPesan_LCD

55

ldi ldi rcall rcall rcall rcall rcall rcall rcall rcall rcall rcall rcall rcall rcall rcall rcall rjmp end: rjmp

ZL, low(2*mystring4) ZH, high(2*mystring4) Baris2 KirimPesan_LCD GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri GeserDisplay_Kiri delay100u start end

;Subrutin kirim pesan ;ke LCD ;-------------------------KirimPesan_LCD: clr r1 LoopKirimPesan_LCD: lpm mov r17,r0 cpi r17,0 brne Kirim_LCD ret Kirim_LCD: rcall adiw ZL,1 rjmp Loop Kirim_Karakter KirimPesan_LCD

;Subrutin inisial LCD ;----------------------------------------Init_LCD: cbi sbi cbi ldi portb,3 portd,7 portd,6 r20,8

Loopdelay: rcall delay5 dec r20 cpi r20,0 brne Loopdelay

56

ldi rcall rcall ldi rcall rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall

r17,0x30 Kirim_Perintah delay5 r17,0x30 Kirim_Perintah delay100u r17,0x30 Kirim_Perintah r17,0x20 Kirim_Perintah r17,0x28 Kirim_Perintah r17,0x08 Kirim_Perintah r17,0x01 Kirim_Perintah r17,0x0E Kirim_Perintah

ldi r17,0x06 rcall Kirim_Perintah sbi portb,3 ret Kirim_Perintah: cbi portd,7 cbi portd,5 rcall Kirim_DataLCD swap r17 rcall Kirim_DataLCD rcall delay5 rcall delay5 ret Kirim_Karakter: sbi portd,7 cbi portd,5 rcall Kirim_DataLCD swap r17 rcall Kirim_DataLCD rcall delay5 ret Kirim_DataLCD: sbi portd,6 out portc,r17 cbi portd,6 ret

; delay 5 ms

57

;LCD pindah baris 2 ;---------------------------------------Baris2: ldi r17,0xC0 rcall kirim_Perintah ret ;LCD pindah baris 1 ;----------------------------------------Baris1: ldi r17,0x02 rcall kirim_Perintah ret ;Geser Display ke kanan ;----------------------------------------GeserDisplay_Kanan: ldi r17,0x1f rcall kirim_Perintah ret ;Geser Display ke kiri ;----------------------------------------GeserDisplay_Kiri: ldi r17,0x18 rcall kirim_Perintah ret ;Subrutin delay 5ms ;----------------------------------------delay5: ldi r16,0b00000100 ;aktifkan enable interupt out TIMSK,r16 ldi r16,high(timer_value) ;masukkan nilai timer out TCNT1H,r16 ldi r16,low(timer_value) out TCNT1L,r16 ldi r16,0b00000101 ;masukkan prescaler untuk ;timer disini 1024 out TCCR1B,r16 looptimer: in r17,TIFR sbrs r17,TOV1 ;tunggu sampai timer1 overflow flag set rjmp looptimer ldi r16,0b00000100 ;Timer 1 overflow flag dinolkan dengan ;memberikan logika 1 out TIFR,r16 ret ;Subrutin delay 100us ;----------------------------------------delay100u: ldi r16,0b00000100 out TIMSK,r16 ;aktifkan enable interupt

58

ldi out ldi out ldi

r16,high(timer_value100) ;masukkan nilai timer TCNT1H,r16 r16,low(timer_value100) TCNT1L,r16 r16,0b00000001 ;masukkan prescaler untuk ;timer disini 1024 out TCCR1B,r16 looptimer3: in r17,TIFR sbrs r17,TOV1 ;tunggu sampai timer1 overflow flag set rjmp looptimer3 ldi r16,0b00000100 ;Timer 1 overflow flag dinolkan dengan ;memberikan logika 1 out TIFR,r16 ret ;------------------------------------------mystring: .db "E-Technology",0 mystring2: .db "Center",0 mystring3: .db "Ikuti Kursus Mikrokontroler AVR",0 mystring4: .db "Miliki SMARTAVR",0

Jika program di atas dijalankan, maka akan tampil pesan di atas dengan bergeser kanan kiri. Alternatif lain di dalam pemrograman LCD adalah menggunakan software yang lebih mudah, seperti misalnya Bascom AVR (lihat www.mcselec.com). Software ini menggunakan bahasa Basic untuk AVR, mirip dengan Basic Stamp. Pada software tersebut sudah ada fungsi-fungsi penting yang siap digunakan, misalnya untuk LCD, kendali port, delay dan lain-lain. Berikut contoh program untuk menampilkan animasi Data Logger di LCD menggunakan Bascom AVR, keypad membran 4x4, dan kit mikrokontroler SmartAVR. Program pertama kali melakukan konfigurasi LCD sesuai pin yang digunakan pada LCD.
Config Pina.5 Colom2 Config Kbd = Porta Debounce = 20 Rows = 4 Row1 = Pina.4 Row2 = Row3 = Pina.6 Row4 = Pina.7 Coloms = 3 Colom1 = Pina.0 = Pina.1 Colom3 = Pina.3 Lcd = 20 * 4 lCD 20x4 baris

59

Untuk menampilkan teks di LCD, cukup Anda gunakan fungsi LCD, begitu juga untuk menggeser karakter ke kanan dan ke kiri, Bascom AVR menyediakan berbagai fungsi yang memudahkan kita memprogram mikrokontroler.
Lcd "SMART DataLogger" Waitms 100 Lowerline Lcd "e-Technology Center" Waitms 100 Thirdline Lcd "Press 1-4" Waitms 100 Fourthline Lcd "Press 5 to Go Out" Waitms 100 Home Third Home Fourth Waitms 100 For B = 1 To 15 Shiftlcd Right Waitms 25 Next

Berikut kode lengkap demo Data Logger berbasis Bascom AVR: Logger.Bas:
Dim A As Byte Dim B As Byte Config Kbd = Porta Debounce = 20 Rows = 4 Row1 = Pina.4 Row2 = Pina.5 Row3 = Pina.6 Row4 = Pina.7 Coloms = 3 Colom1 = Pina.0 Colom2 = Pina.1 Colom3 = Pina.3 Config Lcd = 20 * 4 lCD 20x4 baris Declare Sub Displaysuhu() Declare Sub Displaykelembaban() Declare Sub Keluar() Declare Sub Displaykecepatan() Declare Sub Displaycahaya() Cls Waitms 100 'clear the LCD display Lcd "SMART Data Logger" 'display this at the top line Lowerline Waitms 100 'select the lower line

60

Lcd "e-Technology Center" Thirdline Waitms 100 Lcd "copyright 2007" Fourthline Waitms 100 Lcd "Prof. Gamayel & Widodo" Home Third Home Fourth Waitms 1 'display this at the lower line For B = 1 To 15 Shiftlcd Right Waitms 25 Next For B = 1 To 15 Shiftlcd Left 'shift the text to the left Waitms 25 Next Wait 3 Cls Lcd "1.Temperature" 'display this at the top line Lowerline Waitms 100 'select the lower line Lcd "2.Humidity" Thirdline Waitms 100 Lcd "3.Speed" 'display this at the top line Fourthline Waitms 100 'select the lower line Lcd "4.Light" Home Third Home Fourth Wait 5 Do 'Cls A = Getkbd() Print A If A = 16 Then Cls Waitms 100

61

Lcd "SMART DataLogger" Waitms 100 Lowerline Lcd "e-Technology Center" Waitms 100 Thirdline Lcd "Press 1-4" Waitms 100 Fourthline Lcd "Press 5 to Go Out" Waitms 100 Home Third Home Fourth Waitms 100 For B = 1 To 15 Shiftlcd Right Waitms 25 Next For B = 1 To 15 Shiftlcd Left shift the text to the left Waitms 25 Next End If If A = 0 Then Call Displaysuhu() Wait 1 End If If A = 1 Then Call Displaykelembaban() Wait 1 End If If A = 2 Then Call Displaykecepatan() Wait 1 End If If A = 4 Then Call Displaycahaya() Wait 1 End If If A = 5 Then Call Keluar() Wait 1 End If Loop

62

Sub Displaysuhu() Cls Lcd "Suhu:" Locate 2 , 13 Deflcdchar Print 1 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 Lcd Chr(1) Locate 1 , 19 Lcd "C" End Sub Sub Displaykelembaban() Cls Lcd "Kelembaban:" Locate 2 , 13 Deflcdchar 0 , 8 , 20 , 20 , 20 , 8 , 32 , 32 , 32 Lcd Chr(0) Locate 1 , 19 Lcd "%" End Sub Sub Displaykecepatan() Cls Lcd "Kecepatan:" Locate 2 , 13 Deflcdchar 0 , 8 , 20 , 20 , 20 , 8 , 32 , 32 , 32 Lcd Chr(0) Locate 1 , 18 Lcd "m/s" End Sub Sub Displaycahaya() Cls Lcd "Cahaya:" Locate 2 , 13 Deflcdchar 0 , 8 , 20 , 20 , 20 , 8 , 32 , 32 , 32 Lcd Chr(0) Locate 1 , 19 Lcd "wB" End Sub Sub Keluar() Cls Lcd "Terima Kasih" Lowerline Lcd "Save Palestine" Wait 3 End Sub

Selamat berkreasi mencoba animasi yang lain.

63

LATIHAN:
1. Jelaskan cara kerja LCD, silakan baca datasheet pada CD program. 2. Buat program yang menampilkan nilai suhu suatu sensor pada LCD. 3. Buatlah suatu tampilan LCD 4 x 40, dimana input diberikan melalui keypad 4x4, serta data terkirim melalui GSM module atau Wireless. 4. Buat program yang menampilkan pesan Hello World di LCD, dengan contoh kode sebagai berikut.
Dim A As Byte Config Lcd = 20 * 4 Cls Lcd "Hello world." Wait 1 Lowerline Wait 1 Lcd "Shift this." Wait 1 For A = 1 To 10 Shiftlcd Right Wait 1 Next _temp1 = 1 !rCall _write_lcd End clear the LCD display ' display this at the top line ' select the lower line ' display this at the lower line ' shift the text to the right ' wait a moment ' value into ACC ' put it on LCD

64

Bab 4 4.1 Bab 5 5.1

Proyek 3: Display LCD............................................ 51 Teori Dasar LCD......................................................... 51 Proyek 4: Pengontrol Alat Berbasis Port Serial ........ 65 Konsep Komunikasi Serial.......................................... 65 5.1.1 Port Komunikasi Serial ................................. 65 5.1.2 Konverter Logika RS-232 ............................. 67 5.1.3 Komunikasi Serial AT89S51/52 ................... 68 Pengontrol Alat Berbasis Port Serial............................ 70 Proyek 5: Robot Avoider......................................... 79 Konsep Robot Avoider dan Sensor ............................. 79 6.1.1 Sensor Jarak Ultrasonik PING ...................... 80 6.1.2 Sensor Jarak Ultrasonik Devantech SRF04 .. 82 6.1.3 Sensor Jarak Sharp GP2D02 (Digital) .......... 85 6.1.4 Sensor Sharp GP2D12/GP2DY02YK............. 87 6.1.5 Servo Motor Parallax/HS-322HD .................. 90 Aplikasi DT Basic Mini System pada Robot Avoider ... 91 6.2.1 DT Basic Mini System .................................. 91 6.2.2 Instalasi Software Basic Stamp Editor .......... 92 6.2.3 Kit Mikrokontroler OOPIC ............................. 96 6.2.4 Rancangan Robot Avoider ............................ 97 Proyek 6: Proyek Mikrokontroler DST-R8C Ver 2.0 Renesas............................................................... 109 Mengenal Mikrokontroler Renesas ............................ 109 Perangkat Keras yang Diperlukan............................. 112 Instalasi Software...................................................... 114 7.3.1 Membuat Project ........................................ 115 Review Pemrograman C ........................................... 126 7.4.1 Konstruksi Program C/C++......................... 126 Seputar Hardware Mikrokontroler R8C/13 ................ 132 7.5.1 Data Register (R0, R1, R2, dan R3) ............ 132 7.5.2 Address Register (A0 dan A1) .................... 132 7.5.3 Frame Base Register (FB) .......................... 132 7.5.4 Interrupt Table Register (INTB)................... 132 7.5.5 Program Counter (PC) ................................ 132 7.5.6 Static Base Register (SB) ........................... 133 7.5.7 Flag Register (FLG).................................... 133

5.2 Bab 6 6.1

6.2

Bab 7 7.1 7.2 7.3 7.4 7.5

viii

7.5.8 7.5.9 Bab 8 8.1 Bab 9 9.1 Bab 10 10.1 10.2 Bab 11 11.1 11.2 Bab 12 12.1 12.2

Special Function Register ........................... 133 A/D Converter ............................................ 134

Proyek 7: Termometer Digital Berbasis DST-R8C Ver 2.0 ...................................................................... 137 Konsep Termometer Digital ...................................... 137 Proyek 8: Pengatur Putaran Motor Stepper............ 145 Konsep Motor Stepper .............................................. 145 Proyek 9: Scanning Display dengan DST-R8C ....... 153 Konsep Scanning Display ......................................... 153 Aplikasi Scanning Display ........................................ 155 Proyek 10: Pengatur Kecepatan Motor DC............. 161 Konsep Motor DC ..................................................... 161 Aplikasi DST-R8C pada Motor DC ............................ 162 Proyek 11: Logger Suhu dengan Gelombang Radio 169 Konsep Komunikasi Data 2.4 GHz............................ 169 Aplikasi Logger Suhu Berbasis 2.4 GHz.................... 170 12.2.1 Proses yang Terjadi pada Sisi Pemancar .... 171 12.2.2 Proses yang Terjadi pada Sisi Penerima ..... 171 Proyek 12: Jam Digital Berbasis LCD ................... 179 Konsep Jam Digital .................................................. 179 Aplikasi Jam Digital pada LCD................................. 180

Bab 13 13.1 13.2

Lampiran ..................................................................................193 Daftar Pustaka ..........................................................................201

ix