Untuk menjalin komunikasi yang baik antara dunia manusia dan dunia mesin, unit display memainkan peran penting. Jadi mereka adalah bagian penting dari sistem tertanam. Unit tampilan - besar atau kecil, bekerja dengan prinsip dasar yang sama. Selain unit tampilan yang kompleks seperti tampilan grafik dan tampilan 3D, orang harus mengetahui cara bekerja dengan tampilan sederhana seperti unit 16x1 dan 16x2. Unit tampilan 16x1 akan memiliki 16 karakter dan berada dalam satu baris. The 16x2 LCD akan memiliki 32 karakter secara total 16in 1 st line dan 16 lain di 2 ndgaris. Disini harus dipahami bahwa di setiap karakter terdapat 5x10 = 50 piksel sehingga untuk menampilkan satu karakter semua 50 piksel harus bekerja sama. Tetapi kita tidak perlu khawatir tentang itu karena ada pengontrol lain (HD44780) di unit tampilan yang melakukan tugas mengontrol piksel. (Anda bisa melihatnya di unit LCD, itu adalah mata hitam di belakang).
Komponen Diperlukan
Perangkat keras:
Mikrokontroler ATmega32
Catu daya (5v)
AVR-ISP Programmer
JHD_162ALCD (LCD 16x2)
Kapasitor 100uF.
Perangkat lunak:
Atmel studio 6.1.2
Progisp atau flash magic
Diagram Sirkuit dan Penjelasannya
Seperti yang ditunjukkan pada LCD interfacing dengan rangkaian ATmega32, Anda dapat melihat bahwa PORTA ATMEGA32 terhubung ke port data LCD. Di sini orang harus ingat untuk menonaktifkan komunikasi JTAG di PORTC ATMEGA dengan mengubah byte sekering, jika seseorang ingin menggunakan PORTC sebagai port komunikasi normal. Pada LCD 16x2 ada 16 pin secara keseluruhan, jika ada lampu belakang, jika tidak ada lampu belakang akan ada 14 pin. Satu dapat memberi daya atau meninggalkan pin lampu belakang. Sekarang di 14 pin ada 8 data pin (7-14 atau D0-D7), 2 pin power supply (1 & 2 atau VSS & Vdd atau gnd & + 5V), 3 rd pin untuk kontrol kontras (VEE-kontrol seberapa tebal karakter harus ditampilkan), 3 pin kontrol (RS & RW & E)
Pada rangkaian di atas untuk antarmuka LCD 16x2 dengan mikrokontroler AVR, Anda dapat mengamati bahwa saya hanya mengambil dua pin kontrol. Ini memberikan fleksibilitas pemahaman yang lebih baik. Bit kontras dan BACA / TULIS jarang digunakan sehingga dapat disingkat menjadi ground. Ini menempatkan LCD dalam kontras tertinggi dan mode baca. Kita hanya perlu mengontrol pin ENABLE dan RS untuk mengirim karakter dan data yang sesuai.
Hubungan antara mikrokontroler ATmega32 dan LCD 16x2 diberikan di bawah ini:
PIN1 atau VSS - ground
PIN2 atau VDD atau VCC - daya + 5v
PIN3 atau VEE - ground (memberikan kontras maksimum yang terbaik untuk pemula)
PIN4 atau RS (Pilihan Register) - PD6 mikrokontroler
PIN5 atau RW (Baca / Tulis) - ground (menempatkan LCD dalam mode baca memudahkan komunikasi untuk pengguna)
PIN6 atau E (Enable) - PD5 mikrokontroler
PIN7 atau D0 - PA0 dari mikrokontroler
PIN8 atau D1 - PA1
PIN9 atau D2 - PA2
PIN10 atau D3 - PA3
PIN11 atau D4 - PA4
PIN12 atau D5 - PA5
PIN13 atau D6 - PA6
PIN14 atau D7 - PA7
Di sirkuit Anda dapat melihat kami telah menggunakan komunikasi 8bit (D0-D7) namun ini tidak wajib dan kami juga dapat menggunakan komunikasi 4bit (D4-D7) tetapi dengan program komunikasi 4 bit menjadi agak rumit untuk pemula jadi kami pergi saja Komunikasi 8 bit.
Jadi dari pengamatan dari tabel diatas kita menghubungkan 10 pin LCD ke controller dimana 8 pin adalah pin data dan 2 pin untuk kontrol.
Kerja
Sekarang untuk memulai Anda harus mengetahui fungsi 10 pin LCD 16x2 (8 pin data + 2 pin kontrol). 8 pin data digunakan untuk mengirimkan data atau perintah ke LCD. Dalam dua pin kontrol:
1. Pin RS (Register selection) adalah untuk memberi tahu LCD apakah kita mengirim data ke sana atau perintah ke sana.
Sebagai contoh:
Dalam tabel di atas untuk nilai Port Data (D7-D0) "0b0010 1000 atau 0x28" memberitahu LCD untuk menampilkan simbol "(". Dalam tabel dua nilai yang sama 0x28 memberitahu LCD "Anda adalah LCD 5x7 titik dan berperilaku seperti satu ”, jadi untuk nilai yang sama pengguna dapat mendefinisikan dua hal, sekarang situasi ini dinetralkan oleh pin Register Selection, jika pin RS disetel rendah maka LCD mengerti bahwa kita mengirim perintah. Jika kita menyetel pin RS ke tinggi maka LCD memahami bahwa kami mengirimkan data, sehingga dalam kedua kasus LCD menghargai nilai port data sesuai dengan nilai pin RS.
2. Pin E (Enable) hanya untuk memberi tahu "LED indikasi daya PC", pin ini disetel ke tinggi untuk memberi tahu LCD "untuk menerima port data bentuk data dari pengontrol". Setelah pin ini menjadi rendah setelah tinggi, LCD memproses data yang diterima dan menunjukkan hasil yang sesuai. Jadi pin ini disetel ke tinggi sebelum mengirim data dan ditarik ke bawah setelah mengirim data.
Sekarang setelah menghubungkan perangkat keras, mulai studio Atmel dan mulai proyek baru untuk menulis program, sekarang buka layar pemrograman dan mulai peras program. Program harus mengikuti sebagai berikut.
Pertama kami memberi tahu pengontrol port mana yang kami gunakan untuk data dan kontrol LCD. Kemudian beri tahu pengontrol kapan harus mengirim data atau perintah yang sesuai dengan memainkan pin RS dan E.
Penjelasan singkat tentang konsep yang digunakan dalam program:
1. E disetel tinggi (memberi tahu LCD untuk menerima data) dan RS disetel rendah (memberi tahu LCD bahwa kami memberikan perintah)
2. Memberikan nilai 0x01 pada data port sebagai perintah untuk membersihkan layar
3. E disetel tinggi (memberi tahu LCD untuk menerima data) dan RS disetel tinggi (memberi tahu LCD bahwa kami memberikan data)
4. Pengambilan string karakter mengirimkan setiap karakter dalam string satu per satu.
5. E disetel rendah (memberi tahu LCD bahwa kami selesai mengirim data)
6. Setelah perintah terakhir LCD menghentikan komunikasi dan memproses data dan menampilkan rangkaian karakter di layar.
Dalam skenario ini kami akan mengirim karakter satu demi satu. Karakter diberikan ke LCD oleh kode ASCII (Kode standar Amerika untuk Pertukaran Informasi).
Tabel kode ASCII ditampilkan di atas. Di sini agar LCD menampilkan karakter "@" kita perlu mengirim kode heksadesimal "64". Jika kita mengirim '0x62' ke LCD maka akan muncul simbol '>'. Seperti ini kami akan mengirimkan kode yang sesuai ke LCD untuk menampilkan nama.
Cara komunikasi antara LCD dan mikrokontroler AVR ATmega32 paling baik dijelaskan pada langkah demi langkah kode C di bawah ini,