DAFTAR ISI
Kata Pengantar ............................................................................. v Daftar Isi ..................................................................................... vii Bab 1
Membuat Rangkaian dan PCB................................... 1
1.1
1.2
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
Bab 2
Proyek 1: Lampu Kelap-Kelip.................................. 27
2.1
2.2 2.3 2.4
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
Bab 3
Proyek 2: Analog to Digital Converter (ADC) ........... 43
3.1
Teori ADC AVR .......................................................... 43 3.1.1 Inisialisasi ADC ............................................ 44
vii
BAB
4
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
52
Nama Pin
Deskripsi
Port
1
VCC
+ 5V
VCC
2
GND
0V
GND
3
VEE
Tegangan Kontras LCD
4
RS
Register Select, 0=Input Instruksi, 1=Input Data
PD7
5
R/W
1= Read ; 0 = Write
PD5
6
E
Enable Clock
PD6
7
D4
Data Bus 4
PC4
8
D5
Data Bus 5
PC5
9
D6
Data Bus 6
PC6
10
D7
Data Bus 7
PC7
11
Anode
Tegangan Positif backlight
12
Katode
Tegangan Negatif backlight
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
portb,3 portd,7 portd,6 r20,8
Loopdelay: rcall dec cpi brne
delay5 r20 r20,0 Loopdelay
ldi rcall rcall ldi rcall rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall ldi rcall sbi ret
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
JP1 1 3 5 7 9 11 13 15
2 4 6 8 10 12 14 16
RS E D5 D7
LCD VCC U1 Q1
R3 390 2N3904 8 X LED R4 390
R/W E RS
1 2 3 4 5 6 7 8 14 15 16 17 18 19 20 21 9
Cap 18pF
12 13
PA0 (ADC0) PA1 (ADC1) PA2 (ADC2) PA3 (ADC3) PA4 (ADC4) PA5 (ADC5) PA6 (ADC6) PA7 (ADC7)
PD0 (RXD) PD1 (TXD) PD2 (INT0) PD3 (INT1) PD4 (OC1B) PD5 (OC1A) PD6 (ICP) PD7 (OC2)
PC0 (SCL) PC1 (SDA) PC2 PC3 PC4 PC5 PC6 (TOSC1) PC7 (TOSC2)
RESET XTAL2 XTAL1
VCC AVCC AREF GND GND
40 39 38 37 36 35 34 33 22 23 24 25 26 27 28 29 10 30 32 31 11
1
Cap 18pF C2
2
C1
PB0 (XCK/T0) PB1 (T1) PB2 (AIN0/INT2) PB3 (AIN1/OC0) PB4 (SS) PB5 (MOSI) PB6 (MISO) PB7 (SCK)
ATmega8535 11.0592MHz
Gambar 4.2 Rangkaian LCD pada AVR
54
D4 D5 D6 D7
VCC
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
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: rjmp
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
r17,0x30 Kirim_Perintah delay5
ldi rcall rcall
r17,0x30 Kirim_Perintah delay100u
ldi rcall
r17,0x30 Kirim_Perintah
ldi rcall
r17,0x20 Kirim_Perintah
ldi rcall
r17,0x28 Kirim_Perintah
ldi rcall
r17,0x08 Kirim_Perintah
ldi rcall
r17,0x01 Kirim_Perintah
ldi rcall
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
; delay 5 ms
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
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
58
;aktifkan enable interupt
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
64
‘ 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
Bab 4
Proyek 3: Display LCD............................................ 51
4.1
Teori Dasar LCD......................................................... 51
Bab 5
Proyek 4: Pengontrol Alat Berbasis Port Serial ........ 65
5.1
5.2
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
Bab 6
Proyek 5: Robot Avoider......................................... 79
6.1
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
6.2
Bab 7
Proyek 6: Proyek Mikrokontroler DST-R8C Ver 2.0 Renesas............................................................... 109
7.1 7.2 7.3
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
7.4 7.5
viii
7.5.8 7.5.9
Special Function Register ........................... 133 A/D Converter ............................................ 134
Bab 8
Proyek 7: Termometer Digital Berbasis DST-R8C Ver 2.0 ...................................................................... 137
8.1
Konsep Termometer Digital ...................................... 137
Bab 9
Proyek 8: Pengatur Putaran Motor Stepper............ 145
9.1
Konsep Motor Stepper .............................................. 145
Bab 10
Proyek 9: Scanning Display dengan DST-R8C ....... 153
10.1 10.2
Konsep Scanning Display ......................................... 153 Aplikasi Scanning Display ........................................ 155
Bab 11
Proyek 10: Pengatur Kecepatan Motor DC............. 161
11.1 11.2
Konsep Motor DC ..................................................... 161 Aplikasi DST-R8C pada Motor DC ............................ 162
Bab 12
Proyek 11: Logger Suhu dengan Gelombang Radio 169
12.1 12.2
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
Bab 13
Proyek 12: Jam Digital Berbasis LCD ................... 179
13.1 13.2
Konsep Jam Digital .................................................. 179 Aplikasi Jam Digital pada LCD................................. 180
Lampiran ..................................................................................193 Daftar Pustaka ..........................................................................201
ix