Pengantar
LCD menambahkan terlihat lebih profesional untuk kebanyakan setiap proyek menutupi peran tujuh segmen atau alfa-numerik LED. Kebanyakan karakter LCD dikendalikan melalui controller standar industri HD44780 gaya. Ini bagus karena hampir semua karakter LCD Anda membeli akan beroperasi dengan cara yang sama persis. Setelah Anda telah belajar beberapa nuansa halus antarmuka Hitachi, Anda akan dapat dengan mudah menambahkan atau debugging output atraktif untuk setiap proyek yang Anda coba untuk mengatasi.Pin Out
Pin out pada kebanyakan LCD akan 14 sampai 16 pin dalam satu baris dengan jarak 100 mil standar. Versi 16 pin memiliki dua pin ekstra untuk mengakomodasi cahaya-back.Namun, terkadang pin yang ada tapi tidak terhubung ke apa-apa. Saya kira ini memungkinkan produsen untuk memiliki hanya satu tata letak papan untuk kedua model. Selalu terbaik untuk mencari datasheet untuk bagian Anda, tetapi pin keluar benar-benar sangat standar.Pin | Fungsi |
1 | Ground (Vss), 0V |
2 | Power (Vdd), +5 V |
3 | Tegangan Kontras (biasanya kurang dari 1V) |
4 | "R / S" Daftar Pilih (1 untuk Data Tulis, 0 untuk Command Tulis) |
5 | "R / W" Read / Write (1 untuk Baca, 0 untuk Tulis) |
6 | "EN" Aktifkan baris (Mode Pulsa tinggi kait perintah atau _|¯|_ data) |
7-14 | Data Pin (D0-D7) D0 adalah LSB, dalam mode 4-bit hanya D4-D7 digunakan |
15-16 | (Opsional) Anoda Back-cahaya dan Katoda, NC, atau Tidak Ada di All |
Skema
Ada dua cara dasar untuk antarmuka perangkat: mode 8-bit dan mode 4-bit. Paling sering, "R / W" line langsung diikat ke tanah, dan LCD hanya tertulis dan tidak membaca. Fungsi membaca biasanya digunakan untuk jajak pendapat "Sibuk Bendera" yang muncul pada D7 saat perangkat tidak mampu menerima perintah (ini sibuk .. mendapatkannya). Namun, fungsi ini dapat diabaikan dengan hanya menunggu waktu maksimum untuk setiap perintah untuk menyelesaikan (sebagian besar diselesaikan dalam waktu kurang dari 200us). Jadi, saya hanya akan membahas skenario di mana "R / W" adalah ground.8-Bit Interface
4-Bit Interface
Resistor 180 ohm pergi ke pin Anoda adalah untuk bias LED back-light pada model yang saya gunakan ketika saya membuat ini skematis. Model Anda mungkin tidak memiliki lampu belakang, itu mungkin perlu sebuah resistor nilai yang berbeda, atau Anda dapat memilih untuk mengabaikan lampu kembali semua bersama-sama dan menyimpan beberapa bagian, itu terserah Anda. Selain itu, tidak ditampilkan di sini, tapi Anda harus meletakkan 0.1uF atau 0.01uF keramik kapasitor dekat LCD antara Vss dan Vdd untuk bertindak sebagai filter untuk noise frekuensi tinggi.
Menulis Data dan Perintah
Dalam rangka untuk menulis perintah atau data lakukan hal berikut untuk kedua mode:8-Bit Write Sequence |
Pastikan "EN" adalah 0 atau rendah |
Set "R / S" untuk 0 untuk perintah, atau 1 untuk data / karakter |
Masukkan data / perintah pada D7-0 |
Set "EN" (EN = 1 atau Tinggi) |
Tunggu Sedikitnya 450 ns! |
Clear "EN" (EN = 0 atau Rendah) |
Tunggu 5ms untuk perintah menulis, dan 200us untuk menulis data. |
4-Bit Write Sequence |
Pastikan "EN" adalah 0 atau rendah |
Set "R / S" untuk 0 untuk perintah, atau 1 untuk data / karakter |
Masukkan BYTE TINGGI data / perintah pada D7-4 |
Set "EN" (EN = 1 atau Tinggi) |
Tunggu Sedikitnya 450 ns! |
Clear "EN" (EN = 0 atau Rendah) |
Tunggu 5ms untuk perintah menulis, dan 200us untuk menulis data. |
Masukkan LOW BYTE data / perintah pada D7-4 |
Tunggu Sedikitnya 450 ns! |
Clear "EN" (EN = 0 atau Rendah) |
Tunggu 5ms untuk perintah menulis, dan 200us untuk menulis data. |
Perintah Set
R / S | R / W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Instruksi / Keterangan |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Tampilan jelas dan Home Cursor yang |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | Kembali Cursor dan LCD untuk Posisi Depan |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | ID | S | Pindahkan kursor Set Arah |
0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | Aktifkan Tampilkan / Cursor |
0 | 0 | 0 | 0 | 0 | 1 | SC | RL | * | * | Pindah Cursor / Display Shift |
0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | Interface Set Panjang |
0 | 0 | 0 | 1 | A | A | A | A | A | A | Pindahkan kursor ke CGRAM |
0 | 0 | 1 | A | A | A | A | A | A | A | Pindahkan kursor ke Tampilan |
0 | 1 | BF | * | * | * | * | * | * | * | Jajak pendapat "Bendera Sibuk" |
1 | 0 | D | D | D | D | D | D | D | D | Tulis Karakter ke Tampilan pada Posisi Kursor Lancar |
1 | 1 | D | D | D | D | D | D | D | D | Baca Karakter di Pamerkan di Posisi Kursor Lancar |
deskripsi bit ini untuk perintah yang berbeda adalah:
"*" - Tidak Digunakan / Diabaikan. Bit ini dapat berupa "1" atau "0"Set Cursor Pindahkan Arah:
ID - Kenaikan yang Cursor Setelah Setiap Byte Ditulis ke Tampilan jika Set
S - Shift Tampilan dengan Byte Tertulis ke Tampilan
Aktifkan Tampilkan / Cursor
D - Turn Tampilan Pada (1) / Off (0)
C - Turn Cursor On (1) / Off (0)
B - Cursor Blink Aktif (1) / Off (0)
Pindah Cursor / Display Shift
SC - Tampilan Shift Aktif (1) / Off (0)
RL - Arah Hak Shift (1) / Waktu (0)
Interface Set Panjang
DL - Mengatur Panjang Data Interface 8 (1) / 4 (0)
N - Jumlah Line Display 1 (0) / 2 (1)
F - Karakter Font 5x10 (1) / 5x7 (0)
Jajak pendapat "Bendera Sibuk"
BF - bit ini diset sedangkan LCD pengolahan
Pindahkan kursor ke CGRAM / Tampilan
Alamat - A
Baca / Tulis ASCII untuk Menampilkan
D - Data
Inisialisasi
Ada, tentu saja, dua cara yang berbeda untuk menginisialisasi LCD: mode 4-bit, dan mode 8-bit. Sangat menarik untuk dicatat bahwa empat-line LCD menginisialisasi seperti LCD dua baris. Bahkan, setup biasanya hanya dua kontroler HD44780 gaya, tapi untuk pengguna itu transparan. Satu-satunya bagian aneh adalah bahwa garis yang ditujukan sedemikian rupa sehingga kedua garis 1's mendahului kedua garis 2's dari setiap controller, yang membuat alamat non-berturut-turut. Jadi, jika Anda hanya mengatur tampilan untuk menggeser kursor tepat setelah masing-masing karakter menulis, tampilan akan membungkus, akhirnya, dari baris 1 ke baris 3 ke baris 2 dan, akhirnya, dengan garis 4.Saya akan menunjukkan bentuk umum tentang bagaimana untuk menginisialisasi tampilan serta contoh. Contoh ini akan menginisialisasi 2-line (atau 4-line, mereka menginisialisasi yang sama) untuk menggeser kursor tepat setelah masing-masing karakter menulis, tampilan kursor tidak, dan tentunya mengaktifkan LCD untuk dilihat.
Kecuali secara eksplisit mencatat "Write", berarti mengikuti petunjuk yang digariskan dalam bagian "Menulis Data dan Perintah." Else yang memungkinkan pulsa harus diberikan diikuti dengan menunggu jumlah lain waktu.
Ingat: Untuk perintah RS = 0, untuk data RS = 1
8-Bit Inisialisasi
Inisialisasi Umum | Contoh Inisialisasi | |
1 | Tunggu 20ms untuk LCD untuk power up | |
2 | Tulis D7-0 = 30 hex, dengan RS = 0 | |
3 | Tunggu 5ms | |
4 | Tulis D7-0 = 30 hex, dengan RS = 0, lagi | |
5 | Tunggu 200us | |
6 | Tulis D7-0 = 30 hex, dengan RS = 0 waktu, satu lagi | |
7 | Tunggu 200us | |
8 | Write Perintah "Interface Set" | Tulis 38 hex (8-bit, 2-baris) |
9 | Write Perintah "Aktifkan Tampilkan / Kursor" | Tulis 08 hex (jangan pergeseran menampilkan, menyembunyikan kursor) |
10 | Write Command "Hapus dan Home" | Tulis 01 hex (layar jernih dan rumah) |
11 | Write Command "Arah Pindahkan kursor Set" | Tulis 06 hex (bergerak kanan kursor) |
12 | - | Tulis 0C hex (menghidupkan tampilan) |
Tampilan siap untuk menerima data. |
4-Bit Inisialisasi
Ingat: Data / Command menulis tentang byte satu ukuran dilakukan delay tinggi menggigit,, rendah menggigit, delay. (1 menggigit = 4 bit)Inisialisasi Umum | Contoh Inisialisasi | |
1 | Tunggu 20ms untuk LCD untuk power up | |
2 | Tulis D7-4 = 3 hex, dengan RS = 0 | |
3 | Tunggu 5ms | |
4 | Tulis D7-4 = 3 hex, dengan RS = 0, lagi | |
5 | Tunggu 200us | |
6 | Tulis D7-4 = 3 hex, dengan RS = 0 waktu, satu lagi | |
7 | Tunggu 200us | |
8 | Tulis D7-4 = 2 hex, untuk mengaktifkan mode empat-bit | |
9 | Tunggu 5ms | |
10 | Write Perintah "Interface Set" | Tulis 28 hex (4-Bits, 2-baris) |
11 | Write Perintah "Aktifkan Tampilkan / Kursor" | Tulis 08 hex (jangan pergeseran menampilkan, menyembunyikan kursor) |
12 | Write Command "Hapus dan Home" | Tulis 01 hex (layar jernih dan rumah) |
13 | Write Command "Arah Pindahkan kursor Set" | Tulis 06 hex (bergerak kanan kursor) |
14 | - | Tulis 0C hex (menghidupkan tampilan) |
Tampilan siap untuk menerima data. |
Alamat Lokasi
2-Line Display
LCD
Baris 1 | 00 hex, 01 hex, hex 02 ,........... |
Baris 2 | 40 hex, 41 hex, hex 42 ,........... |
4-Line Display
LCD
Baris 1 | 00 hex, 01 hex, hex 02 ,........... |
Baris 2 | 40 hex, 41 hex, hex 42 ,........... |
Line3 | 20 hex, 21 hex, 22 hex ,........... |
Line 4 | 60 hex, 61 hex, hex 62 ,........... |
Beberapa Berguna Perintah
Command (dalam hex) | Efek |
0C | Ternyata ON HANYA LCD, tidak ada kursor |
08 | Ternyata OFF layar LCD |
0E | Ternyata pada layar LCD dan Menetapkan CURSOR PADAT |
0F | Ternyata pada layar LCD dan Menetapkan CURSOR BLINKING |
80 | Memindahkan kursor ke alamat pertama di kiri LINE 1 |
C0 | Memindahkan kursor ke alamat pertama di kiri LINE 2 |
94 | Memindahkan kursor ke alamat pertama di kiri LINE 3 |
D4 | Memindahkan kursor ke alamat pertama di kiri LINE 4 |
Juga, perhatikan bahwa menambahkan sebuah offset untuk baris perintah akan memindahkan kursor ke tempat yang berbeda dalam baris yang disediakan Anda tidak melebihi alamat di baris. Jadi, misalnya, 80h + 2h akan memindahkan kursor ke posisi ketiga dari baris pertama. Kebanyakan kompiler akan membiarkan Anda mendefinisikan sebuah string dan memungkinkan pernyataan seperti ini:
; LCD Konstanta
Baris 1 equ 080h; atau 0x80 # define baris 1
;
; 8051 kode
mov lcdRegister, baris 1 +2; mengatur register yang akan diteruskan ke ...
; ... Subrutin untuk 3 spot 1 line
panggilan writeCommandSubroutine; menulis perintah
;
atau
; Kode PIC
movlw baris 1 +2
panggilan writeCommandSubroutine; melakukan hal yang sama untuk PIC