Minggu, 18 September 2011

Masalah LCD : Solusi Secara Software


.
Setelah Masalah LCD : Solusi Secara Hardware memecahkan solusi yang cukup sederhana, apakah tidak ada solusi secara Software-nya.

Tentu saja ada, silahkan menyimak dan tentukan mana solusi yang lebih baik.
Apakah secara hardware atau software ?

Solusi Secara Software
Yang perlu di ingat pertama kali adalah Busy flag berfungsi sebagai indikator bahwa chip prosesor pada LCD karakter sedang sibuk dan sebaiknya tidak boleh diganggu atau diinterupsi karena tidak akan dihiraukan dan tidak akan diolah oleh chip LCD tersebut.
Maka jalan terbaik yang harus dilakukan adalah menunggu hingga busy flag tidak aktif atau berlogika LOW, akan tetapi hal ini tidak berguna apabila LCD dilepaskan dari mikrokontroller.

Jika anda berniat membuat library untuk mengakses LCD karakter sendiri saya menduga anda menggunakan fungsi delay, looping, atau bahkan tidak melakukan proses tundaan sama sekali.

Saya tidak akan membahas listing program fungsi untuk mengakses LCD karakter karena memang saya belum pernah mencobanya sama sekali.
Jadi teorinya aja ya... T_T"
Mudah-mudahan nanti dicoba deh trus dipostingkan,
terlalu dimanjakan dengan fungsi buatan CvAVR sih ...^o^v...

Delay / Tundaan pengganti Busy Flag
Dibandingkan menggunakan fungsi looping yang sulit untuk diketahui waktu tundaannya sebaiknya menggunakan fungsi delay yang dapat dihitung waktu tundaannya (maksudnya hanya sekedar mempermudah pemahaman dan penjelasan).

Untuk mengetahui besarnya tundaan Busy Flag pada LCD maka harus diketahui chip prosesor yang digunakan oleh LCD karater tersebut dan kemudian mencari datasheet chip prosesor tersebut.

Disini hanya akan saya bahas chip prosesor LCD tipe HD44780U.
Delay Busy Flag terlama yaitu minimal 10 mS yaitu ketika dalam kondisi Power on Reset atau kondisi Vcc setelah mencapai tegangan 4,5 Vdc.
Jika tidak menggunakan proses pengecekan busy flag maka minimal tundaan yang diberikan sebagai pengganti busy flag adalah 10 mS (sebaiknya dilebihkan menjadi 15 mS).

Link codingnya :
http://www.edaboard.com/thread148157.html
http://www.beyondlogic.org/parlcd/parlcd.htm
http://www.picplay.net/Strings%20to%20LCD_asm.shtml

Akibat Tidak Menggunakan Busy Flag
Apabila chip prosesor LCD sedang bekerja yaitu ketika busy flag HIGH dan kemudian diberikan perintah / data tertentu, akan menyebabkan...
Di datasheet HD44780U halaman 24 :
Note: Be sure the HD44780U is not in the busy state (BF = 0) before sending an instruction from the MPU to the HD44780U. If an instruction is sent without checking the busy flag, the time between the first instruction and next instruction will take much longer than the instruction time itself.
Semoga membantu ...^^v...

Masalah LCD : Solusi Secara Hardware

.
Setelah mengetahui pin-pin LCD karakter serta fungsinya maka dapat diketahui bahwa :
Ketika menggunakan library fungsi lcd.h kemudian koneksi hardware LCD dengan mikrokontroller dilepaskan akan menyebabkan programsecara keseluruhan terhenti.
Hal ini dikarenakan program pada lcd.h menunggu Busy Flag tidak aktif atau chip prosesor pada LCD karakter sedang tidak melakukan sesuatu (tidak sibuk) dan siap menerima perintah / data dari mikrokontroller.

Pin DB7 = Busy Flag
Pin 14 pada LCD atau DB7 memiliki fungsi lain yaitu sebagai Busy flag.
Dalam kondisi sibuk, Busy flag ini berlogika 1 atau HIGH dan tidak akan mengolah / menerima data / perintah dari mikrokontroller maupun prosesor lainnya yang menggunakan LCD tersebut.

Sehingga jika mengirim data / perintah saat LCD sedang sibuk merupakan hal yang sia-sia bahkan bisa menyebabkan kesalahan data / perintah.
Oleh sebab itu prosesor yang menggunakan tampilan LCD harus menunggu hingga Busy flag ini berlogika 0 atau LOW dan diikuti dengan data/perintah yang diinginkan.

Fungsi library lcd.h pada CvAVR ketika mengakses LCD karakter, secara default pin DB7 (Busy Flag) berlogika HIGH dan menunggu chip prosesor LCD meng-LOW-kan pin tersebut.
Oleh sebab itu ketika LCD karakter dicabut dari PORT mikrokontroller, tidak ada yang meng-LOW-kan pin PORTx.7 sehingga program secara keseluruhan seolah-olah terhenti karena menunggu pin tersebut LOW.
atau dengan kata lain WAIT FOREVER.

Solusi Secara Hardware
Setelah mengetahui penyebabnya tentu saja sangat mudah solusinya bahkan sangat sederhana.
Solusinya yaitu ketika hardware LCD karakter tidak terpasang pada port mikrokontroller atau LCD dilepas, maka pin PORTx.7 dihubungkan dengan resistor lalu ke GND.

Agar anda dengan bebas lepas-pasang LCD karakter dari mikrokontroller bisa ditambahkan toggle switch atau Push button toggle yang bisa diatur posisinya ketika LCD karakter di pasang atau dilepaskan.
Sederhana bukan..

Post berikutnya yaitu solusi secara software.

Semoga membantu ...^^v...

Masalah LCD : LCD Pinout

.
Beberapa posting LCD sebelumnya :

Link Bermanfaat lainnya :

Seperti pada tulisan sebelumnya bahwa ketika LCD karakter di cabut sedangkan dalam coding terdapat perintah untuk mengakses LCD maka akan menyebabkan masalah untuk program secara keseluruhan.
Untuk mengatasi masalah "Waiting LCD", ada 2 cara yang bisa dilakukan yaitu secara Hardware dan secara Software.

Untuk mengatasi hardwarenya maka harus mengetahui tentang hardware LCD HD44780 meskipun sedikit yang penting tepat sasaran ^-^.

Konfigurasi PIN LCD HD44780
Untuk mempelajari hardware LCD HD44780 cukup dengan mengetahui pin-pinnya dan fungsi setiap pin serta cara kerja pin tersebut.
Link Datasheet LCD HD44780 :










Pin dan penjelasannya :
1 = GND : Ground 0Vdc
2 = VCC : Power supply  +3,3 hingga +5,5Vdc (sesuaikan)
3 = VO : Contrast
Mengatur tingkat ketajaman / kontras karakter pada tampilan LCD.
4 = RS (Register Select) : Input
  • Logika 0/Low : Instruction Register, jika diberi logika 0 berarti Command akan dikirim.
  • Logika 1/High : Data Register, jika diberi logika 1 berarti Data akan dikirim.
5 = R/W' (Read / Write') : Input
  • Logika 0/Low : Write, menulis data ke LCD, pin ini hampir selalu LOW.
  • Logika 1/High : Read, membaca data internal dari DDRAM atau CGRAM.
6 = E (Enable) : Input
Untuk mengaktifkan operasi / komunikasi dengan LCD. Pertama harus berlogika Low/0 untuk mengirim data lalu atur dua perintah kontrol dan ketika telah terkonfigurasi kemudian ubah logika E menjadi High/1 dan tunggu hingga waktu minimu
7 - 14 = DB0 - DB7 (Data Bit)
DB0 hingga DB7 digunakan keseluruhan untuk komunikasi / interface data 8 bit
11 - 14 = DB4 - DB7 (Data Bit)
DB4 hingga DB7 digunakan untuk komunikasi / interface data 4 bit
14 = DB7 (Busy Flag)
Memiliki fungsi lain sebagai indikator Busy Flag yaitu indikator yang menunjukkan bahwa chip processor LCD tersebut masih sedang sibuk / memproses sesuatu.
15 = BL+ : Power supply BackLight +3,3Vdc hingga +5,5Vdc
16 = BL- : Power supply BackLight 0Vdc = Gnd

Nah dari keterangan fungsi pin-pin pada LCD karakter bisa disimpulkan bahwa penyebab "Masalah LCD" pada program yang "menunggu" LCD terpasang disebabkan karena pin DB7 tersebut yaitu Busy Flag.

Silahkan baca Posting selanjutnya.

Semoga membantu ...^^v...

Jumat, 02 September 2011

ASK : LCD karakter HD44780 dan sejenisnya

.
Asker : Nico
About :
Display LCD karakter yang mengganggu jalannya program.
Question :
Bagaimana mengatasi program yang menunggu balasan LCD...? sehingga bila LCD dilepas.. program seolah2 berhenti....


Too PayZ:
Mendapat pertanyaan dari NICO di Comment Box yang isinya :
"Bagaimana mengatasi program yang menunggu balasan LCD...? sehingga bila LCD dilepas.. program seolah2 berhenti...."

Memang pertanyaan sederhana dan saya yakin semua yang menggunakan Display LCD karakter juga pernah mengalami hal yang sama. Serta kebingungan ketika LCD-nya di cabut dan mengakibatkan program yang tidak berjalan atau berhenti.
Lalu beranggapan bahwa LCD harus selalu dipasang jika mengakses LCD agar programnya tidak berhenti / nyangkut.

Posting selanjutnya sebenarnya mau membahas display DotMatiks tapi saya jadi penasaran karena ada pertanyaan seperti ini dan ingin mempostingnya.
Jadi post selanjutnya akan membahas tentang Display LCD karakter.

Semoga membantu ...^^v...

Topik yang Populer