JavaScript is disabled or you're using old browser, please turn on your JavaScript or upgrade your browser to see fancy looking.
Archive for the ‘knowledge’ Category

Newer Entries   

Kemudahan Memprogram LCD (Bagian II)

Merujuk pada tulisan saya terdahulu, serta beberapa komentator yang menanyakan program, maka pada tulisan kali ini saya akan memberikan contoh program (berdasarkan rutin siap pakai dari beberapa situs serta rutin yang built in
dari compiler tertentu) utk interfacing dengan lcd dengan berbagai macam compiler disesuaikan dengan mikrokontroller yang digunakan (MCS51 atau AVR RISC 8 bit).

Seperti yang saya paparkan pada postingan terdahulu, bahwa ada 2 cara utk berkomunikasi dengan LCD, yaitu 8 bit dan 4 bit jalur data. Selain 8 atau 4 jalur yang terhubung dengan kontroler, dibutuhkan 3 jalur lagi untuk kontrol, yaitu RS, RW dan EN.

Untuk MCS51 :

  1. Dalam Assembler Ada banyak rutin siap pakai di http://8052.com/codelib.phtml Yang sudah saya coba : http://8052.com/codelib/lcd_kepad.asm, rutin ini untuk komunikasi 8 bit. Jika menggunakan LCD 2 x 16, tidak perlu ada modifikasi pada rutin INITIALIZE. Contoh penggunaannya :
    ...
    DATA   EQU PORTx     ;misal x adalah PORT1
    LCD_RS EQU PORTy.0   ;misal y adalah PORT2
    LCD_RW EQU PORTy.1
    LCD_EN EQU PORTy.2
    CALL INITIALIZE      ;inisialisasi LCD
    CALL CLEAR_SCREEN    ;bersihkan layar
    MOV A,#80h           ;mengisi 0x80 ke accumulator untuk menset
    CALL ADDRESS         ;alamat DDRAM LCD. Ini akan menset posisi
                         ;LCD pada baris 1 kolom 1.
    MOV A,#'g'           ;Menulis karakter 'g'
    CALL WRITE_ON        ;pada baris 1 kolom 1
    MOV DPTR,#str1       ;menset data pointer ke alamat dgn label str1
    CALL TRANSFER        ;mencetak string 'gedex
    ...
    str1:
    DB 'gedex',offh      ;rutin TRANSFER akan mencetak karakter per karakter
                         ;dan memerlukan byte 0xff utk menandakan akhir dari
                         ;string.
    ...

    Jika saat kompilasi timbul error yang berhubungan dengan baris yang terdapat kata DATA, maka penamaan DATA perlu di rubah. Di beberapa compiler,DATA merupakan reserved word.
    Catatan : Saya mengcompilenya dengan Pinnacle v52 (Evaluation) dan ASM51.
    Pada Pinnacle tidak ada masalah terhadap penamaan DATA. Pada ASM51 timbul error, sehingga penamaan DATA perlu di rubah.

  2. Menggunakan BASCOM 8051 IDE.
    Komunikasi yang digunakan bisa 8 bit atau 4 bit. Jika menggunakan komunikasi 4 bit, maka pin LCD untuk data yang digunakan adalah DB4-DB7. Konfigurasi pin LCD ke port kontroller di inisialisasi dengan statement Config Lcdpin, misal :

    Config Lcdpin = Pin ,Db4 = P3.4,Db5 = P3.5,Db6 = P3.6,Db7 = P3.7,E = P2.4,Rs = P2.0

    Dengan pin RW terhubung ground. Tipe LCD yang digunakan diinisialisasi dengan statement Config LCD, misal :

    Config Lcd = 16 * 2

    Setelah pemanggilan statement di atas, LCD siap dikirimi data atau instruksi. BASCOM juga telah menyediakan syntax yang berhubungan dengan LCD seperti :
    CLS : untuk membersihkan layar
    CURSOR : dengan parameter ON/OFF, BLINK/NOBLINK
    LOCATE y,x : untuk memindahkan kursor ke posisi tertentu.
    LCD : mencetak konstanta atau variabel ke tampilan LCD.
    dsb.. Contoh penggunaannya :

    ...
    Config Lcdpin = Pin , Db4 = P3.4 , Db5 = P3.5 , Db6 = P3.6 , Db7 = P3.7 , E = P2.4 , Rs = P2.0
    Config Lcd = 16 * 2
    Cursor Off
    Cls
    Locate 1 , 1 : Lcd "gedex"
    Locate 2 , 1 : Lcd "C"; "o"; "o"; "L"
    ...

    Komunikasi secara 8 bit pada BASCOM direkomendasikan untuk berkomunikasi dengan mikroprosesor, dimana DB0-DB7 harus terhubung dengan D0-D7 dan RS / EN dengan jalur A0. Saya sendiri belum pernah mencobanya.
    Catatan : Saya menggunakan BASCOM 8051 v2.0.11.0 Serial Demo.

Untuk AVR RISC Microcontroller 8 bit :

  1. Menggunakan AVR Studio
    Rutin dari OMIDKOMPANI, dapat di download di http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=904&item_type=project
  2. Menggunakan WinAVR
    Rutin dari by iamgotzaa. Contoh pada program main nya akan menampilkan hasil sampling ADC ke LCD. dapat di download di http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=440&item_type=project
    Rutin dari nasi, dapat didownload di : http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=293&item_type=project
  3. BASCOM utk AVR
    Penggunaannya hampir sama dengan BASCOM 8051 IDE
  4. Menggunakan CodeVisionAVR
    CodeVision menyediakan wizard, CodeWizardAVR, untuk menggenerate baris kode untuk mendefiniskan LCD. Interfacing ke LCD ini membutuhkan 7 pin pada port yang sama. Misal digunakan PORTB untuk LCD port, maka konfigurasi pin antara LCD dan chip AVR adalah :
    PORTB.0 : RS
    PORTB.1 : RW
    PORTB.2 : EN
    PORTB.4 : DB4
    PORTB.5 : DB5
    PORTB.6 : DB6
    PORTB.7 : DB7
    Langkah-langkah menggunakan CodeWizardAVR untuk LCD :

    1. Pilih Create new file
      Create New File
    2. Pilih File type project
      File type project
      Lalu pilih yes untuk menggunakan CodeWizardAVRPilih yes untuk menggunakan CodeWizardAVR
    3. Akan muncul jendela seperti gambar di bawah ini. Pilih chip yang digunakan serta clock yang dipakai. Misal menggunakan ATMega16 dengan frekuensi clock 4 MHz
      tampilan jendela untuk CodeWizardAVR
    4. Pindah ke tab LCD, pilih port yang akan di gunakan untuk LCD port. Misal pada PORTB, maka hubungan pin antara LCD dan PORTB akan ditampilkan.
      tab LCD pada CodeWizardAVR

Menggunakan rutin LCD yang sudah built in dari compiler tertentu dapat mempermudah pekerjaan dan menghemat waktu. Jika LCD yang digunakan hanya digunakan sesaat, misal nya hanya untuk debug data dari sensor atau bagian sistem yg tidak significant, maka saya menyarankan untuk menggunakan rutin bawaan dari compiler dengan komunikasi 4 bit. Gambar di bawah ini adalah LCD yang biasa saya pakai untuk memonitor nilai sensor atau debug sistem.

My typical lcd used for debuging

Intelligent Control Systems??

Beberapa hari belakangan ini gw agak sibuk ngoprek robot, sampai-sampai gw nginep di kampus selama 4 hari. Deadline untuk memberikan laporan kemajuan adalah minggu ke-3 bulan maret 2007, Jadi, selasa kemarin adalah hari terakhir. Selama 4 hari di kampus gw masih bingung bagaimana memprogram navigasi robot dengan 6 sensor ultrasonic. Ada beberapa keterbatasan, diantaranya : referensi yang tepat dan arena sementara. Arena yang dibuat masih dari kardus dan lantai karpet tanpa ada garis putih disetiap kamar. Dan juga arena masih dibuat sebatas 1 kamar dari lokasi home robot. Penggunaan kardus sangat tidak memungkinkan, karena sedikit robot menabrak akan merubuhkan atau memiringkan dinding kardus itu sendiri. Hal ini tidak memungkin terjadinya trigger untuk bumper switch. Ya, rencananya robot yang gw buat juga akan memakai bumper switch + 2 module IR (GP2D15) untuk membantu penghindaran dinding selain dari ultrasonic. Program yang gw buat juga masih ‘cupu’, sensor di trigger secara sequential dan data diretrieve satu persatu dari sensor paling kiri. Gw masih prioritaskan side kanan dan kiri, jadi bagian sensor kiri dan kanan akan dibandingkan lalu nilai komparasi akan menentukan pergerakan motor. Bagian depan sensor akan diperhitungkan setelahnya. Ugh.. wasting time. Cara yang lain yang ‘mungkin’ lebih efektif adalah memparallel semua sensor. Jadi sensor di trigger bersamaan, dan mcu akan mempolling setiap sensor untuk mengecek data yang duluan datang. Ada yang punya ide lebih baik?? Please let me know guys. Lalu dengan keterbatasan arena yang ‘baru 1/4′nya dan jauh dari realnya, bagaimana mau mensampling data sensor??

Intellient Control System belum diterapkan dalam robot. Terus terang, gw masih ngeblank abis di masalah Artificial Neural Network, Expert System dan Fuzzy Logic. Gw tipikal orang yang masih ngoprek-ngoprek dari source code yang ada, menganalisa lalu memodifikasi sesuai kebutuhan. Jadi sebenarnya ‘cepat lambatnya’ gw mengerjakan sebuah program adalah referensi source code yang berhubungan dengan objek yang sedang dikerjakan. Mungkin ini saatnya gw mulai mempelajari lagi konsep-konsep sistem kontrol cerdas. Mulai lagi deh nyari jurnal-jurnal dan e-book.

Terus bagaimana robotnya?? Ya.. kalau menghindari dinding sih dah bisa. Tapi sebenarnya di laporan kemajuan, robot sudah harus dapat menemukan dan mematikan lilin. Sensor UVTron sebenarnya sudah punya, namun belum ada waktu untuk nyobain. Ya.. gw gak berharap banyak bakal bisa diterima di tahap ke-2 ini, karena memang masih jauh dari kriteria yang diminta. Tetapi ‘kayaknya’ lolos ataupun gak lolos gw bakal ngerjain nih robot buat skripsi gw sendiri.

Demam Minesweeper

Biasanya kalau musim hujan di Jakarta, apalagi sampai banjir, biasanya musim DBD juga. Saya juga terkena imbasnya, banjir membuat aktifitas gw tersendat. Ya, apalagi koneksi speedy gw yang sering down. Kalau begini bisa stress berat. Dan kalau stress obatnya adalah ngeGame cuy :).
Yang gw empet adalah memainkan game yang matre resource. Game-game seperti CS, Warcraft dan Halo kudu masuk blacklist gw. Yang gw suka adalah game sederhana, minimalis dan sedikit mikir (*halah*), macam Minesweeper gitu. Yang bikin gw kaget adalah anak-anak idfusi, generasi penerus bangsa, gak ngerti cara main minesweeper, WTF?! Pliz dech.. haree geneeh gak RTMF khekhe.. Malu lu ama Dion cuy!? Apalagi salah satu rekan gw yang mempunyai hobi elektronika, seorang founder komunitas, dan intermediete di salah satu bahasa pemrograman baru ngerti main minesweeper baru-baru ini .. Nay.. nay :( you’re so f*cK*ng s*ck

Bagi gw ngeGame hanya sekedar refreshing pikiran setelah sekian lama melakukan hal yang menjenuhkan didepan kompie (coding, reading & ngopreking). Jgn ampe aktifitas lu dimakan ama game deh.. diperbudak ama permainan!! Kalo lo masih bocah esDe mah wajar aja, nah sekarang dah waktunya berkarya dan berkeluarga (*halah*).

Balik lagi ke Minesweeper. Game ini, sesuai namanya, bermisi membersihkan arena game yang terdiri dari sekumpulan kotak persegi dari bom. Setiap kotak persegi yang mengandung bom harus dikasih flag, dengan mengklik kanan. Sedangkan kotak yang disinyalir tidak mengandung bom bisa dibuka ,klik kiri, dan kotak yang terbuka memiliki 2 kemungkinan dibaliknya yaitu berupa angka atau blank (biasanya daerah kotak yang terbuka lebih luas). Kalau yang kotak dibuka ternyata bom, maka game over. Nilai diambil dari waktu yang dibutuhkan untuk menyelesaikan permainan.

Saya dari lubuk hati yang paling dalam meminta maaf kepada rekan-rekan idfusi karena telah mengenalkan Minesweeper, sehingga membuat mereka penasaran selama beberapa hari :D. Terus terang awalnya, gw kira nih game tebak-tebakan. Jadi bagi eLu yang awalnya main Minesweeper dengan mengklik berharap itu bukan bom, nah gw juga awalnya begetoch :D Tapi apakah arti dari setiap angka yang muncul dari hasil klik di sebuah kotak tidak mempunyai arti? Saat awal permainan memang menebak, ya ngasal aja man.. berharap kotak yang terbuka cukup banyak. Angka yang muncul menandakan banyak bom yang mengelilingi kotak berangka tersebut Misalkan:

minesweeper01.gif
Gambar 01

Pada saat mulai, lu ngeklik pada sembarang kotak dan misal cuma muncul angka 1 seperti gambar di atas. Angka 1 pada kotak yang telah terbuka menandakan bahwa ada 1 bom yang mengelilingi nya (8 kotak yang bertetanggaan).

minesweeper02.gif
Gambar 02

8 kotak dengan label ‘?’ menandakan kotak yang memungkinkan terdapat bom dibaliknya. Jadi kemungkinan setiap kotak, dengan label ‘?’, terdapat bom dibaliknya adalah 1/8. Kalau hanya diberikan petunjuk satu kotak dengan angka yang paling kecil, 1, maka masih perlu menebak bukan? Lainnya halnya jika angka yang mucul adalah 8, maka bisa dipastikan kotak yang bertetanggaan pasti semuanya adalah bom. Jadi tidak sepenuhnya Minesweeper (default lho, no cheating) adalah permainan logika, ada saat dimana pattern angka yang terbentuk tidak bisa menentukan posisi absolute sebuah bom. Pattern yang paling mudah ditebak adalah, angka 1 yang menyisakan 1 kotak tetangga yang belum terbuka :D (*nenek2 jg tau*). Perhatikan gambar di
bawah ini:

minesweeper03.gif
Gambar 03

Tanpa perlu berpikir panjang kotak bom pastinya berada di sebelah angka 1 paling kiri. Ya jelas lhah wong cuma nyisain 1 kotak. KLo eLu masih belet nih perhatiin gambarnya :

minesweeper04.gif
Gambar 04

kotak yang belum terbuka dan gw labelin 0 dan berwarna #108A0E alias ijo cendol adalah, dan sudah pasti, kotak berisi bom. Selain itu angka 3 yang menyisakan 3 kotak tetangga yang belum terbuka juga dapat dipastikan ketiga kotak tersebut berisi bom. Demikian juga angka 2 yang hanya menyisakan 2 kotak tetangga yang belum terbuka, pastilah dua kotak tetangganya itu bom. Dalam gambar di bawah ini kotak yang dilabelin ‘?’ sudah pasti berisi bom.

minesweeper05.gif minesweeper06.gif

Menurut wikipedia analisa seperti ini disebut Single square analysis. John D. Ramsdell membuat sebuah game bernama PGSM (ProGrammer’s MineSweeper) yang misinya adalah membuat sebuah program strategi untuk menyelesaikan permainan Minesweeper. Jadi pemainnya adalah program, menyelesaikan masalah sesuai dengan strategi yang dibuat. SinglePointStrategy yang dibuat oleh Ramsdell sama dengan analisa Single square. Gw sendiri sih belom nyoba tuh PGSM, apalagi ampe ngoprek tuh sourcenya.. Gw blank di Java. Di homepagenya Ramsdell, bisa dilihat, melalui applet, bagaimana strateginya Ramsdell meyelesaikan beberapa level PGMS. Analisa lainnya adalah mempekirakan angka yang bertetanggaan, lebih lanjut bisa dibaca di Wikipedia. Menurut saya pemain yang handal tidak perlu penjelasan analisa tersebut. Mereka, para pemain Minesweeper, yang biasa menghabiskan berjam-jam bermain lambat laun akan hapal terhadap pattern angka yang terbentuk. Semakin sering bermain maka semakin banyak referensi pattern yang didapat dan semakin terasah pula tangan kirinya dalam mengklik mouse. Beberapa level, default, yang terdapat di sebagian besar versi Minesweeper adalah Beginner, Intermediete dan Expert. Tingkat kesulitan masing-masing level dilihat dari luas arena (jumlah kotak yang semakin banyak) dan banyak bom. Selain itu, tingkat kesulitan arena Minesweeper juga ditakar dari yang namanya 3BV (Bechtel’s Board Benchmark Value), yaitu jumlah klik kiri minimum yang dibutuhkan untuk membuka semua kotak tanpa ada bom.
Ada komunitas pemain Minesweeper di Internet, yang mencatat setiap waktu terbaik di setiap level. WTF?! 1 detik?? Yang jelas kalau lo lihat videonya, pergerakan dan penekanan pada mouse sangat tidak manusiawi.
Siap buat mecahin rekor 1 detik untuk level Beginner? 10 detik untuk Intermediete? 38 Detik untuk Expert? Hehe.. :D Yang jelas siapin aja waktu seharian untuk latihan.

Mengakali session expire di Rapidshare

Sorry agak BasBang, abis bingung mau nulis apaan. Begini ceritanya :
Kebiasan buruk gw adalah mengumpulkan ebook & video dalam jumlah besar hingga kapasitas hard disk tinggal sedikit. Kenapa buruk? Ya karena tidak semua ebook gw baca & semua video yang sudah pernah ditonton tidak dihapus. Karena sekarang lagi nyari bahan tentang Image Processing dan Matlab, jadi buka xls daftar ebook di ebooksclub yang sudah lama terkubur di folder ebook gw. Seperti biasa komentator ebooksclub selalu merujuk file ebook miliknya ke Rapidshare, Mihd, Oxyshare, dsb. Sebagian besar pasti merujuk ke Rapidshare. Mungkin Anda sudah tahu kalau kita harus menunggu beberapa menit setelah mendownload beberapa file di Rapidshare. Atau mungkin pesan error seperti ini yang Anda dapatkan :

Download-session invalid. Please click here.

Possible reasons:

  • Download-session expired. Direct-links last a few minutes for free users and a few days for premium-users.
  • You requested this download-session from a different IP than yours. If you use AOL, try a different browser.
  • If nothing helps, getting a premium-account will override the IP-check, which means it will solve this problem.

Terus bagaimana dunk? Masa harus register untuk menjadi anggota premium, yang tentunya tidak gratis, huh?

Hasil dari googling menemukan si Harshit Pandey. Ini cara yang beliau sampaikan (namun untuk pengguna yang dapat menjangkau modem, tapi ini sudah menyelesaikan masalah gw :D) :

  1. Dapatkan url yang merujuk file downloadan di Rapidshare (untuk daftar ebook di ebooksclub bisa didownload disini)
  2. Copy Link Location tersebut ke browser
  3. Kalau linknya benar, namafile akan tercantum di atas box berikut :
    rapidshare_1.png
  4. Sebelum ngeklik button Free, matikan modem.. tunggu 1 detik… lalu nyalakan (Gak usah nunggu 1 detik sih.. yang jelas matiin lalu nyalakan. Saya kurang tahu seberapa lama Rapidshare akan menunggu untuk memulai session yang baru (Ada yang bisa memberi referensi ??), tapi inti dari merestart modem disini adalah untuk membuat session baru. Rapidshare melakukan tracing terhadap IP penggunannya pada saat mendownload file pertama kali dan melog size file yang telah di downloadnya. CMIIW)
  5. Setelah klik button Free, tunggu countdown nya habis
    rapidshare_2.png
  6. Isi field pada validasi ala Captcha

rapidshare_3.png

Bagaimana untuk pengguna yang tidak memiliki akses ke modem? Gunakan server proxy!! Googling aja sever proxy yang free & kalau bisa yang lokasinya dekat (biar gak lambreta).

Sebenarnya Rapidshare memberikan akun premium secara gratis pada waktu-waktu tertentu. Pemberian akun premium gratis ini berdasarkan “siapa cepat, dia dapat”. Akun ini juga terbatas jumlahnya dan tentunya hanya tersedia di waktu tertentu saja.

Jika akun ini sudah tidak tersedia maka akan muncul jendela pop-up dengan kalimat “All free-accounts are already taken”. Akun gratis ini biasanya tersedia pada url :

http://rapidshare.de/cgi-bin/freeaccount.cgi

Untuk sign-up menggunakan akun premium gratis, Anda harus mengecek link di atas untuk melihat apakan ada akun yang tersedia. Kalau tersedia, maka disegerakan untuk login. Ada beberapa tools yang disediakan untuk melakukan cek tersedianya ‘akun premium gratis’. Lebih lanjut dapat di baca di :

http://www.mydigitallife.info/2006/08/22/free-rapidshare-premium-account-checker-and-notifier/

Baca komentarnya untuk mendapatkan akun-akun gratisnya (Saya menyarankan untuk mengecek komentator yang menyediakan direct link ke file yang mengandung password. Jangan coba-coba ikut permainan yang hadiahnya akun premium gratis atau juga mencantumkan referal pengguna tertentu.)

So far i know thus apps just for windows… Anyone can give better solution(s)?

CMIIW

Referensi :

Kemudahan Memprogram LCD

Sebagai mahasiswa jurusan Sistem Komputer tentunya tidak asing bagi saya melakukan interfacing dengan perangkat seperti LCD. Saya pun menggunakan LCD 2×16 (2 baris, 16 kolom) dalam PI, pengganti PKL, saya untuk diaplikasikan menjadi sistem kunci pintu digital. Sebelumnya saya pun tidak begitu mengerti bagaimana LCD bekerja dan bagaimana cara memprogramnya, tapi dengan bantuan search engine saya mendapat begitu banyak referensi. Yang saya sayangkan adalah kemalasan teman-teman sejurusan saya yang enggan mempelajari hal ini, padahal mereka menggunakan LCD dalam alat yang mereka buat. Untuk mengetahui bagaimana LCD itu bekerja dapat di cek pada alamat-alamat berikut :

Saya pun banyak menyadur dari artikel dari link di atas untuk dijadikan pembahasan pada landasan teori (bab II). Tapi intinya adalah bagaimana memprogram LCD agar bekerja sesuai dengan aplikasi yang kita rancang. Pada alat PI saya, komunikasi perangkat terjadi antara mikrokontroler (turunan 8051) dengan LCD dengan menggunakan 8 bit jalur data dan 2 jalur kontrol. Pada saat itu, saya tidak mengetahui jenis-jenis LCD, yang saya tahu adalah size nya (1×16, 2×16, 2×20 dsb). Namun ada standarisasi yang cukup populer digunakan banyak vendor LCD, yaitu HD44780U, yang memiliki chip kontroler Hitachi 44780. LCD bertipe ini memungkinkan pemrogram untuk mengoperasikan komunikasi data secara 8 bit atau 4 bit. Jika menggunakan jalur data 4 bit akan ada 7 jalur data (3 untuk jalur kontrol & 4 untuk jalur data). Jika menggunakan jalur data 8 bit maka akan ada 11 jalur data (3 untuk jalur kontrol & 8 untuk jalur data). Tiga jalur kontrol ke LCD ini adalah EN (Enable), RS (Register Select) dan R/W (Read/Write). Berikut adalah susunan umum pin LCD bertipe 44780 :

Pin Deskripsi
1 Ground
2 Vcc
3 Pengatur kontras
4 “RS” Instruction/Register Select
5 “R/W” Read/Write LCD Registers
6 “EN” Enable clock
7-14 Data I/O Pins

Urutan pin (1), umumnya, dimulai dari sebelah kiri (terletak di pojok kiri atas) dan untuk LCD yang memiliki 16 pin, 2 pin terakhir (15 & 16) adalah anoda dan katoda untuk back-lighting. Berikut adalah contoh LCD (2×16) yang umum digunakan :

LCD 2x16

Sebagaimana terlihat pada kolom deskripsi, interface LCD merupakan sebuah parallel bus, dimana hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan penulisan data dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang 8 bit dikirim ke LCD secara 4 atau 8 bit pada satu waktu. Jika mode 4 bit yang digunakan, maka 2 nibble data dikirim untuk membuat sepenuhnya 8 bit (pertama dikirim 4 bit MSB lalu 4 bit LSB dengan pulsa clock EN setiap nibblenya). Jalur kontrol EN digunakan untuk memberitahu LCD bahwa mikrokontroller mengirimkan data ke LCD. Untuk mengirim data ke LCD program harus menset EN ke kondisi high (1) dan kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur data bus. Saat jalur lainnya sudah siap, EN harus diset ke 0 dan tunggu beberapa saat (tergantung pada datasheet LCD), dan set EN kembali ke high (1). Ketika jalur RS berada dalam kondisi low (0), data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika RS dalam kondisi high atau 1, data yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Misal, untuk menampilkan huruf “A” pada layar maka RS harus diset ke 1. Jalur kontrol R/W harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high (1), maka program akan melakukan query (pembacaan) data dari LCD. Instruksi pembacaan hanya satu, yaitu Get LCD status (membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu diset ke 0. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna), mereka dinamakan DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4 atau 8 bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting. Mode 8 bit sangat baik digunakan ketika kecepatan menjadi keutamaan dalam sebuah aplikasi dan setidaknya minimal tersedia 11 pin I/O (3 pin untuk kontrol, 8 pin untuk data). Sedangkan mode 4 bit minimal hanya membutuhkan 7 bit (3 pin untuk kontrol, 4 untuk data). Bit “RS” digunakan untuk memilih apakah data atau instruksi yang akan ditransfer antara mikrokontroller dan LCD. Jika bit ini di set (RS = 1), maka byte pada posisi kursor LCD saat itu dapat dibaca atau ditulis. Jika bit ini di reset (RS = 0), bisa merupakan instruksi yang dikirim ke LCD atau status eksekusi dari instruksi terakhir yang dibaca. Macam-macam instruksi yang tersedia untuk standar LCD 44780 dapat dirujuk pada link berikut :

Saya tidak akan membahas panjang lebar bagaima memprogram kontroller (baik dari mikrokontroller ataupun PC), karena sudah banyak situs yang memberikan contoh program beserta penjelasannya (akan saya cantumkan beberapa link di baris akhir posting ini). Saya sendiri menggunakan rutin LCD siap pakai untuk berkomunikasi dengan mikrokontroller 8051. Aplikasi dengan LCD dapat dibuat dengan mudah dan waktu yang singkat, mengingat koneksi parallel yang cukup mudah antara kontroller dan LCD. Untuk hobi elektronik yang enggan melakukan coding, terdapat banyak aplikasi siap pakai untuk berkomunikasi dengan LCD melalui parallel port PC, seperti : LCDCenter & LCD Smartie. Entah kenapa saya jadi ingin menulis tentang LCD setelah beberapa teman meminta saya untuk membantu pembuatan PI nya yang berhubungan dengan LCD. Saya juga tidak menyalahkan mereka yang terdesak oleh waktu atau terjerat kemalasan untuk belajar yang notabene untuk kebaikan mereka sendiri.

Referensi :

Lanjutan tulisan ini : Kemudahan Memprogram LCD (Bagian II)

Newer Entries