LCD Controller Tutorial

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.

PinFungsi
1Ground (Vss), 0V
2Power (Vdd), +5 V
3Tegangan 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-14Data 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

Schematic 8 bit Interface

4-Bit Interface

Schematic 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 / SR / WD7D6D5D4D3D2D1D0Instruksi / Keterangan
0000000001Tampilan jelas dan Home Cursor yang
000000001*Kembali Cursor dan LCD untuk Posisi Depan
00000001IDSPindahkan kursor Set Arah
0000001DCBAktifkan Tampilkan / Cursor
000001SCRL**Pindah Cursor / Display Shift
00001DLNF**Interface Set Panjang
0001AAAAAAPindahkan kursor ke CGRAM
001AAAAAAAPindahkan kursor ke Tampilan
01BF*******Jajak pendapat "Bendera Sibuk"
10DDDDDDDDTulis Karakter ke Tampilan pada Posisi Kursor Lancar
11DDDDDDDDBaca 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 UmumContoh Inisialisasi
1Tunggu 20ms untuk LCD untuk power up
2Tulis D7-0 = 30 hex, dengan RS = 0
3Tunggu 5ms
4Tulis D7-0 = 30 hex, dengan RS = 0, lagi
5Tunggu 200us
6Tulis D7-0 = 30 hex, dengan RS = 0 waktu, satu lagi
7Tunggu 200us
8Write Perintah "Interface Set"Tulis 38 hex (8-bit, 2-baris)
9Write Perintah "Aktifkan Tampilkan / Kursor"Tulis 08 hex (jangan pergeseran menampilkan, menyembunyikan kursor)
10Write Command "Hapus dan Home"Tulis 01 hex (layar jernih dan rumah)
11Write 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 UmumContoh Inisialisasi
1Tunggu 20ms untuk LCD untuk power up
2Tulis D7-4 = 3 hex, dengan RS = 0
3Tunggu 5ms
4Tulis D7-4 = 3 hex, dengan RS = 0, lagi
5Tunggu 200us
6Tulis D7-4 = 3 hex, dengan RS = 0 waktu, satu lagi
7Tunggu 200us
8Tulis D7-4 = 2 hex, untuk mengaktifkan mode empat-bit
9Tunggu 5ms
10Write Perintah "Interface Set"Tulis 28 hex (4-Bits, 2-baris)
11Write Perintah "Aktifkan Tampilkan / Kursor"Tulis 08 hex (jangan pergeseran menampilkan, menyembunyikan kursor)
12Write Command "Hapus dan Home"Tulis 01 hex (layar jernih dan rumah)
13Write 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 100 hex, 01 hex, hex 02 ,...........          
Baris 240 hex, 41 hex, hex 42 ,...........

4-Line Display

LCD
Baris 100 hex, 01 hex, hex 02 ,...........          
Baris 240 hex, 41 hex, hex 42 ,...........
Line320 hex, 21 hex, 22 hex ,...........
Line 460 hex, 61 hex, hex 62 ,...........

Beberapa Berguna Perintah

Command (dalam hex)Efek
0CTernyata ON HANYA LCD, tidak ada kursor
08Ternyata OFF layar LCD
0ETernyata pada layar LCD dan Menetapkan CURSOR PADAT
0FTernyata pada layar LCD dan Menetapkan CURSOR BLINKING
80Memindahkan kursor ke alamat pertama di kiri LINE 1
C0Memindahkan kursor ke alamat pertama di kiri LINE 2
94Memindahkan kursor ke alamat pertama di kiri LINE 3
D4Memindahkan 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


Artikel yang berkaitan :



0 comments:

Posting Komentar