.
Setelah membahas keypad dan LCD karakter sekarang saya akan membahas penggunaan keypad pada LCD karakter. Keypad yang digunakan adalah LCD karakter 16x2 dan keypad 4x4 berupa modul baik keypad flat maupun keypad tombol.
Untuk memahami selanjutnya baca dulu :
Keypad Matriks II : Scanning Keypad dan Tips n Triks LCD.
Disamping terdapat gambar 2 buah keypad 4x4 yang serupa tapi tak sama. Anda melihat perbedaannya?
Perbedaannya yaitu pada posisi terminal konektor keypadnya sehingga posisi baris dan kolom berbeda.
Saya akan membahas hanya yang menggunakan tipe yang tombolnya berwarna hitam atau terminalnya dibawah.
Dengan melihat keypad berhadapan, maka posisi baris dan kolom, dari Kiri ke kanan : Kolom 4, kolom 3, kolom 2, kolom 1, baris 4, baris 3, baris 2, baris 1.
Untuk modul keypad 4x4 pada gambar telah terdapat resistor dan dioda penyearah.
Resistor berfungsi sebagai pembatas arus dan karena adanya dioda penyearah ini menyebabkan keypad jadi tidak fleksibel artinya baris dan kolom telah ditentukan siapa output dan siapa input karena dioda ini hanya mengalirkan tegangan dan arus dari anoda ke katoda.
Oleh sebab itu pada modul keypad ini baris adalah input dan Kolom adalah output.
Coding dengan CoViAVR
Pada coding ini akan saya bahas deteksi keypad 4x4 dengan sistem scanning dan menampilkannya pada LCD karakter 16x2 dengan tampilan deretan input keypad.
Gambar disamping adalah coding untuk scanning modul keypad 4x4. Terdapat perbedaan seperti yang saya tuliskan diblog sebelumnya, akan tetapi intinya sama.
Sedangkan pada main programnya seperti gambar berikut :
Coding main program akan menampilkan tombol yang anda tekan di Keypad 4x4 ke LCD 16x2 yaitu mulai dari baris 0 kolom 0 hingga baris 0 kolom 15 kemudian pindah ke baris 1 kolom 0 hingga baris 1 kolom 15, looping terus menerus.
Coba ketika tombol keypad ditekan kemudian tahaaaaaaa..nnn dan lepas.
Nah selamat mencoba..
Senin, 20 Juli 2009
Senin, 13 Juli 2009
Tips n Trik Coding LCD karakter
.
Jika anda menggunakan program CoViAVR maka untuk LCD karakter 16x2, tidak perlu repot-repot memikirkan mode komunikasi 4 bit atau 8 bit dan konfigurasinya, cukup jalankan CodeWizzardAVR lihat konfigurasinya, lihat rangkaian referensi lainnya diinternet kemudian buat Hardware-nya.
Hanya ada satu cara untuk mengetahui apakah rangkaian anda benar atau tidak, yaitu dengan langsung memprogramnya untuk menampilkan kalimat tertentu.
Baca dulu : LCD karakter
Beberapa perintah umum yang sering digunakan pada LCD yaitu :
ASCII LCD karakter dengan backlight putih.
ASCII LCD karakter dengan backlight hijau.
ASCII link I.
ASCII link II.
Sekarang saya akan membahas tips dan trik coding LCD karakter.
Tips n Trik
Jika menggunakan LCD pada CoViAVR umumnya seperti dibawah ini :
Program pada gambar adalah salah satu trik untuk mempersingkat penulisan program untuk menampilkan tulisan dan nilai data pada LCD.
Lumayan menghemat baris kan ;)
Jika anda menggunakan program CoViAVR maka untuk LCD karakter 16x2, tidak perlu repot-repot memikirkan mode komunikasi 4 bit atau 8 bit dan konfigurasinya, cukup jalankan CodeWizzardAVR lihat konfigurasinya, lihat rangkaian referensi lainnya diinternet kemudian buat Hardware-nya.
Hanya ada satu cara untuk mengetahui apakah rangkaian anda benar atau tidak, yaitu dengan langsung memprogramnya untuk menampilkan kalimat tertentu.
Baca dulu : LCD karakter
- Jalankan CoviAVR dan pada CodeWizzardAVR atur seperti gambar.
- Cek dengan menampilkan berberapa kalimat seperti pada gambar.
Beberapa perintah umum yang sering digunakan pada LCD yaitu :
- lcd_clear : untuk menghapus tampilan LCD baris 1, baris 2, atau baris lainnya dan secara otomatis posisi cursor berada pada x,y(0,0).
- lcd_gotoxy : untuk mengatur posisi awal karakter yang akan ditampilkan dengan x=kolom dan y=baris. Posisi awal dimulai dari 0 bukan 1.
- lcd_putchar : untuk menampilkan nilai-nilai unsigned char (range 0 - 255) bisa berupa huruf, angka, simbol, dan nilai ASCII. Hal yang perlu diingat adalah beberapa nilai ASCII pada LCD tidak sesuai dengan standar ASCII yang sebenarnya.
- lcd_puts : menampilkan kalimat berupa string yang telah tersimpan di memori RAM.
- lcd_putsf : menampilkan kalimat berupa string yang telah tersimpan di memori FLASH.
ASCII LCD karakter dengan backlight putih.
ASCII LCD karakter dengan backlight hijau.
ASCII link I.
ASCII link II.
Sekarang saya akan membahas tips dan trik coding LCD karakter.
Tips n Trik
Jika menggunakan LCD pada CoViAVR umumnya seperti dibawah ini :
lcd_clear();Sekarang saya akan membuat fungsi untuk menampilkan data seperti pada lcd_puts dan lcd_putsf dengan nama mylcd_puts dan mylcd_putsf.
lcd_putsf("Program Membaca");
lcd_gotoxy(0,1);
lcd_putsf("Menampilkan ADC")
delay_ms(2000);
data_ADC = read_adc(0); // baca adc channel 0
lcd_clear();
lcd_putsf("Data ADC chnl 0 ");
sprintf(buff_adc,"Nilai : %d",data_ADC);
lcd_gotoxy(0,1);
lcd_puts(buf_adc);
Program pada gambar adalah salah satu trik untuk mempersingkat penulisan program untuk menampilkan tulisan dan nilai data pada LCD.
Lumayan menghemat baris kan ;)
Jumat, 10 Juli 2009
LCD karakter
.
Salah satu output berupa tampilan yang sering digunakan adalah LCD karakter, ada yang 16x2, 20x2, 16x4, 20x4, dsb. Menggunakan display tampilan LCD karakter lebih mudah dibandingkan dengan tampilan berupa Seven Segment atau Character Segment karena pada LCD telah ada kontroller yang akan mengatur tampilan-tampilan pada LCD tersebut sedangkan pada Segment harus menggunakan sistem scanning, atau latch, atau membuat kontroler sendiri.
Untuk pemrograman LCD lebih rumit dibanding pemrograman Segment, akan tetapi telah banyak library ataupun file -file cara memprogram LCD sehingga tidak mengalami kesulitan.
Saya akan membahas perangkat keras LCD karakter 16x2.
Gambar berikut adalah perangkat keras LCD 16x2. Ada 2 tipe LCD yang baru saya lihat seperti gambar disamping yaitu LCD dengan backlight biru dengan tulisan putih dan LCD backlight kuning dengan tulisan hitam. Saya lebih suka warna putih dengan backlight biru karena tampilan menarik dan tulisan terlihat jelas dari jarak cukup jauh dibanding dengan hitam backlight kuning.
Untuk mode penggunaan LCD karakter ada 2 konfigurasi yaitu mode komunikasi 8 bit dan mode komunikasi 4 bit.
Rangkaian schematiknya seperti pada gambar. Pada mode komunikasi 4 bit D0 - D3 tidak digunakan hanya D4 - D7 saja.
Dari segi fleksibilitas dan kesederhanaan rangkaiaan, mode 4 bit lebih baik di banding mode 8 bit karena mode 4 bit hanya membutuhkan 7 pin (1 port mikro) dibanding mode 8 bit yang membutuhkan minimal 10 pin (2 port mikro).
Oleh sebab itu selanjutnya hanya akan saya bahas penggunaan mode 4 bit yang telah ada librarynya pada CodeVisionAVR.
Konfigurasi port LCD untuk rangkaian schematiknya dan pada CodeWizzardAVR seperti pada gambar disamping. Tampak bahwa pin R/W (RD) terhubung pada bit 1 pada port mikro yang sedikit berbeda dengan gambar schematiknya diatas.
Jika menggunakan CoViAVR maka sebaiknya mengikuti konfigurasi seperti gambar tersebut.
Coding untuk LCD akan saya bahas post Tips n Trik Coding LCD karakter.
ini link salah satu project LCD yang cukup menarik :
http://www.rev-ed.co.uk/docs/axe033.pdf
LCD pada CoViAVR
Coba anda program mikrokontroller AVR dengan CoViAVR menggunakan LCD kemudian tambahkan sebuah LED. Pada main Program dengan delay 1 detik dan setiap detik LED kedap-kedip dan tampilan LCD berubah setiap detik itu juga (terserah menampilkan apa), kemudian cabut LCD dari port modul AVR perhatikan yang terjadi.
(Sorry tidak ditambahkan gambar codingnya.... ;) )
LED yang seharusnya setiap detik kedap-kedip seperti saat LCD terpasang, akan berhenti kedap-kedip ketika LCD dilepas seolah-olah program terhenti disuatu perintah. Hal ini karena pada saat mengakses LCD dengan menggunakan library lcd.h dalam library tersebut ada perintah yang menunggu balasan (indikator) dari kontroler LCD sehingga ketika tidak dibalas karena LCD tidak terpasang akan menyebabkan mikrokontroler selalu menuggu, dan hal ini menyebabkan program terhenti.
Salah satu output berupa tampilan yang sering digunakan adalah LCD karakter, ada yang 16x2, 20x2, 16x4, 20x4, dsb. Menggunakan display tampilan LCD karakter lebih mudah dibandingkan dengan tampilan berupa Seven Segment atau Character Segment karena pada LCD telah ada kontroller yang akan mengatur tampilan-tampilan pada LCD tersebut sedangkan pada Segment harus menggunakan sistem scanning, atau latch, atau membuat kontroler sendiri.
Untuk pemrograman LCD lebih rumit dibanding pemrograman Segment, akan tetapi telah banyak library ataupun file -file cara memprogram LCD sehingga tidak mengalami kesulitan.
Saya akan membahas perangkat keras LCD karakter 16x2.
Gambar berikut adalah perangkat keras LCD 16x2. Ada 2 tipe LCD yang baru saya lihat seperti gambar disamping yaitu LCD dengan backlight biru dengan tulisan putih dan LCD backlight kuning dengan tulisan hitam. Saya lebih suka warna putih dengan backlight biru karena tampilan menarik dan tulisan terlihat jelas dari jarak cukup jauh dibanding dengan hitam backlight kuning.
Untuk mode penggunaan LCD karakter ada 2 konfigurasi yaitu mode komunikasi 8 bit dan mode komunikasi 4 bit.
Rangkaian schematiknya seperti pada gambar. Pada mode komunikasi 4 bit D0 - D3 tidak digunakan hanya D4 - D7 saja.
Dari segi fleksibilitas dan kesederhanaan rangkaiaan, mode 4 bit lebih baik di banding mode 8 bit karena mode 4 bit hanya membutuhkan 7 pin (1 port mikro) dibanding mode 8 bit yang membutuhkan minimal 10 pin (2 port mikro).
Oleh sebab itu selanjutnya hanya akan saya bahas penggunaan mode 4 bit yang telah ada librarynya pada CodeVisionAVR.
Konfigurasi port LCD untuk rangkaian schematiknya dan pada CodeWizzardAVR seperti pada gambar disamping. Tampak bahwa pin R/W (RD) terhubung pada bit 1 pada port mikro yang sedikit berbeda dengan gambar schematiknya diatas.
Jika menggunakan CoViAVR maka sebaiknya mengikuti konfigurasi seperti gambar tersebut.
Coding untuk LCD akan saya bahas post Tips n Trik Coding LCD karakter.
ini link salah satu project LCD yang cukup menarik :
http://www.rev-ed.co.uk/docs/axe033.pdf
LCD pada CoViAVR
Coba anda program mikrokontroller AVR dengan CoViAVR menggunakan LCD kemudian tambahkan sebuah LED. Pada main Program dengan delay 1 detik dan setiap detik LED kedap-kedip dan tampilan LCD berubah setiap detik itu juga (terserah menampilkan apa), kemudian cabut LCD dari port modul AVR perhatikan yang terjadi.
(Sorry tidak ditambahkan gambar codingnya.... ;) )
LED yang seharusnya setiap detik kedap-kedip seperti saat LCD terpasang, akan berhenti kedap-kedip ketika LCD dilepas seolah-olah program terhenti disuatu perintah. Hal ini karena pada saat mengakses LCD dengan menggunakan library lcd.h dalam library tersebut ada perintah yang menunggu balasan (indikator) dari kontroler LCD sehingga ketika tidak dibalas karena LCD tidak terpasang akan menyebabkan mikrokontroler selalu menuggu, dan hal ini menyebabkan program terhenti.
Selasa, 07 Juli 2009
Keypad Matriks : Scanning Keypad
.
Biar memahami konsep sistem scanning baca dulu posting sebelumnya tentang :
- Keypad Matriks
- Keypad Matriks I : Konsep Dasar
Pada listing MyLibrary.h untuk fungsi Keypad 4x4 cukup panjang dan terdapat penulisan program yang berulang-ulang dengan nilai yang berbeda. Bagaimana jika merancang keypad dengan jumlah tombol banyak seperti keyboard pada komputer, programnya akan menjadi sangat panjang.
Berdasarkan perancangan hardware maka dapat disederhanakan dengan sistem scanning sebagai berikut. Untuk mencegah bounching sama seperti pada Keypad Matriks I : Konsep Dasar
Biar memahami konsep sistem scanning baca dulu posting sebelumnya tentang :
- Keypad Matriks
- Keypad Matriks I : Konsep Dasar
Pada listing MyLibrary.h untuk fungsi Keypad 4x4 cukup panjang dan terdapat penulisan program yang berulang-ulang dengan nilai yang berbeda. Bagaimana jika merancang keypad dengan jumlah tombol banyak seperti keyboard pada komputer, programnya akan menjadi sangat panjang.
Berdasarkan perancangan hardware maka dapat disederhanakan dengan sistem scanning sebagai berikut. Untuk mencegah bounching sama seperti pada Keypad Matriks I : Konsep Dasar
Sabtu, 04 Juli 2009
Keypad Matriks : Konsep Dasar
.
Pada tutorial ini akan saya paparkan konsep dasar mengakses dan menggunakan Keypad Matriks 4x4 sebagai media inputan tetapi sebelumnya, anda sebaiknya membaca terlebih dahulu tutorial hardware mengenai Keypad Matriks agar mudah dipahami programnya karena memprogram mikrokontroler berdasarkan dengan hardwarenya.
Program berikut menggunakan mikrokontroler ATmega8535 dengan bahasa pemrograman CodeVisionAVR (baca Memulai CoViAVR) akan tetapi jika telah memahami konsepnya, mikro apapun dengan bahasa pemrograman yang lain pun tidak akan mengalami kesulitan.
Yup.. saya anggap sudah membaca turorial hardware Keypad Matriks dan konfigurasi keypad sebagai berikut :
Alasan :
Efek Bounching (Pantulan)
Listing pada gambar belum termasuk menangani tentang bounching dan lain-lain. Bounching pada keypad yaitu efek perubahan sinyal berkali-kali (pantulan) saat penekanan keypad yang menyebabkan keypad seolah-olah tombol keypad ditekan berkali-kali.
Ada berbagai macam cara untuk mencegah menghilangkan efek bouncing ini baik dari segi hardware dan software.
Saya memilih dengan cara software dan menggabung antara delay dengan mengecek karakter tombol. Berikut contoh main program untuk keypad yang dan kemudian nilai keypad d tampilkan pada LCD dan USART.
Pada tutorial ini akan saya paparkan konsep dasar mengakses dan menggunakan Keypad Matriks 4x4 sebagai media inputan tetapi sebelumnya, anda sebaiknya membaca terlebih dahulu tutorial hardware mengenai Keypad Matriks agar mudah dipahami programnya karena memprogram mikrokontroler berdasarkan dengan hardwarenya.
Program berikut menggunakan mikrokontroler ATmega8535 dengan bahasa pemrograman CodeVisionAVR (baca Memulai CoViAVR) akan tetapi jika telah memahami konsepnya, mikro apapun dengan bahasa pemrograman yang lain pun tidak akan mengalami kesulitan.
Yup.. saya anggap sudah membaca turorial hardware Keypad Matriks dan konfigurasi keypad sebagai berikut :
- Kolom 1 pada PORTA.0
- Kolom 2 pada PORTA.1
- Kolom 3 pada PORTA.2
- Kolom 4 pada PORTA.3
- Baris 1 pada PORTA.4
- Baris 2 pada PORTA.5
- Baris 3 pada PORTA.6
- Baris 4 pada PORTA.7
- Jika tombol 2 di tekan (S2) maka Kolom 2 Baris 1 terhubung atau PORTA.1 terhubung dengan PORTA.4, Jika tombol B di tekan (SB) maka Kolom 4 Baris 2 terhubung atau PORTA.3 terhubung dengan PORTA.5, dst.
- Pin-pin KOLOM pada port tersebut dijadikan output dan pin-pin BARIS pada port tersebut dijadikan input, bisa juga sebaliknya terserah anda sebagai programmer, yang jelas salah satu output dan yang lain input.
- Setiap saklar atau penekanan tombol, harus didefinisikan nilai dari tombol tersebut baik berupa nilai Desimal, Heksadesimal, maupun karakter ASCII.
- Saat saklar (tombol keypad) ditekan dan BARIS dengan KOLOM terhubung maka terserah anda mendetaksi perubahan logika yang terjadi pada pin-pin INPUT. Apakah dari LOW ke HIGH (0 - 1) atau HIGH ke LOW (1 - 0). Pada
Alasan :
- Nilai ASCII adalah nilai karakter seperti '1', '2', 'A', 'D', dst, yang pada listing program akan mudah dilihat nilainya dan mudah pahami, berbeda dengan desimal maupun heksadesimal. '1' = 0x31 (heksa), '1' = 49 (desimal), 'A' = 0x41 (heksa), 'A' = 65 (desimal), dst.
- Pada penekanan tombol, mengapa mendeteksi HIGH ke LOW daripada LOW ke HIGH ? karena untuk mikrokotroler maupun rangkaian digital secara umum "menurunkan" tegangan berapapun ke 0 volt lebih mudah dan pasti dibandingkan "menaikkan" tegangan dari 0 volt ke nilai tertentu.
Efek Bounching (Pantulan)
Listing pada gambar belum termasuk menangani tentang bounching dan lain-lain. Bounching pada keypad yaitu efek perubahan sinyal berkali-kali (pantulan) saat penekanan keypad yang menyebabkan keypad seolah-olah tombol keypad ditekan berkali-kali.
Ada berbagai macam cara untuk mencegah menghilangkan efek bouncing ini baik dari segi hardware dan software.
- Jika hardware maka dengan menambahkan filter frekuensi tinggi atau dengan IC555 untuk menambah lebar pulsa.
- Jika Software dengan menambah delay atau tundaan saat tombol ditekan atau dengan mendeteksi karakter tombol apakah sama dengan sebelumnya.
Saya memilih dengan cara software dan menggabung antara delay dengan mengecek karakter tombol. Berikut contoh main program untuk keypad yang dan kemudian nilai keypad d tampilkan pada LCD dan USART.
Keypad Matriks
.
Salah satu input yang sering digunakan adalah keypad. Salah satunya yaitu keypad matriks. Keypad ini tersedia banyak dipasaran dengan harga yang relatif terjangkau.
Keypad 4x3 tidak dibahas karena pada dasarnya sama dengan keypad 4x4.
Gambar diatas adalah gambar perangkat keras keypad dan rangkaian schematiknya. Pada gambar tersebut terdapat 3 jenis keypad matriks 4x4, antara lain :
Ketiga keypad tersebut memiliki rangkaian dasar seperti pada gambar schematiknya. Dari gambar tersebut tampak bahwa sebenarnya keypad adalah saklar-saklar yang dirancang sedemikian rupa dengan konsep matriks sehingga dengan penekanan tombol tertentu akan menghubungkan kolom tertentu dengan baris tertentu.
Misal:
- Saat menekan tombol S2 berarti menghubungkan Kolom2 dengan Baris1
- Saat menekan tombol S6 berarti menghubungkan Kolom3 dengan Baris2
- Saat menekan tombol SC berarti menghubungkan Kolom4 dengan Baris3
- Saat menekan tombol S* berarti menghubungkan Kolom1 dengan Baris4
- dst
Dengan memahami konsep tersebut, anda dapat merancang keypad sendiri dengan menggunakan micro switch seperti pada gambar d atas, bahkan anda bisa merancang keyboard yang memiliki fungsi lebih banyak dengan menambah nilai matriks-nya misal keypad matriks 8x8.
Untuk aplikasi dengan mikrokontroler, Keypad 4x4 dapat dihubungkan dengan 1 buah port mikrokontroler menggunakan sistem scanning. Dan karena keypad berupa saklar yang menghubungkan pin-pin pada kaki mikro dengan tahanan 0 ohm maka harus ditambahkan resistor dengan nilai tertentu untuk mencegah kerusakan pada mirko tersebut, seperti pada gambar berikut :
Untuk Coding mengakses keypad dengan sistem scanning akan dibahas pada tutorial Keypad antar lain :
Salah satu input yang sering digunakan adalah keypad. Salah satunya yaitu keypad matriks. Keypad ini tersedia banyak dipasaran dengan harga yang relatif terjangkau.
Keypad 4x3 tidak dibahas karena pada dasarnya sama dengan keypad 4x4.
Gambar diatas adalah gambar perangkat keras keypad dan rangkaian schematiknya. Pada gambar tersebut terdapat 3 jenis keypad matriks 4x4, antara lain :
- Keypad Matriks 4x4 Push Button
- Keypad Matriks 4x4 Flat
- Keypad Matriks 4x4 dengan micro switch (buatan)kolom.
Ketiga keypad tersebut memiliki rangkaian dasar seperti pada gambar schematiknya. Dari gambar tersebut tampak bahwa sebenarnya keypad adalah saklar-saklar yang dirancang sedemikian rupa dengan konsep matriks sehingga dengan penekanan tombol tertentu akan menghubungkan kolom tertentu dengan baris tertentu.
Misal:
- Saat menekan tombol S2 berarti menghubungkan Kolom2 dengan Baris1
- Saat menekan tombol S6 berarti menghubungkan Kolom3 dengan Baris2
- Saat menekan tombol SC berarti menghubungkan Kolom4 dengan Baris3
- Saat menekan tombol S* berarti menghubungkan Kolom1 dengan Baris4
- dst
Dengan memahami konsep tersebut, anda dapat merancang keypad sendiri dengan menggunakan micro switch seperti pada gambar d atas, bahkan anda bisa merancang keyboard yang memiliki fungsi lebih banyak dengan menambah nilai matriks-nya misal keypad matriks 8x8.
Untuk aplikasi dengan mikrokontroler, Keypad 4x4 dapat dihubungkan dengan 1 buah port mikrokontroler menggunakan sistem scanning. Dan karena keypad berupa saklar yang menghubungkan pin-pin pada kaki mikro dengan tahanan 0 ohm maka harus ditambahkan resistor dengan nilai tertentu untuk mencegah kerusakan pada mirko tersebut, seperti pada gambar berikut :
Untuk Coding mengakses keypad dengan sistem scanning akan dibahas pada tutorial Keypad antar lain :
- Keypad Matriks I : Konsep Dasar.
- Keypad Matriks II : Scanning Keypad.
- Keypad Matriks III : Keypad Handphone
Menyederhanakan & Merapikan Program Part II
.
Gunakan Global variabel dan Lokal variabel.
Penggunaan variabel global dan variabel lokal gampang-gampang susah, karena kadang bingung apakah variabel ini dijadikan global atau lokal.
Semakin sering anda memprogram semakin tahu penggunaan global variabel maupun lokal variabel dan juga cara menamakan variabel tersebut tergantung kebiasaan anda.
Pemilihan local variabel dan global variabel juga dapat menghemat penggunaan memori mikro.
Misal perancangan hardware terdiri dari Keypad 4x4, LCD 16x2, komunikasi USART dan penggunaan 1 buah ADC 10 bit.
Pada gambar, biar tidak bingung saya membuat buffer untuk ADC, UART pada global variabel, untuk LCD 16x2 menggunakan lokal variabel baris1 dan baris2, sedangkan untuk keypad lokal variabel tombol untuk mendifiniskan nilai tombol yang ditekan.
Perintah Bahasa C yang sesuai.
Peggunaan perintah bahasa C,...hmm...
Agak sulit tergantung kebiasaan dan pemahaman program.
Anda harus tahu kapan menggunakan if else if atau case: break, while() atau for loop, dan sebagainya.
Yang jelas hindari penggunaan if dalam if yang bertingkat-tingkat karena nanti bingung mengoreksinya. Kombinasikan setiap perintah sesuai fungsinya masing-masing.
Gunakan Huruf besar dan huruf kecil secara spesifik.
Bahasa C adalah bahasa yang case sensitif yaitu huruf besar dan huruf kecil dibedakan. Manfaatkan sebagai indikator baik untuk variabel-variabel maupun fungsi-fungsi.
dan usahakan antara variabel dan fungsi berbeda agar tidak terjadi kesalahan pada program.
Lihat contoh dibawah :
Gunakan Global variabel dan Lokal variabel.
Penggunaan variabel global dan variabel lokal gampang-gampang susah, karena kadang bingung apakah variabel ini dijadikan global atau lokal.
Semakin sering anda memprogram semakin tahu penggunaan global variabel maupun lokal variabel dan juga cara menamakan variabel tersebut tergantung kebiasaan anda.
Pemilihan local variabel dan global variabel juga dapat menghemat penggunaan memori mikro.
Misal perancangan hardware terdiri dari Keypad 4x4, LCD 16x2, komunikasi USART dan penggunaan 1 buah ADC 10 bit.
Pada gambar, biar tidak bingung saya membuat buffer untuk ADC, UART pada global variabel, untuk LCD 16x2 menggunakan lokal variabel baris1 dan baris2, sedangkan untuk keypad lokal variabel tombol untuk mendifiniskan nilai tombol yang ditekan.
- Pengaturan tampilan pada LCD akan ditampilkan oleh fungsi LCD16x2.
- Fungsi keypad dan pendefinisian tombol keypad pada lokal dan bukannya global variabel akan menghemat memori dan setiap fungsi ini dipanggil akan merefresh nilai-nilai untuk variabel tombol.
- Penamaan buf_ADC, buf_UART, buf_LCD , dll akan menginformasikan pada programmer bahwa variabel ini adalah buffer untuk ini, selain ini penggunaan jumlah array untuk setiap buffer akan sesuai dan tidak berlebihan.
- karena ADC 10 bit dengan nilai maksimum 1023 yaitu ada 4 digit angka maka buf_ADC[4].
- LCD 16x2 kolom pada baris 1 dan 2 adalah 16 kolom maka buf_baris1[16] dan buf_baris2[16].
Perintah Bahasa C yang sesuai.
Peggunaan perintah bahasa C,...hmm...
Agak sulit tergantung kebiasaan dan pemahaman program.
Anda harus tahu kapan menggunakan if else if atau case: break, while() atau for loop, dan sebagainya.
Yang jelas hindari penggunaan if dalam if yang bertingkat-tingkat karena nanti bingung mengoreksinya. Kombinasikan setiap perintah sesuai fungsinya masing-masing.
Gunakan Huruf besar dan huruf kecil secara spesifik.
Bahasa C adalah bahasa yang case sensitif yaitu huruf besar dan huruf kecil dibedakan. Manfaatkan sebagai indikator baik untuk variabel-variabel maupun fungsi-fungsi.
dan usahakan antara variabel dan fungsi berbeda agar tidak terjadi kesalahan pada program.
Lihat contoh dibawah :
Jumat, 03 Juli 2009
Menyederhanakan & Merapikan Program Part I
.
Jika anda sudah pernah memprogram dan mecoba untuk program yang kompleks dan ribet apalagi jika anda suka berkonsultasi program dengan programmer lain atau saling tukar pikiran, maka hal yang sulit adalah membuat programmer lain memahami program kita atau sebaliknya kita akan sulit memahami program orang lain.
Salah satu penyebabnya yaitu program yang tidak sederhana, listing tidak rapi, ada listing berulang-ulang yang selalu dipanggil padahal bisa di buat 1 fungsi saja, dll.
Tutorial ini akan membahas cara agar program yang kita buat "enak" dipandang dan rapi. Beberapa cara antara lain :
1. Buat Library sendiri atau file Header.
2. Buatlah fungsi-fungsi khusus.
3. Gunakan Global variabel dan Lokal variabel.
4. Perintah Bahasa C yang sesuai.
5. Gunakan huruf besar dan huruf kecil secara spesifik.
Buat Library atau file Header
Membuat file Header (Library) sendiri adalah cara yang efektif dan umum untuk menyederhanakan program dan sangat fleksibel. Akan tetapi hal yang harus diingat adalah apakah fungsi dalam file Library tersebut berfungsi untuk semua program atau hanya program saat itu saja. Oleh sebab itu pada file Library sebaiknya hindari penggunaan global variabel dari main program ataupun dari library itu sendiri karena bisa mengacaukan data variabel tersebut bahkan bisa menyebabkan error dan anda harus selalu mengubah file Library anda.
Caranya yaitu dengan menggunakan lokal variabel dalam fungsi Library tersebut dan jika harus ada nilai dari fungsi tersebut, gunakan fungsi dengan nilai kembali (return value).
Langkah-langkah : (Lanjutan dari Memulai CoViAVR (CodeVisionAVR))
1. Setelah project Latihanku.c telah dibuat kemudian File-New dan pilih Source dan OK.
2. Akan muncul tab untitled.c selanjutnya File-Save ganti nama dengan MyLibrary dengan ekstensi .h (C Compiler header file) dan OK.
3. Perhatikan perubahan pada panel navigator dan jangan lupa memanggil Library tersebut.
Cara membuat library ada di HELP CoViAVR (Creating Libraries).
Proses membuat file library selesai.
Buatlah fungsi-fungsi khusus.
Fungsi khusus adalah prosedur dengan fungsi tertentu yang akan digunakan pada main program ataupun fungsi lainnya, seperti fungsi keypad, LCD, UART, Serial EEPROM, RTC, dll.
Salah satu contoh, saya akan membuat fungsi untuk menentukan baudrate komunikasi serial.
Langkah-langkah :
1. Buka atau aktifkan tab MyLibrary.h kemudian buat fungsi seperti gambar.
Mengapa saya menggunakan IF dan ELSE-IF bukannya rumus yang mungkin lebih sederhana ?
Karena meurut saya, rumus memang terlihat sederhana dalam hal jumlah baris tetapi saat menggunakan rumus yang akan dikali, bagi, kurang, tambah, pembulatan, nilai pecahan dll, ini akan memakan memori cukup banyak dan waktu eksekusi yang cukup lama.
Perhatikan bahwa nilai yang berubah hanya UBRRL saja dengan nilai tertentu setiap baudratenya. INGAT nilai UBRRL ini hanya pada kristal 4MHz saja untuk kristal frekuensi lain nilainya akan berubah.
2. Pada main program panggil fungsi UART_BAUDRATE untuk inisialisasi baudrate-nya.
3. Perhatikan tampilan program pada terminal.
Untuk
- Gunakan Global variabel dan Lokal variabel.
- Perintah Bahasa C yang sesuai.
- Gunakan Huruf besar dan huruf kecil secara spesifik.
Saya bahas pada Menyederhanakan & Merapikan Program Part II.
Jika anda sudah pernah memprogram dan mecoba untuk program yang kompleks dan ribet apalagi jika anda suka berkonsultasi program dengan programmer lain atau saling tukar pikiran, maka hal yang sulit adalah membuat programmer lain memahami program kita atau sebaliknya kita akan sulit memahami program orang lain.
Salah satu penyebabnya yaitu program yang tidak sederhana, listing tidak rapi, ada listing berulang-ulang yang selalu dipanggil padahal bisa di buat 1 fungsi saja, dll.
Tutorial ini akan membahas cara agar program yang kita buat "enak" dipandang dan rapi. Beberapa cara antara lain :
1. Buat Library sendiri atau file Header.
2. Buatlah fungsi-fungsi khusus.
3. Gunakan Global variabel dan Lokal variabel.
4. Perintah Bahasa C yang sesuai.
5. Gunakan huruf besar dan huruf kecil secara spesifik.
Buat Library atau file Header
Membuat file Header (Library) sendiri adalah cara yang efektif dan umum untuk menyederhanakan program dan sangat fleksibel. Akan tetapi hal yang harus diingat adalah apakah fungsi dalam file Library tersebut berfungsi untuk semua program atau hanya program saat itu saja. Oleh sebab itu pada file Library sebaiknya hindari penggunaan global variabel dari main program ataupun dari library itu sendiri karena bisa mengacaukan data variabel tersebut bahkan bisa menyebabkan error dan anda harus selalu mengubah file Library anda.
Caranya yaitu dengan menggunakan lokal variabel dalam fungsi Library tersebut dan jika harus ada nilai dari fungsi tersebut, gunakan fungsi dengan nilai kembali (return value).
Langkah-langkah : (Lanjutan dari Memulai CoViAVR (CodeVisionAVR))
1. Setelah project Latihanku.c telah dibuat kemudian File-New dan pilih Source dan OK.
2. Akan muncul tab untitled.c selanjutnya File-Save ganti nama dengan MyLibrary dengan ekstensi .h (C Compiler header file) dan OK.
3. Perhatikan perubahan pada panel navigator dan jangan lupa memanggil Library tersebut.
Cara membuat library ada di HELP CoViAVR (Creating Libraries).
Proses membuat file library selesai.
Buatlah fungsi-fungsi khusus.
Fungsi khusus adalah prosedur dengan fungsi tertentu yang akan digunakan pada main program ataupun fungsi lainnya, seperti fungsi keypad, LCD, UART, Serial EEPROM, RTC, dll.
Salah satu contoh, saya akan membuat fungsi untuk menentukan baudrate komunikasi serial.
Langkah-langkah :
1. Buka atau aktifkan tab MyLibrary.h kemudian buat fungsi seperti gambar.
Mengapa saya menggunakan IF dan ELSE-IF bukannya rumus yang mungkin lebih sederhana ?
Karena meurut saya, rumus memang terlihat sederhana dalam hal jumlah baris tetapi saat menggunakan rumus yang akan dikali, bagi, kurang, tambah, pembulatan, nilai pecahan dll, ini akan memakan memori cukup banyak dan waktu eksekusi yang cukup lama.
Perhatikan bahwa nilai yang berubah hanya UBRRL saja dengan nilai tertentu setiap baudratenya. INGAT nilai UBRRL ini hanya pada kristal 4MHz saja untuk kristal frekuensi lain nilainya akan berubah.
2. Pada main program panggil fungsi UART_BAUDRATE untuk inisialisasi baudrate-nya.
3. Perhatikan tampilan program pada terminal.
Untuk
- Gunakan Global variabel dan Lokal variabel.
- Perintah Bahasa C yang sesuai.
- Gunakan Huruf besar dan huruf kecil secara spesifik.
Saya bahas pada Menyederhanakan & Merapikan Program Part II.
Kamis, 02 Juli 2009
Kabel ISP Kanda System STK200+/300
.
Untuk membuat kabel ISP Kanda System STK200+/300 yaitu kabel konektor interface antara programmer dengan komputer menggunakan port paralel, silahkan lihat link ini http://www.robotgames.net/atmel/Cables.htm. Pada link tersebut terdapat 2 konfigurasi.
Konfigurasi sederhana (Simplified).
Tidak digunakan IC Tri Sate Buffer sehingga rangkaian jadi sederhana, akan tetapi saat menguji program kabel ini harus di lepaskan dari board programmer dan saat akan memporgram chip anda harus memasang kembali.
Hal ini karena PORTB mikro terhubung langsung dengan port paralel komputer (LPT) sehingga logika pada PORTB mikro terpengaruh oleh logika pada port paralel.
Salah satu solusinya yaitu anda menggunakan PORTA, PORTC, dan PORTD terlebih dahulu dan PORTB tidak digunakan sehingga tidak perlu dilepas pasang, saat memprogram dan saat menguji program.
Konfigurasi Komplit (Buffered)
Pada konfigurasi ini digunakan IC Tri State Buffer sebagai penyangga data. IC 74HC244 atau 74HC125 akan menghubungkan komunikasi data antara komputer (Port LPT) dengan mikrokontroler saat proses pemrograman chip dilakukan dan akan mengisolasi hubungan antara port LPT dengan PORTB mikrokontroler saat selesai memprogram chip.
Dengan adanya IC 74HC244, pengujian program pada PORTB dapat dilakukan secara langsung tanpa perlu khawatir logika Port LPT akan mempengaruhi logika PORTB mikro.
Untuk membuat kabel ISP Kanda System STK200+/300 yaitu kabel konektor interface antara programmer dengan komputer menggunakan port paralel, silahkan lihat link ini http://www.robotgames.net/atmel/Cables.htm. Pada link tersebut terdapat 2 konfigurasi.
Konfigurasi sederhana (Simplified).
Tidak digunakan IC Tri Sate Buffer sehingga rangkaian jadi sederhana, akan tetapi saat menguji program kabel ini harus di lepaskan dari board programmer dan saat akan memporgram chip anda harus memasang kembali.
Hal ini karena PORTB mikro terhubung langsung dengan port paralel komputer (LPT) sehingga logika pada PORTB mikro terpengaruh oleh logika pada port paralel.
Salah satu solusinya yaitu anda menggunakan PORTA, PORTC, dan PORTD terlebih dahulu dan PORTB tidak digunakan sehingga tidak perlu dilepas pasang, saat memprogram dan saat menguji program.
Konfigurasi Komplit (Buffered)
Pada konfigurasi ini digunakan IC Tri State Buffer sebagai penyangga data. IC 74HC244 atau 74HC125 akan menghubungkan komunikasi data antara komputer (Port LPT) dengan mikrokontroler saat proses pemrograman chip dilakukan dan akan mengisolasi hubungan antara port LPT dengan PORTB mikrokontroler saat selesai memprogram chip.
Dengan adanya IC 74HC244, pengujian program pada PORTB dapat dilakukan secara langsung tanpa perlu khawatir logika Port LPT akan mempengaruhi logika PORTB mikro.
Membuat Programmer AVR
.
Rangkaian dan Board programmer mikrokontroler ATmega8535 telah banyak terserdia dipasaran dan harganya "terjangkau", tetapi bagi anda yang ingin menguji kemampuan membuat programmer ATmega8535, saya memberikan tutorial ini sebagai referensi. Semoga bermanfaat.
Ini link yang cukup bagus, tapi masih banyak lagi diinternet.
http://www.serasidis.gr/circuits/avrprog/avrprog.htm
http://kartikmohta.com/wiki/Tech/ATmega16Programmer
Gambar diatas terdiri dari gambar rangkaian programmer secara keseluruhan, gambar kapasitor jenis MKM dan kapasitor tantalum, serta soket RJ11 (soket phone).
Soket untuk berkomunikasi dengan komputer melalui port COM saya gunakan soket RJ11 (soket telephone) karena kabel yang dibutuhkan hanya 3 dan soket ini lebih kecil ukurannya dibanding dengan DB9. tetapi jika mengalami kesulitan menemukan komponennya, maka ganti saja dengan DB9.
Untuk kapasitor MKM pada gambar rangkaian usahakan menggunakan kapasitor jenis tantalum 100 nF jika tidak ada komponen ini gunakan MKM yang biasa saja.
Perhatikan rangkaian pada kaki VCC, AVCC, dan AREF mikro, setiap kaki terdapat kapasitor MKM dan kapasitor ini dipasang sedekat mungkin dengan kaki-kaki tersebut untuk menjaga kestabilan tegangan pada kaki-kaki tersebut.
Rangkaian konverter TTL - RS232 yang digunakan adalah rangkaian transistor bukan dengan IC 232 (misal MAX232, ICL232, dll) karena murah dan sederhana, akan tetapi dengan menggunakan rangkaian ini maka komunikasi serial dengan komputer tidak dapat jauh-jauh agar komunikasi data tetap valid (kira-kira 1-1,5 meter saja).
XTAL mikro dapat diganti hingga 16MHz tergantung aplikasi yang anda gunakan. Kristal terbesar yang pernah saya gunakan adalah 10MHz.
Selamat mencoba n berhasil ya... ya... ya...
Rangkaian dan Board programmer mikrokontroler ATmega8535 telah banyak terserdia dipasaran dan harganya "terjangkau", tetapi bagi anda yang ingin menguji kemampuan membuat programmer ATmega8535, saya memberikan tutorial ini sebagai referensi. Semoga bermanfaat.
Ini link yang cukup bagus, tapi masih banyak lagi diinternet.
http://www.serasidis.gr/circuits/avrprog/avrprog.htm
http://kartikmohta.com/wiki/Tech/ATmega16Programmer
Gambar diatas terdiri dari gambar rangkaian programmer secara keseluruhan, gambar kapasitor jenis MKM dan kapasitor tantalum, serta soket RJ11 (soket phone).
Soket untuk berkomunikasi dengan komputer melalui port COM saya gunakan soket RJ11 (soket telephone) karena kabel yang dibutuhkan hanya 3 dan soket ini lebih kecil ukurannya dibanding dengan DB9. tetapi jika mengalami kesulitan menemukan komponennya, maka ganti saja dengan DB9.
Untuk kapasitor MKM pada gambar rangkaian usahakan menggunakan kapasitor jenis tantalum 100 nF jika tidak ada komponen ini gunakan MKM yang biasa saja.
Perhatikan rangkaian pada kaki VCC, AVCC, dan AREF mikro, setiap kaki terdapat kapasitor MKM dan kapasitor ini dipasang sedekat mungkin dengan kaki-kaki tersebut untuk menjaga kestabilan tegangan pada kaki-kaki tersebut.
Rangkaian konverter TTL - RS232 yang digunakan adalah rangkaian transistor bukan dengan IC 232 (misal MAX232, ICL232, dll) karena murah dan sederhana, akan tetapi dengan menggunakan rangkaian ini maka komunikasi serial dengan komputer tidak dapat jauh-jauh agar komunikasi data tetap valid (kira-kira 1-1,5 meter saja).
XTAL mikro dapat diganti hingga 16MHz tergantung aplikasi yang anda gunakan. Kristal terbesar yang pernah saya gunakan adalah 10MHz.
Selamat mencoba n berhasil ya... ya... ya...
Rabu, 01 Juli 2009
Memulai CoViAVR (CodeVisionAVR)
.
Pada tutor ini akan dibahas bagaimana memulai penggunaan program CodeVisionAVR yang berbasis bahasa C. Mudah-mudahan menambah wawasan bagi pengguna pemula atau yang baru belajar dan mengenal mikrokontroler.
Langkah Awal :
OK, saya anggap sudah ada Hardware dan sudah menginstall softwarenya. Sekarang ke penggunaan CodeVisionAVR.
1. Jalankan aplikasi CodeVisionAVR.
2. Klik tombol Programmer Settings atau Settings-Programmer dan atur seperti gambar. nb : Pengaturan ini hanya sekali saja.
3. Klik tombol Terminals Settings atau Settings-Terminal dan atur seperti pada gambar. nb : Pengaturan ini hanya sekali saja.
4. Mulai project baru, pilih File-New pilih Project dan OK. Jika pilihan yang tampil adalah Source dan Library maka project sebelumnya harus ditutup terlebih dahulu (File - CloseAll).
5. Gunakan CodeWizzardAVR dan atur pada tab Chip dan USART, seperti pada gambar.
6. Pilih File-Program Preview untuk melihat hasilnya, jika sudah pilih Generate, Save and Exit.
7. Buat folder baru terlebih dahulu sebelum Save agar file tersusun rapi.
8. Save dengan nama "Latihanku" untuk semuanya.
9. Klik tombol Configure the project atau Project-Configure dan atur seperti pada gambar.
9. Aktifkan panel Navigator dan klik file Latihanku.c untuk menampilkan Coding program.
11. Program akan terlihat panjang karena banyaknya komentar dan catatan program.
12. Hapus komentar dan catatan yang tidak perlu agar terlihat sederhana dan program seperti gambar berikut.
13. Gunakan panel Terminal untuk melihat hasilnya.
14. Klik tombol Reset Chip atau tombol Reset pada bardwarenya untuk memulai lagi
Selamat mencoba.
Pada tutor ini akan dibahas bagaimana memulai penggunaan program CodeVisionAVR yang berbasis bahasa C. Mudah-mudahan menambah wawasan bagi pengguna pemula atau yang baru belajar dan mengenal mikrokontroler.
Langkah Awal :
- Instal terlebih dahulu softwarenya CoViAVR Evaluation V2.04.2b (kalo ada gunakan v2.03.09 full versi).
- Wajib tersedia sistem minimum / Board programer mikrokontroler ATmega8535
- Terdapat rangkaian RS232 untuk komunikasi dengan komputer. (Board tertentu telah tersedia / built in).
- Power Supply yang stabil dan memadai.
- File - New : Membuat Project atau Listing Program baru.
- File - Open : Membuka file Project (.prj), C Source file (.c), Header file (.h), dan file text lainnya.
- File - Save All : Menyimpan seluruh perubahan file yang dibuka.
- CodeWizzardAVR : Aplikasi tambahan yang mempermudah pemrograman.
- Configure Project : Pengaturan konfigurasi File project.
- Compile : Meng-compile listing program.
- Build : Membuat file .hex dari listing program.
- Terminal Settings : Pengaturan komunikasi serial (Port COM).
- Terminal : Aplikasi komunikasi serial untuk UART (Port COM).
- Programmer Settings (Programmer) : Pengaturan interface CVAVR dengan Programmer.
- Help
OK, saya anggap sudah ada Hardware dan sudah menginstall softwarenya. Sekarang ke penggunaan CodeVisionAVR.
1. Jalankan aplikasi CodeVisionAVR.
2. Klik tombol Programmer Settings atau Settings-Programmer dan atur seperti gambar. nb : Pengaturan ini hanya sekali saja.
3. Klik tombol Terminals Settings atau Settings-Terminal dan atur seperti pada gambar. nb : Pengaturan ini hanya sekali saja.
4. Mulai project baru, pilih File-New pilih Project dan OK. Jika pilihan yang tampil adalah Source dan Library maka project sebelumnya harus ditutup terlebih dahulu (File - CloseAll).
5. Gunakan CodeWizzardAVR dan atur pada tab Chip dan USART, seperti pada gambar.
6. Pilih File-Program Preview untuk melihat hasilnya, jika sudah pilih Generate, Save and Exit.
7. Buat folder baru terlebih dahulu sebelum Save agar file tersusun rapi.
8. Save dengan nama "Latihanku" untuk semuanya.
9. Klik tombol Configure the project atau Project-Configure dan atur seperti pada gambar.
9. Aktifkan panel Navigator dan klik file Latihanku.c untuk menampilkan Coding program.
11. Program akan terlihat panjang karena banyaknya komentar dan catatan program.
12. Hapus komentar dan catatan yang tidak perlu agar terlihat sederhana dan program seperti gambar berikut.
13. Gunakan panel Terminal untuk melihat hasilnya.
14. Klik tombol Reset Chip atau tombol Reset pada bardwarenya untuk memulai lagi
Selamat mencoba.
Langganan:
Postingan (Atom)
Topik yang Populer
-
Baca dulu : RPM motor DC : Perancangan Alat RPM Motor DC : Pengaturan Timer 8 bit RPM Motor DC : Pengaturan Timer 16 bit Berikut ini adalah...
-
. Data yang ingin diolah oleh Robot Line Tracing nantinya adalah logika 1/0 dari data PORTA ADC sensor garis, sehingga dibutuhkan konversi d...
-
. Biar memahami konsep sistem scanning baca dulu posting sebelumnya tentang : - Keypad Matriks - Keypad Matriks I : Konsep Dasar Pada listin...