BAB 11
LIQUID CRYSTAL DISPLAY (LCD)
Dengan melihat kepada tabel 11.1, dapat kita simpulkan bahwa setiap
sistem tentu memiliki keunggulan dan kelemahan masing-masing.
Sebagai perancang sistem berbasis mikroprosesor, perbandingan seperti
yang diperlihatkan pada tabel 11.1 sangat penting demi mencapai
efisiensi yang tinggi dari sisi biaya, kinerja dan implementasinya. Sesuai
dengan apa yang telah disinggung di atas, bahwa semestinya penentuan
jenis perangkat display perlu disesuaikan dengan kebutuhan jenis
informasi yang akan ditampilkan.
11.3 Pengkabelan Mikroprosesor Dengan LCD
Untuk membuat sambungan kabel antara mikroprosesor dengan
LCD harus paham spesifikasi fungsi terminal pada panel LCD. Contoh
LCD standar (M1632) seperti yang diperlihatkan pada gambar 11.1
memiliki 16 pin sambungan dengan perincian seperti pada tabel 11.2.
Tabel 11.2 Fungsi Pin LCD M1632
No Nama Fungsi
1 Vss GND
2 Vcc + 5 Volt
3 Vee Contrast
4 RS Register Select
0 = Register Instruksi
1 = Register Data
5 �
R/𝑊𝑊 Read/Write
6 E Enable
7 D0 Data Bus
8 D1
9 D2
10 D3
11 D4
12 D5
13 D6
14 D7
15 VBL+ 4 – 4.2 Volt
16 VBL- GND
Nomor urut pin pada LCD dimulai dari kiri ke kanan, seperti
ditunjukkan pada gambar 11.3.
1 $MOD51
2
3 PORT_DATA EQU P1
4 EN EQU P3.0
5 RS EQU P3.1
6
7 ORG 0H
8 CALL INIT_LCD
9 MOV P1, #'L'
10 CALL WRITE_DATA
11 SJMP $
12
13 ;=====SUB ROUTINE
14 WRITE_DATA:
15 SETB RS
16 SETB EN
17 CALL S_DELAY
18 CLR EN
19 RET
20
21
22 INIT_LCD:
23 CLR RS
24 MOV P1, #01H
25 SETB EN
26 CALL S_DELAY
27 CLR EN
28
29 MOV P1, #3CH
30 SETB EN
31 CALL S_DELAY
32 CLR EN
33
34 MOV P1, #0CH
35 SETB EN
36 CALL S_DELAY
37 CLR EN
38
39 MOV P1, #06H
40 SETB EN
41 CALL S_DELAY
42 CLR EN
43 RET
44
45 S_DELAY:
46 MOV R7,#0FFH
47 DJNZ R7,$
48 DJNZ R7,$
49 RET
50
51 END
Keterangan program :
Baris 3,4,5 Perhatikan penggunaan directive EQU disini tujuannya
adalah untuk memudahkan (membantu mengingat) nama port atau posisi
bit pada port yang spesifik digunakan untuk fungsi khusus. Dalam hal
ini Port P1 diberi nama alias yaitu PORT_DATA, Bit 0 dari Port 3
diberi nama alias EN dan Bit 1 dari Port 3 diberi nama alias RS.
Baris 7 Memanggil sub rutin INIT_LCD (Baris 22).
Sub rutin INIT_LCD berisi daftar data inisialisasi yang harus dituliskan
ke register instruksi pada LCD. Cara pelaksanaannya adalah :
- Pin RS di-setting LOW (Baris 23)
- Data CLEAR DISPLAY (01 Hex) disiapkan pada data bus
(Baris 24)
- Pin EN di-setting HIGH (Baris 25)
- Memberikan tunda waktu sesaat (Baris 26) Baris 26 ini
sebenarnya memanggil sub rutin S_DELAY (Baris 45) dimana
di dalam sub rutin ini sebenarnya hanya melakukan proses
berulang-ulang tanpa impact ke register lain. Sementara
mikroprosesor melakukan proses yang berulang-ulang tersebut
maka logika yang muncul pada port tetap apa adanya sebelum
ada data baru yang dituliskan.
- Pin EN di-setting LOW (Baris 27)
Perhatikan bahwa di dalam sub rutin INIT_LCD, data yang dituliskan
bergantian dan berurutan mulai dari data Clear Display (01 Hex),
Function Set (3C Hex), Display ON (0C Hex) dan Entry Mode (06 Hex).
Baris 9 Mempersiapkan data karakter pada data bus LCD (Port P1).
Karakter yang akan ditulis misalnya karakter ‘L’.
Baris 10 Memanggil sub rutin WRITE DATA. Pada sub rutin ini
sebenarnya merupakan implementasi dari prosedur penulisan data
karakter yang sudah dibahas sebelumnya. Cara pelaknsanaannya sebagai
berikut :
- Register RS harus di-setting HIGH (Baris 15)
- Pin EN di-setting HIGH (Baris 16)
- Memberikan tunda waktu sesaat (Baris 45) memanggil sub
rutin S_DELAY.
- Pin EN di-setting LOW (Baris 18)
- Kembali ke program utama (instruksi setelah Baris 10)
Baris 11 mikroprosesor melompat ke alamat yang sama (jalan di
tempat)
Hasil program di atas diperlihatkan seperti pada gambar 11.6 berikut :
1 $MOD51
2
3 PORT_DATA EQU P1
4 EN EQU P3.0
5 RS EQU P3.1
6
7 ORG 0H
8 CALL INIT_LCD
9 MOV P1, #'L'
10 CALL WRITE_DATA
11
12 MOV P1, #'C'
13 CALL WRITE_DATA
14
45 SETB RS
46 SETB EN
47 CALL S_DELAY
48 CLR EN
49 RET
50
51
52 INIT_LCD:
53 CLR RS
54 MOV P1, #01H
55 SETB EN
56 CALL S_DELAY
57 CLR EN
58
59 MOV P1, #3CH
60 SETB EN
61 CALL S_DELAY
62 CLR EN
63
64 MOV P1, #0CH
65 SETB EN
66 CALL S_DELAY
67 CLR EN
68
69 MOV P1, #06H
70 SETB EN
71 CALL S_DELAY
72 CLR EN
73 RET
74
75 S_DELAY:
76 MOV R7,#0FFH
77 DJNZ R7,$
78 DJNZ R7,$
79 RET
80
81 END
1 $MOD51
2
3 PORT_DATA EQU P1
4 EN
5 RS
6
7 ORG 0H
8 CALL INIT_LCD
9
10 MOV PORT_DATA, #085H
11 CALL WRITE_INS
12
13 MOV P1, #'L'
14 CALL WRITE_CHAR
15
16 MOV P1, #'C'
17 CALL WRITE_CHAR
18
19 MOV P1, #'D'
20 CALL WRITE_CHAR
21
22 MOV P1, #'-'
23 CALL WRITE_CHAR
24
25 MOV P1, #'D'
26 CALL WRITE_CHAR
27
28 MOV P1, #'i'
29 CALL WRITE_CHAR
30
31 MOV P1, #'s'
32 CALL WRITE_CHAR
33
34 MOV P1, #'p'
35 CALL WRITE_CHAR
36
37 MOV P1, #'l'
38 CALL WRITE_CHAR
39
40 MOV P1, #'a'
41 CALL WRITE_CHAR
42
43 MOV P1, #'y'
44 CALL WRITE_CHAR
45 SJMP $
46
47 ;===SUB ROUTINE
48 WRITE_CHAR:
49 SETB RS
50 SETB EN
51 CALL S_DELAY
52 CLR EN
53 RET
54
55 WRITE_INS:
56 CLR RS
57 SETB EN
58 CALL S_DELAY
59 CLR EN
60 RET
61
62 INIT_LCD:
63 CLR RS
64 MOV P1, #01H
65 SETB EN
66 CALL S_DELAY
67 CLR EN
68
69 MOV P1, #3CH
70 SETB EN
71 CALL S_DELAY
72 CLR EN
73
74 MOV P1, #0CH
75 SETB EN
76 CALL S_DELAY
77 CLR EN
78
79 MOV P1, #06H
80 SETB EN
81 CALL S_DELAY
82 CLR EN
83 RET
84
85 S_DELAY:
86 MOV R7,#0FFH
87 DJNZ R7,$
88 DJNZ R7,$
89 RET
90
91 END