Smart Peripheral Controller
SERIAL LCD
Trademarks & Copyright XT, AT, IBM, PC, and PC-DOS are trademarks of International Business Machines Corp. MS-DOS is a registered trademark of Microsoft Corporation. Pentium is a registered trademark of Intel Corporation. MetaLink ASM51 is copyright by MetaLink Corporation.
1
Daftar Isi 1.
Pendahuluan ................................................................................................ 1.1 Spesifikasi Eksternal SPC SERIAL LCD ....................................... 1.2 Alamat DDRAM Varian SPC SERIAL LCD ................................. 1.3 Spesifikasi Internal I2C SPC SERIAL LCD ................................... 1.4 Spesifikasi Internal Synchronous Serial SPC CHARACTER LCD................................................................................................. 1.5 Spesifikasi Internal UART SPC SERIAL LCD.............................. 1.6 Sistem yang Dianjurkan ..................................................................
4 4 4 4 5 6 6
2.
Perangkat Keras SPC SERIAL LCD ........................................................ 7 7 2.1 Tata Letak Komponen SPC SERIAL LCD .................................. 2.2 Hubungan DT-51 Minimum System dengan SPC CHARACTER LCD................................................................................................ 7 2.3 Hubungan Komputer dengan SPC SERIAL LCD ......................... 8 2.4 Hubungan Buzzer dengan SPC SERIAL LCD .............................. 8 2.5 Setting Jumper UART / Synchronous Serial ................................. 8 2.6 Setting Jumper Alamat Terprogram............................................... 9 2.7 Ekspansi SPC SERIAL LCD ......................................................... 9 2.8 Mencoba SPC SERIAL LCD dengan Expl_I2C.Hex .................... 10 2.9 Mencoba SPC SERIAL LCD dengan Expl_SS.Hex...................... 10
3.
Perangkat Lunak SPC SERIAL LCD........................................................ 3.1 Spesifikasi I2C-bus ........................................................................ 3.1.1 Pengalamatan .................................................................................. 3.1.2 Command ........................................................................................ 3.1.2.1 Control............................................................................................. 3.1.2.2 Write Single Character .................................................................... 3.1.2.3 Write Multiple Character ................................................................ 3.1.2.4 Locate DDRAM .............................................................................. 3.1.2.5 Locate CGRAM .............................................................................. 3.1.2.6 Set Contrast ..................................................................................... 3.1.2.7 Read Data DDRAM ........................................................................ 3.1.2.8 Read Data CGRAM ........................................................................ 3.1.2.9 Read Address DDRAM................................................................... 3.1.2.10 Read Address CGRAM ................................................................... 3.1.2.11 Command LCD ............................................................................... 3.2 Spesifikasi Synchronous Serial Bus............................................. 3.2.1 Pengalamatan .................................................................................. 3.2.2 Command ........................................................................................ 3.2.2.1 Control............................................................................................. 3.2.2.2 Write Single Character .................................................................... 3.2.2.3 Write Multiple Character ................................................................ 3.2.2.4 Locate DDRAM .............................................................................. 3.2.2.5 Locate CGRAM .............................................................................. 3.2.2.6 Set Contrast ..................................................................................... 3.2.2.7 Read Data DDRAM ........................................................................
2
10 10 12 13 13 14 14 15 15 16 16 16 17 17 17 17 19 19 20 20 21 21 22 22 23
3.2.2.8 3.2.2.9 3.2.2.10 3.2.2.11 3.3 3.3.1 3.3.2 3.3.2.1 3.3.2.2 3.3.2.3 3.3.2.4 3.3.2.5 3.3.2.6 3.3.2.7 3.3.2.8 3.3.2.9 3.3.2.10 3.4 3.5 3.6
Read Data CGRAM ........................................................................ Read Address DDRAM................................................................... Read Address CGRAM ................................................................... Command LCD ............................................................................... Spesifikasi UART .......................................................................... Command ........................................................................................ Mode Command .............................................................................. Control............................................................................................. Write Multiple Character ................................................................ Locate DDRAM .............................................................................. Locate CGRAM .............................................................................. Set Contrast ..................................................................................... Read Data DDRAM ........................................................................ Read Data CGRAM ........................................................................ Read Address DDRAM................................................................... Read Address CGRAM ................................................................... Command LCD ............................................................................... Driver dan Rutin.............................................................................. Contoh Aplikasi dan Program ......................................................... Kerangka Program...........................................................................
23 23 24 24 24 24 25 25 26 26 26 27 27 27 28 28 28 28 34 35
Lampiran A. Skema SPC SERIAL LCD ...................................................................... 37 B. Protokol SPC SERIAL LCD ................................................................... 38
3
1.
PENDAHULUAN Smart Peripheral Controller / SPC SERIAL LCD merupakan pengendali modul CHARACTER LCD yang mendukung 3 macam jalur penyampaian data yaitu I2C-bus, Synchronous Serial, atau Universal Asynchronous Receiver/Transmitter (UART). Ketiga protokol penyampaian data tersebut bekerja secara serial sehingga dapat lebih menghemat dan mempermudah pengkabelan. Contoh aplikasi dari SPC SERIAL LCD adalah untuk character monitor, display, penampil counter, dan lain-lain.
1.1.
SPESIFIKASI EKSTERNAL SPC SERIAL LCD Spesifikasi Eksternal SPC SERIAL LCD sebagai berikut : • Kompatibel penuh dengan DT-51 Minimum System Ver 3.0. • Hanya perlu 2 jalur kabel untuk interface dengan mikroprosesor / mikrokontroler lain. • Dapat digunakan pada I2C-bus, Synchronous Serial, maupun UART. • Synchronous Serial berkerja dengan taraf logic TTL. • UART berkerja dengan taraf logic TTL maupun RS-232. • Dilengkapi dengan jumper untuk setting alamat, sehingga dapat di-ekspan sampai 8 board tanpa tambahan perangkat keras (baik secara I2C maupun Synchronous Serial). • Kompatibel sampai dengan LCD Module 40 x 2 dengan driver yang kompatibel dengan HD44780. • Tersedia prosedur siap pakai untuk aplikasi SPC SERIAL LCD. • Varian SPC Serial LCD: - LCD 8 x 2 , tanpa backlight - LCD 16 x 2 , dengan backlight - LCD 20 x 2 , dengan backlight - LCD 20 x 2 Large , dengan backlight - LCD 20 x 4 , dengan backlight - LCD 24 x 2 , dengan backlight - LCD 40 x 2 , dengan backlight
1.2.
ALAMAT DDRAM VARIAN SPC SERIAL LCD 8x2 00H………….07H 40H………….47H
16 x 2 ………0FH ………4FH
20 x 2 ………13H ………53H
24 x 2 ………17H ………57H
40 x 2 ………27H ………67H
20 x 4 00H………….………………………………13H 40H………….………………………………53H 14H………….………………………………27H 54H………….………………………………67H
1.3.
SPESIFIKASI INTERNAL I2C SPC SERIAL LCD Dalam penggunaan dari I2C SPC SERIAL LCD akan dikenal adanya tiga layer (lapisan) penggunaan:
4
Pertama Kedua Ketiga
: : :
I2C Engine Layer I2C Protocol Layer I2C Application Layer
I2C Engine Layer adalah lapisan yang mengurusi semua kegiatan dari tiap bit yang akan diterima atau yang akan dikirim. Bagian ini tidak perlu diubah kecuali untuk keperluan khusus. Bagi pengguna yang belum mahir dan berpengalaman tidak dianjurkan untuk mengubah bagian ini. Bagian ini terdapat dalam ENG_I2C.INC. I2C Protocol Layer adalah lapisan yang terletak satu lapis lebih tinggi dari I2C Engine Layer dan dipergunakan untuk mengatur semua lalu lintas data dan sudah tersusun sesuai dengan kegunaan menjadi paket Sub-rutin. Bagian ini tidak perlu diubah kecuali untuk keperluan khusus. Bagi pengguna yang belum mahir dan berpengalaman tidak dianjurkan untuk mengubah bagian ini. Bagian ini terdapat dalam LCDChar.INC. I2C Application Layer adalah lapisan terluar yang dipergunakan untuk berinteraksi secara langsung dengan Users/pengguna. Bagian ini tidak perlu diubah kecuali untuk keperluan khusus. Bagi pengguna yang belum mahir dan berpengalaman tidak dianjurkan untuk mengubah bagian ini. Bagian ini terdapat dalam LCDChar.INC. 1.4.
SPESIFIKASI INTERNAL SYNCHRONOUS SERIAL SPC SERIAL LCD Dalam penggunaan dari Synchronous Serial SPC SERIAL LCD akan dikenal adanya tiga layer (lapisan) penggunaan: Pertama : Synchronous Serial Engine Layer Kedua : Synchronous Serial Protocol Layer Ketiga : Synchronous Serial Application Layer Synchronous Serial Engine Layer adalah lapisan yang mengurusi semua kegiatan dari tiap bit yang akan diterima atau yang akan dikirim. Bagian ini tidak perlu diubah kecuali untuk keperluan khusus. Bagi pengguna yang belum mahir dan berpengalaman tidak dianjurkan untuk mengubah bagian ini. Bagian ini terdapat dalam ENG_SS.INC. Synchronous Serial Protocol Layer adalah lapisan yang terletak satu lapis lebih tinggi dari Synchronous Serial Engine Layer dan dipergunakan untuk mengatur semua lalu lintas data dan sudah tersusun sesuai dengan kegunaan menjadi paket Sub-rutin. Bagian ini tidak perlu diubah kecuali untuk keperluan khusus. Bagi pengguna yang belum mahir dan berpengalaman tidak dianjurkan untuk mengubah bagian ini. Bagian ini terdapat dalam LCDChar.INC.
5
Synchronous Serial Application Layer adalah lapisan terluar yang dipergunakan untuk berinteraksi secara langsung dengan Users/pengguna. Bagian ini tidak perlu diubah kecuali untuk keperluan khusus. Bagi pengguna yang belum mahir dan berpengalaman tidak dianjurkan untuk mengubah bagian ini. Bagian ini terdapat dalam LCDChar.INC. Penggunaan jalur komunikasi antara Synchronous Serial dan UART tidak bisa dilakukan bersamaan. Pemilihan antara jalur komunikasi Synchronous Serial atau UART diatur dengan cara mengganti setting jumper (dapat dilihat pada bagian 2.5). 1.5.
SPESIFIKASI INTERNAL UART SPC SERIAL LCD Dalam penggunaan dari UART SPC SERIAL LCD dikenal adanya Protocol Layer. UART Protocol Layer adalah lapisan yang dipergunakan untuk mengatur semua lalu lintas data dan sudah tersusun sesuai dengan kegunaan menjadi paket Sub-rutin. Adapun daftar API Command terdapat pada bagian 3.3. Penggunaan jalur komunikasi antara Synchronous Serial dan UART tidak bisa dilakukan bersamaan. Pemilihan antara jalur komunikasi Synchronous Serial atau UART diatur dengan cara mengganti setting jumper (dapat dilihat pada bagian 2.5).
1.6.
SISTEM YANG DIANJURKAN Perangkat keras : • PC XT / AT PentiumTM IBM Compatible dengan port serial (COM1 / COM2). • Board DT-51 Minimum System. • Floppy Disk 3.5”, kapasitas 1,44 Mbytes atau CD-ROM Drive. • Hard disk dengan kapasitas minimum 500 Kbytes. Perangkat lunak : • Sistem operasi MS-DOSTM atau PC-DOSTM. • Assembler ASM51. • File-file yang ada pada pada disket/CD program: EXPL_I2C.ASM, EXPL_I2C.HEX, EXPL_SS.ASM, EXPL_SS.HEX, LCDCHAR.INC, ENG_I2C.INC, ENG_SS.INC, MANUAL SPC SERIAL LCD.PDF, QUICK START SPC SERIAL LCD.PDF, dan MANUAL LCD.
6
2. 2.1.
PERANGKAT KERAS SPC SERIAL LCD TATA LETAK KOMPONEN SPC SERIAL LCD
2.2.
HUBUNGAN DT-51 MINIMUM SYSTEM DENGAN SPC SERIAL LCD SPC SERIAL LCD merupakan suatu sistem yang ‘Smart’. Selain dapat dihubungkan dengan DT-51 Minimum System atau dengan sistem mikroprosesor / mikrokontroler yang lain, SPC SERIAL LCD dapat juga dihubungkan dengan komputer. Apabila Anda ingin menghubungkan SPC SERIAL LCD dengan sistem yang lain kami sarankan untuk mempelajari skema SPC SERIAL LCD (lihat lampiran A). Untuk menghubungkan SPC SERIAL LCD dengan DT-51 Minimum System dianjurkan untuk menggunakan kabel pita (flat ribbon cable). Hubungan secara I2C-bus ditunjukkan pada tabel berikut : I2C Bus
DT-51 Minimum System PORT C & PORT 1
SPC SERIAL LCD J6
SCL SDA
Pin 15 (Port 1.6) Pin 16 (Port 1.7)
Pin 15 Pin 16
Jumper J2 (SCL/SDA) digunakan untuk resistor pull up SDA (I2C-bus data input / output) dan SCL (I2C-bus clock input). Penting ! Apabila lebih dari satu board SPC SERIAL LCD dihubungkan pada I2C-bus maka jumper J2 (SCL/SDA) salah satu board saja yang perlu dipasang. Hubungan secara Synchronous Serial bus ditunjukkan pada tabel berikut : Synch Serial Bus
DT-51 Minimum System PORT C & PORT 1
SPC SERIAL LCD J4
SerIn SerClk
Pin 13 (Port 1.4) Pin 14 (Port 1.5)
SerIn (Pin 3) SerClk (Pin 2)
Jumper J12 digunakan untuk resistor pull up SerIn (Synchronous Serial bus data input / output), SerClk (Synchronous Serial bus clock input), dan SerClr (Synchronous Serial bus reset).
7
Penting ! Apabila lebih dari satu board SPC SERIAL LCD dihubungkan pada Synchronous Serial bus maka jumper J12 (SerIn, SerClk, dan SerClr) salah satu board saja yang perlu dipasang. Catu daya 5V DC dihubungkan dengan konektor J5 (Power). Perhatikan polaritasnya jangan sampai terbalik, karena dapat mengakibatkan kerusakan. Penting ! Referensi ground (GND) antara modul SPC SERIAL LCD dengan DT-51 Minimum System harus sama. 2.3.
HUBUNGAN KOMPUTER DENGAN SPC SERIAL LCD SPC SERIAL LCD menyediakan interface yang dapat langsung berhubungan dengan port serial pada komputer. Hubungannya ditunjukkan pada tabel berikut : Serial/COM Port
SPC SERIAL LCD J14
Pin 5 (GND) Pin 3 (TX) Pin 2 (RX)
Pin 1 (GND) Pin 4 (TX) Pin 3 (RX)
J14 Tampak Depan 1 3 2 4
GND RX
2.4.
2.5.
TX
HUBUNGAN BUZZER DENGAN SPC SERIAL LCD SPC SERIAL LCD menyediakan konektor untuk buzzer yang dapat berbunyi jika kode ASCII 7Fh dikirimkan ke SPC SERIAL LCD. Kondisi buzzer ini bersifat toggle. Pengiriman pertama akan membunyikan buzzer sedangkan pengiriman kedua akan mematikan buzzer. Hubungannya ditunjukkan pada tabel berikut : Buzzer
SPC SERIAL LCD J13
Pin + Pin -
Pin 2 Pin 1
SETTING JUMPER UART / SYNCHRONOUS SERIAL Penggunaan jalur komunikasi antara Synchronous Serial dan UART tidak bisa dilakukan bersamaan. Pemilihan antara jalur komunikasi Synchronous Serial atau UART diatur dengan cara mengganti setting jumper J10-J11 dan J9.
8
J10-J11
J9
1
1
■■ ■■
1
1
1
■■ ■■
1
1
1
■■ ■■
1
Jalur Komunikasi
Konektor
Synchronous Serial
J4
■■
UART TTL
J4
■■
UART RS-232
J14
Keterangan : ■■ => jumper tersambung (ON) => jumper terlepas (OFF) Arah posisi jumper sesuai dengan posisi pada gambar bagian 2.1
Konektor J4 dapat digunakan sebagai interface UART TTL maupun Synchronous Serial.
2.6.
SPC Serial LCD Konektor J4
UART TTL
Synchronous Serial
Pin 1 Pin 2 Pin 3
Tidak Terpakai TX (out) RX (in)
SerClr SerClk SerIn
SETTING JUMPER ALAMAT TERPROGRAM Alamat terprogram setiap board SPC SERIAL LCD ditentukan oleh setting jumper J3. J3 (A2) J3 (A1) ■ ■ ■ ■
■ ■
J3(A0) ■ ■
■ ■
■ ■
Alamat Terprogram 0 1 2 3 4 5 6 7 (default)
000 001 010 011 100 101 110 111
Keterangan : ■ : jumper tersambung (ON)
2.7.
EKSPANSI SPC SERIAL LCD SPC SERIAL LCD dapat di-ekspan sampai 8 board. Beberapa hal yang perlu diperhatikan apabila menggunakan lebih dari satu board SPC SERIAL LCD : • Setiap board harus mempunyai alamat terprogram yang berbeda, ditentukan oleh jumper J3 (A0/A1/A2). • Jumper J2 pada salah satu board saja yang dipasang (jika menggunakan I2C-bus). • Jumper J12 pada salah satu board saja yang dipasang (jika menggunakan Synchronous Serial bus).
9
2.8.
MENCOBA SPC SERIAL LCD DENGAN EXPL_I2C.HEX Setting Hardware ♦ Hubungkan DT-51 Minimum System dengan SPC SERIAL LCD (lihat bagian 2.2) melalui I2C-bus. ♦ Hubungkan port serial DT-51 MinSys dengan COM1/COM2 dari komputer dengan menggunakan kabel serial. ♦ Setting alamat SPC SERIAL LCD pada alamat terprogram ke-7 (default, lihat bagian 2.6). ♦ Download Expl_I2C.HEX yang terdapat pada disket/CD. Proses Program Expl_I2C ♦ Setelah program selesai di-download maka akan tampak tulisan “INNOVATIVE” pada baris 1 LCD dan “ELECTRONICS” pada baris 2. Setelah delay sejenak, layar LCD akan dibersihkan dan tampil karakterkarakter yang terdapat pada tabel character generator ROM pattern LCD secara bergantian dimulai pada baris 1 dan kolom 1 LCD.
2.9.
MENCOBA SPC SERIAL LCD DENGAN EXPL_SS.HEX Setting Hardware ♦ Hubungkan DT-51 Minimum System dengan SPC SERIAL LCD (lihat bagian 2.2) melalui Synchronous Serial bus. ♦ Atur setting jumper sehingga jalur komunikasi yang digunakan adalah Synchronous Serial. (lihat bagian 2.5) ♦ Hubungkan port serial DT-51 MinSys dengan COM1/COM2 dari komputer dengan menggunakan kabel serial. ♦ Setting alamat SPC SERIAL LCD pada alamat terprogram ke-7 (default, lihat bagian 2.6). ♦ Download Expl_SS.HEX yang terdapat pada disket/CD. Proses Program Expl_SS ♦ Setelah program selesai di-download maka akan tampak tulisan “INNOVATIVE” pada baris 1 LCD dan “ELECTRONICS” pada baris 2. Setelah delay sejenak, layar LCD akan dibersihkan dan tampil karakterkarakter yang terdapat pada tabel character generator ROM pattern LCD secara bergantian dimulai pada baris 1 dan kolom 1 LCD.
3.
PERANGKAT LUNAK SPC SERIAL LCD Waktu yang dibutuhkan SPC Serial LCD mulai menyala hingga siap dioperasikan (Start-up Time) = 600 ms. Bacalah Manual LCD yang terdapat dalam disket/CD sebagai referensi untuk tabel kode Character Generator ROM (untuk rutin WriteSingle dan WriteString) dan tabel instruksi LCD (untuk rutin CommandLCD).
3.1
SPESIFIKASI I2C-BUS Berikut akan dijelaskan mengenai cara kerja dari komunikasi I2C Master (DT51 Minimum System) – Slave (SPC SERIAL LCD). Tugas dari master adalah
10
mengontrol semua komunikasi yang dilakukan, seperti mengatur semua pulsa pada jalur SCL, bit data pada SDA, dan memeriksa acknowledge.
Kondisi Start dalam I2C selalu dilakukan dengan cara memberikan level High (“1”) pada jalur SCL kemudian pada jalur SDA terjadi transisi turun (High ke Low). Kondisi Stop dalam I2C selalu dilakukan dengan cara memberikan level High (“1”) pada jalur SCL kemudian pada jalur SDA terjadi transisi naik (Low ke High).
Pengiriman Bit dilakukan setelah memberikan kodisi start dan perubahan bit hanya boleh terjadi/diijinkan saat jalur SCL pada kondisi Low (“0”). Setelah pengiriman bit (Bit Streaming) biasanya 8 bit kemudian master menunggu adanya bit acknowledgement dari slave, apabila tidak diterima bit acknowledgement maka slave tidak mendapat data (bit streaming) secara lengkap (miss / hilang) atau salah alamat (alamat tetap atau alamat terprogram). Acknowledgement diberikan oleh slave dengan memberikan pulsa low (“0”) saat clock ke 9 terjadi (pada transfer 8 bit), kemudian master memeriksa bit acknowledgement.
11
Diagram di atas adalah diagram lengkap tentang transfer data melalui I2C. Symbol
Min
Units
Time before START action
15
µs
ST2 STP1 t STP2 t STP3
Time after START action Hold time for prepare STOP action Time before STOP action Time after STOP action
7 14 7 7
µs µs µs µs
t
Time High for data hold Time Low for change data
10 12
µs µs
t
ST1
t t
CLHigh CLLow
t
3.1.1
Parameter
Pengalamatan
Pengalamatan memanfaatkan register : AddressI2C Memanfaatkan alamat memory 2Fh
Semua penggunaan dari I2C-bus selalu diawali dengan pengalamatan. Pada pengalamatan itu sendiri dibedakan menjadi tiga bagian : alamat tetap, alamat terprogram, dan Read/Write (R/W) pada SPC SERIAL LCD selalu menggunakan alamat tetap dengan nilai “1110”, Bagian Read/Write (R/W) bernilai “1” jika Master I2C (DT-51 MinSys / mikrokontroler lain) akan membaca data dari Slave I2C (SPC SERIAL LCD) dan bernilai “0”, jika Master I2C akan menulis data ke Slave I2C, sedangkan untuk alamat terprogram digunakan untuk memberikan alamat terhadap modul sesuai dengan kehendak pemakai. Alamat terprogram diatur dengan cara mengganti setting jumper (dapat dilihat pada bagian 2.6) sehingga pada jalur I2C yang sama dengan alamat tetap yang sama (“1110”) dapat digunakan 8 buah modul secara bersamaan dengan membedakan alamat terprogram.
12
3.1.2
Command
m3 m2 m1 m0 0 0 0 0 0 0 0 0 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1
0 0 1 1 0 0 1 1 0 0 1 1 X
0 1 0 1 0 1 0 1 0 1 0 1 X
Mode Control Write Single Character Write Multiple Character Locate DDRAM Locate CGRAM Set Contrast Read Data DDRAM Read Data CGRAM Read Address DDRAM Read Address CGRAM Command LCD Tidak Terpakai Tidak Terpakai
Pada perintah command terdapat bagian utama yaitu Mode. Mode digunakan untuk memilih perintah selanjutnya yang akan diberikan pada device sesuai dengan pilihan mode yang diberikan. Pada command memiliki 16 kemungkinan mode, namun pada SPC SERIAL LCD ini hanya digunakan 11 mode yang pertama saja. 3.1.2.1.Control
Mode Control memanfaatkan register : OutControl Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Control digunakan untuk mengatur tampilan LCD. Setelah mengirimkan command control diikuti dengan data control yang mengandung bit untuk mengatur Back Light (BL), Display/Cursor Shift (D/C), Shift Left (L), Shift Right (R), Arah gerak cursor (Dir), Display On/Off (Dis), Cursor On/Off (Cur), dan Cursor Blink (Blk). Data control tersebut memiliki ketentuan sebagai berikut : BL = 1 : Back Light On BL = 0 : Back Light Off
Dir = 1 : Increment Dir = 0 : Decrement
D/C = 1 : Display Shift D/C = 0 : Cursor Shift
Dis = 1 : Display On Dis = 0 : Display Off
L R = 00 : No Shift
Cur = 1 : Cursor On 13
L R = 01 : Shift Right L R = 10 : Shift Left L R = 11 : No Shift
Cur = 0 : Cursor Off Blk = 1 : Blink On Blk = 0 : Blink Off
Contoh aplikasi : Bila ingin menyalakan back light, display, cursor, dan blinking serta arah cursor increment (ke kanan) dan no display/cursor shift, maka data control bernilai “8Fh”. 3.1.2.2.Write Single Character
Mode Write Single Character memanfaatkan register : OutCharacter Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Write Single Character digunakan untuk menulis sebuah character ke LCD. Setelah mengirimkan command Write Single Character diikuti dengan data character yang mengandung nilai sesuai dengan tabel character generator ROM pattern pada manual LCD. Contoh aplikasi : Bila ingin menulis huruf ‘A’, maka Data Character bernilai “41h”. 3.1.2.3.Write Multiple Character
Mode Write Multiple Char. memanfaatkan register : Data Pointer (DPTR) Write Multiple Character digunakan untuk menulis string atau rangkaian character ke LCD. Setelah mengirimkan command Write Multiple Character diikuti dengan data-data character yang mengandung nilai sesuai dengan tabel character generator ROM pattern pada manual LCD. Mode Multiple Character diakhiri dengan mengirimkan data Null (“00h”) ke slave. Contoh aplikasi : Bila ingin menulis string yang memiliki label “String1”, maka cukup masukkan alamat label “String1” pada register DPTR dan panggil procedure K10_WriteString. . . .
14
MOV ACALL
String1
DPTR,#String1 K10_WriteString . . .
db ’Contoh String’,0
Dari contoh di atas, pengiriman data character dilakukan procedure K10_WriteString. Ingat !! Data String harus diakhiri dengan data Null (“00h”). 3.1.2.4.Locate DDRAM
Mode Locate DDRAM memanfaatkan register : OutKolom dan OutBaris Memanfaatkan alamat memory 38h dan 39h atau dengan nama lain BufferOut0 dan BufferOut1
Locate DDRAM digunakan untuk mengatur posisi cursor pada DDRAM atau layar display LCD. Setelah mengirimkan command Locate DDRAM diikuti dengan data kolom, dan kemudian data baris. Contoh aplikasi : Bila ingin mengatur posisi cursor agar berada pada baris ke-2 kolom ke-5, maka setelah mengirimkan command Locate DDRAM diikuti dengan data kolom bernilai “04h” kemudian data baris bernilai “02h”. 3.1.2.5.Locate CGRAM
Mode Locate CGRAM memanfaatkan register : OutCursorCGRAM Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Locate CGRAM digunakan untuk mengatur posisi cursor pada CGRAM. Setelah mengirimkan command Locate CGRAM diikuti dengan data alamat posisi CGRAM. Contoh aplikasi : Bila ingin mengatur posisi cursor agar berada pada CGRAM pada posisi memori 1, maka Setelah mengirimkan command Locate CGRAM diikuti dengan data posisi bernilai “01h”.
15
3.1.2.6.Set Contrast
Mode Set Contrast memanfaatkan register : OutContrast Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Set Contrast digunakan untuk mengatur kontras LCD. Setelah mengirimkan command Set Contrast diikuti dengan data nilai kontras. Kisaran data contrast bernilai 0 – 20 desimal (00H – 14H). Makin besar nilainya, warna karakter makin pudar. Contoh aplikasi : Bila ingin mengatur kontras LCD agar berada pada posisi maksimum, maka Setelah mengirimkan command Set Contrast diikuti dengan data contrast bernilai “00h”. 3.1.2.7.Read Data DDRAM
Mode Read Data DDRAM memanfaatkan register : InDataDDRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Data DDRAM digunakan untuk membaca data DDRAM yang ditunjuk oleh cursor. Setelah mengirimkan command Read Data DDRAM diikuti dengan mengirimkan perintah baca ke slave. Slave akan mengirimkan data DDRAM ke master. Setelah command ini, posisi cursor akan berada pada DDRAM. 3.1.2.8.Read Data CGRAM
Mode Read Data CGRAM memanfaatkan register : InDataCGRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Data CGRAM digunakan untuk membaca data CGRAM yang ditunjuk oleh cursor. Setelah mengirimkan command Read Data CGRAM diikuti dengan mengirimkan perintah baca ke slave. Slave akan mengirimkan data CGRAM ke master. Setelah command ini, posisi cursor akan berada pada CGRAM.
16
3.1.2.9.Read Address DDRAM
Mode Read Address DDRAM memanfaatkan register : InAddrDDRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Address DDRAM digunakan untuk membaca data alamat cursor DDRAM sekarang. Setelah mengirimkan command Read Address DDRAM diikuti dengan mengirimkan perintah baca ke slave. Slave akan mengirimkan data alamat cursor DDRAM ke master. Command ini tidak mempengaruhi posisi cursor. 3.1.2.10.
Read Address CGRAM
Mode Read Address CGRAM memanfaatkan register : InAddrCGRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Address CGRAM digunakan untuk membaca data alamat cursor CGRAM sekarang. Setelah mengirimkan command Read Address CGRAM diikuti dengan mengirimkan perintah baca ke slave. Slave akan mengirimkan data alamat cursor CGRAM ke master. Command ini tidak akan mempengaruhi posisi cursor. 3.1.2.11.
Command LCD
Mode Command LCD memanfaatkan register : OutCommand Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Command LCD digunakan mengirimkan instruksi ke modul LCD sesuai dengan tabel instruksi pada manual LCD. Setelah mengirimkan command LCD diikuti dengan data command. Contoh aplikasi : Bila ingin membersihkan layar LCD, maka Setelah mengirimkan command LCD diikuti dengan data command bernilai “01h”. 3.2
SPESIFIKASI SYNCHRONOUS SERIAL BUS Berikut akan dijelaskan mengenai cara kerja dari komunikasi Synchronous Serial Master (DT-51 Minimum System) – Slave (SPC SERIAL LCD). Tugas 17
dari master adalah mengontrol semua komunikasi yang dilakukan, seperti mengatur semua pulsa pada jalur SerClk, bit data pada SerIn. Kondisi Start dalam Synchronous Serial selalu dilakukan dengan cara terjadi transisi turun (High ke Low) pada jalur SerClk. Komunikasi dalam Synchronous Serial berakhir jika seluruh data 8 bit sudah terkirim atau diterima.
Pengiriman Bit (Master ke Slave) dilakukan setelah memberikan kodisi start dan perubahan bit hanya boleh terjadi/diijinkan saat jalur SerClk pada kondisi High (“1”). Pengiriman bit (Bit Streaming) harus 8 bit. Jika pada saat pengiriman data 8 bit terjadi gangguan atau kegagalan (miss / hilang), pengiriman bit dapat di restart dengan mengirimkan pulsa low (“0”) pada pin SerClr selebar 100 µs.
Penerimaan Bit (Slave ke Master) dilakukan setelah memberikan kodisi start dan perubahan bit hanya boleh terjadi/diijinkan saat jalur SerClk pada kondisi Low (“0”). Pengiriman bit (Bit Streaming) harus 8 bit. Jika pada saat pengiriman data 8 bit terjadi gangguan atau kegagalan (miss / hilang), pengiriman bit dapat di restart dengan mengirimkan pulsa low (“0”) pada pin SerClr selebar 100 µs.
18
3.2.1
Pengalamatan
Pengalamatan memanfaatkan register :
AddrSS
Memanfaatkan alamat memory 2Eh
Semua penggunaan dari Synchronous Serial selalu diawali dengan pengalamatan. Pada pengalamatan itu sendiri dibedakan menjadi dua bagian : alamat terprogram dan mode kerja atau command. Alamat terprogram digunakan untuk memberikan alamat terhadap modul sesuai dengan kehendak pemakai. Alamat terprogram diatur dengan cara mengganti setting jumper (dapat dilihat pada bagian 2.6) sehingga pada jalur Synchronous Serial yang sama dapat digunakan 8 buah modul secara bersamaan dengan membedakan alamat terprogram. 3.2.2
Command
m4 m3 m2 m1 m0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 1 1 1 1 X
0 0 0 0 1 1 1 1 0 0 0 0 1 X
0 0 1 1 0 0 1 1 0 0 1 1 X X
0 1 0 1 0 1 0 1 0 1 0 1 X X
Mode Control Write Single Character Write Multiple Character Locate DDRAM Locate CGRAM Set Contrast Read Data DDRAM Read Data CGRAM Read Address DDRAM Read Address CGRAM Command LCD Tidak Terpakai Tidak Terpakai Tidak Terpakai
Pada pengalamatan terdapat bagian Mode. Mode digunakan untuk memilih perintah selanjutnya yang akan diberikan pada device sesuai dengan pilihan mode yang diberikan. Pada command memiliki 32 kemungkinan mode, namun pada SPC SERIAL LCD ini hanya digunakan 11 mode yang pertama saja.
19
3.2.2.1.Control
Mode Control memanfaatkan register : OutControl Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Control digunakan untuk mengatur tampilan LCD. Setelah mengirimkan command control diikuti dengan data control yang mengandung bit untuk mengatur Back Light (BL), Display/Cursor Shift (D/C), Shift Left (L), Shift Right (R), Arah gerak cursor (Dir), Display On/Off (Dis), Cursor On/Off (Cur), dan Cursor Blink (Blk). Data control tersebut memiliki ketentuan sebagai berikut : BL = 1 : Back Light On BL = 0 : Back Light Off
Dir = 1 : Increment Dir = 0 : Decrement
D/C = 1 : Display Shift D/C = 0 : Cursor Shift
Dis = 1 : Display On Dis = 0 : Display Off
L R = 00 : No Shift L R = 01 : Shift Right L R = 10 : Shift Left L R = 11 : No Shift
Cur = 1 : Cursor On Cur = 0 : Cursor Off Blk = 1 : Blink On Blk = 0 : Blink Off
Contoh aplikasi : Bila ingin menyalakan back light, display, cursor, dan blinking serta arah cursor increment (ke kanan) dan no display/cursor shift, maka data control bernilai “8Fh”. 3.2.2.2.Write Single Character
Mode Write Single Character memanfaatkan register : OutCharacter Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Write Single Character digunakan untuk menulis sebuah character ke LCD. Setelah mengirimkan command Write Single Character diikuti dengan data character yang mengandung nilai sesuai dengan tabel character generator ROM pattern pada manual LCD. Contoh aplikasi : Bila ingin menulis huruf ‘A’, maka Data Character bernilai “41h”.
20
3.2.2.3.Write Multiple Character
Mode Write Multiple Char. memanfaatkan register : Data Pointer (DPTR) Write Multiple Character digunakan untuk menulis string atau rangkaian character ke LCD. Setelah mengirimkan command Write Multiple Character diikuti dengan data-data character yang mengandung nilai sesuai dengan tabel character generator ROM pattern pada manual LCD. Mode Multiple Character diakhiri dengan mengirimkan data Null (“00h”) ke slave. Contoh aplikasi : Bila ingin menulis string yang memiliki label “String1”, maka cukup masukkan alamat label “String1” pada register DPTR dan panggil procedure K10_WriteString_SS. . . . MOV DPTR,#String1 ACALL K10_WriteString_SS . . . String1
db ’Contoh String’,0
Dari contoh di atas, pengiriman data character dilakukan procedure K10_WriteString_SS. Ingat !! Data String harus diakhiri dengan data Null (“00h”). 3.2.2.4.Locate DDRAM
Mode Locate DDRAM memanfaatkan register : OutKolom dan OutBaris Memanfaatkan alamat memory 38h dan 39h atau dengan nama lain BufferOut0 dan BufferOut1
Locate DDRAM digunakan untuk mengatur posisi cursor pada DDRAM atau layar display LCD. Setelah mengirimkan command Locate DDRAM diikuti 21
dengan data kolom, dan kemudian data baris. Contoh aplikasi : Bila ingin mengatur posisi cursor agar berada pada baris ke-2 kolom ke-5, maka setelah mengirimkan command Locate DDRAM diikuti dengan data kolom bernilai “04h” kemudian data baris bernilai “02h”. 3.2.2.5.Locate CGRAM
Mode Locate CGRAM memanfaatkan register : OutCursorCGRAM Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Locate CGRAM digunakan untuk mengatur posisi cursor pada CGRAM. Setelah mengirimkan command Locate CGRAM diikuti dengan data alamat posisi CGRAM. Contoh aplikasi : Bila ingin mengatur posisi cursor agar berada pada CGRAM pada posisi memori 1, maka Setelah mengirimkan command Locate CGRAM diikuti dengan data posisi bernilai “01h”. 3.2.2.6.Set Contrast
Mode Set Contrast memanfaatkan register : OutContrast Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Set Contrast digunakan untuk mengatur kontras LCD. Setelah mengirimkan command Set Contrast diikuti dengan data nilai kontras. Kisaran data contrast bernilai 0 – 20 desimal (00H – 14H). Makin besar nilainya, warna karakter makin pudar. Contoh aplikasi : Bila ingin mengatur kontras LCD agar berada pada posisi maksimum, maka Setelah mengirimkan command Set Contrast diikuti dengan data contrast bernilai “00h”.
22
3.2.2.7.Read Data DDRAM
Mode Read Data DDRAM memanfaatkan register : InDataDDRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Data DDRAM digunakan untuk membaca data DDRAM yang ditunjuk oleh cursor. Setelah mengirimkan command Read Data DDRAM, slave akan mengirimkan data DDRAM ke master. Setelah command ini, posisi cursor akan berada pada DDRAM. 3.2.2.8.Read Data CGRAM
Mode Read Data CGRAM memanfaatkan register : InDataCGRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Data CGRAM digunakan untuk membaca data CGRAM yang ditunjuk oleh cursor. Setelah mengirimkan command Read Data CGRAM, slave akan mengirimkan data CGRAM ke master. Setelah command ini, posisi cursor akan berada pada CGRAM. 3.2.2.9.Read Address DDRAM
Mode Read Address DDRAM memanfaatkan register : InAddrDDRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Address DDRAM digunakan untuk membaca data alamat cursor DDRAM sekarang. Setelah mengirimkan command Read Address DDRAM, slave akan mengirimkan data alamat cursor DDRAM ke master. Command ini tidak mempengaruhi posisi cursor.
23
3.2.2.10.
Read Address CGRAM
Mode Read Address CGRAM memanfaatkan register : InAddrCGRAM Memanfaatkan alamat memory 30h atau dengan nama lain BufferIn0
Read Address CGRAM digunakan untuk membaca data alamat cursor CGRAM sekarang. Setelah mengirimkan command Read Address CGRAM, slave akan mengirimkan data alamat cursor CGRAM ke master. Command ini tidak akan mempengaruhi posisi cursor. 3.2.2.11.
Command LCD
Mode Command LCD memanfaatkan register : OutCommand Memanfaatkan alamat memory 38h atau dengan nama lain BufferOut0
Command LCD digunakan mengirimkan instruksi ke modul LCD sesuai dengan tabel instruksi pada manual LCD. Setelah mengirimkan command LCD diikuti dengan data command. Contoh aplikasi : Bila ingin membersihkan layar LCD, maka Setelah mengirimkan command LCD diikuti dengan data command bernilai “01h”. 3.3
SPESIFIKASI UART Jalur komunikasi UART bekerja pada Baud Rate 9600 bps, 8 Data Bit, No Parity Bit, 1 Stop Bit, No Flow Control. Pada saat jalur komunikasi UART yang aktif maka SPC SERIAL LCD berfungsi sebagai monitor data yang masuk melalui jalur UART. Setiap data yang masuk akan ditampilkan pada layar LCD sesuai dengan tabel tabel character generator ROM pattern pada manual LCD, kecuali character pembuka command (dapat dilihat pada bagian 3.3.1) dan command. SPC SERIAL LCD dengan jalur komunikasi UART juga mendukung perintah-perintah khusus misalnya: clear screen (Ctrl-L) atau”0Ch”, pindah baris (Enter) atau ”0Dh”.
3.3.1
Command Semua Command pada komunikasi UART selalu diawali dengan mengirimkan data byte bernilai “FEh” yang kemudian diikuti dengan mengirimkan mode command yang diinginkan.
24
Waktu yang dibutuhkan SPC SERIAL LCD setelah proses WriteSingle & Read hingga siap menerima perintah berikutnya = 250 µs. Waktu yang dibutuhkan SPC SERIAL LCD setelah perintah CommandLCD hingga siap menerima perintah berikutnya = 500 µs. 3.3.2
Mode Command
m4 m3 m2 m1 m0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 1 1 1 1 X
0 0 0 0 1 1 1 1 0 0 0 0 1 X
0 0 1 1 0 0 1 1 0 0 1 1 X X
0 1 0 1 0 1 0 1 0 1 0 1 X X
Mode Control Tidak Terpakai Write Multiple Character Locate DDRAM Locate CGRAM Set Contrast Read Data DDRAM Read Data CGRAM Read Address DDRAM Read Address CGRAM Command LCD Tidak Terpakai Tidak Terpakai Tidak Terpakai
Pada pengalamatan terdapat bagian Mode. Mode digunakan untuk memilih perintah selanjutnya yang akan diberikan pada device sesuai dengan pilihan mode yang diberikan. Pada command memiliki 32 kemungkinan mode, namun pada SPC SERIAL LCD ini hanya digunakan 10 mode saja. 3.3.2.1.Control
Control digunakan untuk mengatur tampilan LCD. Setelah mengirimkan command control diikuti dengan data control yang mengandung bit untuk mengatur Back Light (BL), Display/Cursor Shift (D/C), Shift Left (L), Shift Right (R), Arah gerak cursor (Dir), Display On/Off (Dis), Cursor On/Off (Cur), dan Cursor Blink (Blk). Data control tersebut memiliki ketentuan sebagai berikut : BL = 1 : Back Light On BL = 0 : Back Light Off
Dir = 1 : Increment Dir = 0 : Decrement
D/C = 1 : Display Shift D/C = 0 : Cursor Shift
Dis = 1 : Display On Dis = 0 : Display Off
25
L R = 00 : No Shift L R = 01 : Shift Right L R = 10 : Shift Left L R = 11 : No Shift
Cur = 1 : Cursor On Cur = 0 : Cursor Off Blk = 1 : Blink On Blk = 0 : Blink Off
Contoh aplikasi : Bila ingin menyalakan back light, display, cursor, dan blinking serta arah cursor increment (ke kanan) dan no display/cursor shift, maka data control bernilai “8Fh”. 3.3.2.2.Write Multiple Character
Write Multiple Character digunakan untuk menulis string atau rangkaian character ke LCD. Setelah mengirimkan command Write Multiple Character diikuti dengan data-data character yang mengandung nilai sesuai dengan tabel character generator ROM pattern pada manual LCD. Mode Multiple Character diakhiri dengan mengirimkan data Null (“00h”) ke slave. 3.3.2.3.Locate DDRAM
Locate DDRAM digunakan untuk mengatur posisi cursor pada DDRAM atau layar display LCD. Setelah mengirimkan command Locate DDRAM diikuti dengan data kolom, dan kemudian data baris. Contoh aplikasi : Bila ingin mengatur posisi cursor agar berada pada baris ke-2 kolom ke-5, maka setelah mengirimkan command Locate DDRAM diikuti dengan data kolom bernilai “04h” kemudian data baris bernilai “02h”. 3.3.2.4.Locate CGRAM
26
Locate CGRAM digunakan untuk mengatur posisi cursor pada CGRAM. Setelah mengirimkan command Locate CGRAM diikuti dengan data alamat posisi CGRAM. Contoh aplikasi : Bila ingin mengatur posisi cursor agar berada pada CGRAM pada posisi memori 1, maka Setelah mengirimkan command Locate CGRAM diikuti dengan data posisi bernilai “01h”. 3.3.2.5.Set Contrast
Set Contrast digunakan untuk mengatur kontras LCD. Setelah mengirimkan command Set Contrast diikuti dengan data nilai kontras. Kisaran data contrast bernilai 0 – 20 desimal (00H – 14H). Makin besar nilainya, warna karakter makin pudar. Contoh aplikasi : Bila ingin mengatur kontras LCD agar berada pada posisi maksimum, maka Setelah mengirimkan command Set Contrast diikuti dengan data contrast bernilai “00h”. 3.3.2.6.Read Data DDRAM
Read Data DDRAM digunakan untuk membaca data DDRAM yang ditunjuk oleh cursor. Setelah mengirimkan command Read Data DDRAM, slave akan mengirimkan data DDRAM ke master. Setelah command ini, posisi cursor akan berada pada DDRAM. 3.3.2.7.Read Data CGRAM
Read Data CGRAM digunakan untuk membaca data CGRAM yang ditunjuk oleh cursor. Setelah mengirimkan command Read Data CGRAM, slave akan mengirimkan data CGRAM ke master. Setelah command ini, posisi cursor akan berada pada CGRAM.
27
3.3.2.8.Read Address DDRAM
Read Address DDRAM digunakan untuk membaca data alamat cursor DDRAM sekarang. Setelah mengirimkan command Read Address DDRAM, slave akan mengirimkan data alamat cursor DDRAM ke master. Command ini tidak mempengaruhi posisi cursor. 3.3.2.9.Read Address CGRAM
Read Address CGRAM digunakan untuk membaca data alamat cursor CGRAM sekarang. Setelah mengirimkan command Read Address CGRAM, slave akan mengirimkan data alamat cursor CGRAM ke master. Command ini tidak mempengaruhi posisi cursor. 3.3.2.10.
Command LCD
Command LCD digunakan mengirimkan instruksi ke modul LCD sesuai dengan tabel instruksi pada manual LCD. Setelah mengirimkan command LCD diikuti dengan data command. Contoh aplikasi : Bila ingin membersihkan layar LCD, maka Setelah mengirimkan command LCD diikuti dengan data command bernilai “01h”. 3.4
DRIVER DAN RUTIN SPC SERIAL LCD dilengkapi dengan modul ENG_I2C.INC, ENG_SS.INC, dan LCDChar.INC yang akan mempermudah user dalam pemrograman. SPC SERIAL LCD menggunakan resource dari mikrokontroler 89C51 sebagai berikut : • Internal RAM dengan alamat 2Eh – 3Fh • P1.6 dan P1.7 • P1.4 dan P1.5 Sehingga tidak boleh dipakai oleh user untuk keperluan lain, kecuali user mampu melakukan modifikasi pengaturan memori dengan benar.
28
Berikut adalah rutin-rutin yang digunakan : K10_Control Fungsi : mengirimkan data control untuk mengatur tampilan LCD pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C, OutControl (berisi data control) Output :Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Berikan nilai data control pada Register OutControl sesuai dengan kebutuhan, kemudian panggil sub rutin K10_Control untuk mengirimkan data secara I2C. K10_WriteSingle Fungsi : menulis sebuah character pada posisi cursor sekarang pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C, OutCharacter (berisi data character) Output :Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Pindahkan cursor pada lokasi yang diinginkan dengan command LocateDDRAM atau LocateCGRAM. Berikan nilai data character pada Register OutCharacter sesuai dengan sesuai tabel character generator ROM pattern pada manual LCD, kemudian panggil sub rutin K10_WriteSingle untuk mengirimkan data secara I2C. K10_WriteString Fungsi : menulis suatu rangkaian character / string pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C, DPTR (berisi pointer pada awal data string) Output :Keterangan : Data String harus diakhiri dengan data Null (00H). Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Pindahkan cursor pada lokasi yang diinginkan dengan command LocateDDRAM atau LocateCGRAM. Berikan nilai pointer awal data string pada Data Pointer sesuai dengan kebutuhan, kemudian panggil sub rutin K10_WriteString untuk mengirimkan data secara I2C. K10_LocateDDRAM Fungsi : digunakan untuk mengatur posisi cursor pada DDRAM atau layar display LCD pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C, OutKolom (berisi data kolom) & OutBaris (berisi data baris) Output :Keterangan : 29
Metode
Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Nilai OutBaris yang valid = 01H atau 02H. Nilai OutKolom yang valid = 00H hingga 27H. : Berikan nilai kolom pada Register OutKolom dan baris pada Register OutBaris sesuai dengan kebutuhan, kemudian panggil sub rutin K10_LocateDDRAM untuk mengirimkan data secara I2C.
K10_LocateCGRAM Fungsi : digunakan untuk mengatur posisi cursor pada CGRAM pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C, OutCursorCGRAM (berisi data posisi CGRAM) Output :Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Berikan nilai posisi pada Register OutCursorCGRAM sesuai dengan kebutuhan, kemudian panggil sub rutin 2 K10_LocateCGRAM untuk mengirimkan data secara I C. K10_SetContrast Fungsi : mengirimkan data contrast untuk mengatur ketajaman tampilan LCD pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C, OutContrast (berisi data contrast) Output :Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Nilai OutContrast yang valid = 00H – 14H. Metode : Berikan nilai data contrast pada Register OutContrast sesuai dengan kebutuhan, kemudian panggil sub rutin K10_SetContrast untuk mengirimkan data secara I2C. K10_ReadDDRAMData Fungsi : digunakan untuk membaca data DDRAM pada posisi cursor terakhir pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C Output : InDataDDRAM (berisi data DDRAM) Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Panggil sub rutin K10_ReadDDRAMData, data DDRAM pada posisi cursor terakhir akan tersimpan pada Register InDataDDRAM. Setelah command ini, posisi cursor akan berada pada DDRAM. K10_ReadCGRAMData Fungsi : digunakan untuk membaca data CGRAM pada posisi cursor terakhir pada SPC SERIAL LCD melalui I2C-bus.
30
Input Output Keterangan Metode
: AddressI2C : InDataCGRAM (berisi data CGRAM) : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. : Panggil sub rutin K10_ReadCGRAMData, data CGRAM pada posisi cursor terakhir akan tersimpan pada Register InDataCGRAM. Setelah command ini, posisi cursor akan berada pada CGRAM.
K10_ReadDDRAMAddr Fungsi : digunakan untuk membaca posisi cursor terakhir di DDRAM pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C Output : InAddrDDRAM (berisi data alamat DDRAM) Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Panggil sub rutin K10_ReadDDRAMAddr, data posisi cursor DDRAM terakhir akan tersimpan pada Register InAddrDDRAM. Command ini tidak akan mempengaruhi posisi cursor. K10_ReadCGRAMAddr Fungsi : digunakan untuk membaca posisi cursor sekarang di CGRAM pada SPC SERIAL LCD melalui I2C-bus. Input : AddressI2C Output : InAddrCGRAM (berisi data alamat CGRAM) Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Panggil sub rutin K10_ReadCGRAMAddr, data posisi cursor CGRAM sekarang akan tersimpan pada Register InAddrCGRAM. Command ini tidak akan mempengaruhi posisi cursor. K10_CommandLCD Fungsi : mengirimkan instruksi ke modul LCD sesuai dengan tabel instruksi manual LCD pada SPC SERIAL LCD melalui I2Cbus. Input : AddressI2C, OutCommand (berisi data command LCD) Output :Keterangan : Pada saat instruksi I2C sedang dieksekusi maka semua instruksi lainnya tidak dapat dilaksanakan. Metode : Berikan nilai data command seusai dengan tabel instruksi manual LCD sesuai dengan kebutuhan pada Register OutCommand kemudian panggil sub rutin 2 K10_CommandLCD untuk mengirimkan data secara I C.
31
K10_Control_SS Fungsi : mengirimkan data control untuk mengatur tampilan LCD pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS, OutControl (berisi data control) Output :Keterangan : Metode : Berikan nilai data control pada Register OutControl sesuai dengan kebutuhan, kemudian panggil sub rutin K10_Control_SS untuk mengirimkan data secara SYNCHRONOUS SERIAL. K10_WriteSingle_SS Fungsi : menulis sebuah character pada posisi cursor sekarang pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS, OutCharacter (berisi data character) Output :Keterangan : Metode : Pindahkan cursor pada lokasi yang diinginkan dengan command LocateDDRAM atau LocateCGRAM. Berikan nilai data character pada Register OutCharacter sesuai dengan sesuai tabel character generator ROM pattern pada manual LCD, kemudian panggil sub rutin K10_WriteSingle_SS untuk mengirimkan data secara SYNCHRONOUS SERIAL. K10_WriteString_SS Fungsi : menulis suatu rangkaian character / string pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS, DPTR (berisi pointer pada awal data string) Output :Keterangan : Data String harus diakhiri dengan data Null (00H). Metode : Pindahkan cursor pada lokasi yang diinginkan dengan command LocateDDRAM atau LocateCGRAM. Berikan nilai pointer awal data string pada Data Pointer sesuai dengan kebutuhan, kemudian panggil sub rutin K10_WriteString_SS untuk mengirimkan data secara SYNCHRONOUS SERIAL. K10_LocateDDRAM_SS Fungsi : digunakan untuk mengatur posisi cursor pada DDRAM atau layar display LCD pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS, OutKolom (berisi data kolom) & OutBaris (berisi data baris) Output :Keterangan : Nilai OutBaris yang valid = 01H atau 02H. Nilai OutKolom yang valid = 00H hingga 27H. Metode : Berikan nilai kolom pada Register OutKolom dan baris pada Register OutBaris sesuai dengan kebutuhan, kemudian panggil 32
sub rutin K10_LocateDDRAM_SS untuk mengirimkan data secara SYNCHRONOUS SERIAL. K10_LocateCGRAM_SS Fungsi : digunakan untuk mengatur posisi cursor pada CGRAM pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS, OutCursorCGRAM (berisi data posisi CGRAM) Output :Keterangan : Metode : Berikan nilai posisi pada Register OutCursorCGRAM sesuai dengan kebutuhan, kemudian panggil sub rutin K10_LocateCGRAM_SS untuk mengirimkan data secara SYNCHRONOUS SERIAL. K10_SetContrast_SS Fungsi : mengirimkan data contrast untuk mengatur ketajaman tampilan LCD pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS, OutContrast (berisi data contrast) Output :Keterangan : Nilai OutContrast yang valid = 00H – 14H. Metode : Berikan nilai data contrast pada Register OutContrast sesuai dengan kebutuhan, kemudian panggil sub rutin K10_SetContrast_SS untuk mengirimkan data secara SYNCHRONOUS SERIAL. K10_ReadDDRAMData_SS Fungsi : digunakan untuk membaca data DDRAM pada posisi cursor terakhir pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS Output : InDataDDRAM (berisi data DDRAM) Keterangan : Metode : Panggil sub rutin K10_ReadDDRAMData_SS, data DDRAM pada posisi cursor terakhir akan tersimpan pada Register InDataDDRAM. Setelah command ini, posisi cursor akan berada pada CGRAM. K10_ReadCGRAMData_SS Fungsi : digunakan untuk membaca data CGRAM pada posisi cursor terakhir pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS Output : InDataCGRAM (berisi data CGRAM) Keterangan : Metode : Panggil sub rutin K10_ReadCGRAMData_SS, data CGRAM pada posisi cursor terakhir akan tersimpan pada Register InDataCGRAM. Setelah command ini, posisi cursor akan berada pada CGRAM.
33
K10_ReadDDRAMAddr_SS Fungsi : digunakan untuk membaca posisi cursor terakhir di DDRAM pada SPC SERIAL LCD melalui SYNCHRONOUS SERIALbus. Input : AddrSS Output : InAddrDDRAM (berisi data alamat DDRAM) Keterangan : Metode : Panggil sub rutin K10_ReadDDRAMAddr_SS, data posisi cursor DDRAM terakhir akan tersimpan pada Register InAddrDDRAM. Command ini tidak akan mempengaruhi posisi cursor. K10_ReadCGRAMAddr_SS Fungsi : digunakan untuk membaca posisi cursor terakhir di CGRAM pada SPC SERIAL LCD melalui SYNCHRONOUS SERIALbus. Input : AddrSS Output : InAddrCGRAM (berisi data alamat CGRAM) Keterangan : Metode : Panggil sub rutin K10_ReadCGRAMAddr_SS, data posisi cursor CGRAM terakhir akan tersimpan pada Register InAddrCGRAM. Command ini tidak akan mempengaruhi posisi cursor. K10_CommandLCD_SS Fungsi : mengirimkan instruksi ke modul LCD sesuai dengan tabel instruksi manual LCD pada SPC SERIAL LCD melalui SYNCHRONOUS SERIAL-bus. Input : AddrSS, OutCommand (berisi data command LCD) Output :Keterangan : Metode : Berikan nilai data command seusai dengan tabel instruksi manual LCD sesuai dengan kebutuhan pada Register OutCommand kemudian panggil sub rutin K10_CommandLCD_SS untuk mengirimkan data secara SYNCHRONOUS SERIAL. 3.5
CONTOH APLIKASI DAN PROGRAM Apabila ingin menampilkan tulisan “HALLO” yang memiliki label “String1” mulai pada posisi layar LCD baris ke-2 kolom ke-5 dengan I2C-bus atau Synchronous Serial-bus, maka register-register yang harus diisi dan listing programnya adalah: Cuplikan Listing program dengan I2C-bus: MOV
AddresssI2C,#11101110B
MOV MOV ACALL MOV
A,#2 B,#4 K10_LocateDDRAM DPTR,#String1
34
;untuk nilai alamat ;terprogram ‘111’ ;memasukan nilai baris ;memasukan nilai kolom ;memanggil rutin LocateDDRAM ;memasukan pointer label String1 ;ke Data Pointer
ACALL K10_WriteString . . . String1
;memanggil rutin WriteString
db ’HALLO’,0
Cuplikan Listing program dengan Synchronous Serial-bus: MOV
AddrSS,#11100000B
MOV MOV ACALL MOV
A,#2 B,#4 K10_LocateDDRAM_SS DPTR,#String1
;untuk nilai alamat ;terprogram ‘111’ ;memasukan nilai baris ;memasukan nilai kolom ;memanggil rutin LocateDDRAM ;memasukan pointer label String1 ;ke Data Pointer ;memanggil rutin WriteString
ACALL K10_WriteString_SS . . . String1
3.6
db ’HALLO’,0
KERANGKA PROGRAM Bagi user yang ingin membuat program aplikasi SPC SERIAL LCD dengan menggunakan rutin yang sudah ada maka 3 driver berikut harus dimasukkan (include) : ENG_I2C.INC, ENG_SS.INC dan LCDChar.INC ENG_I2C.INC merupakan driver yang akan selalu digunakan untuk setiap aplikasi Smart Peripheral Controller (SPC) yang menggunakan I2C-bus. ENG_SS.INC merupakan driver yang akan selalu digunakan untuk setiap aplikasi Smart Peripheral Controller (SPC) yang menggunakan Synchronous Serial Bus. LCDChar.INC merupakan driver yang akan selalu digunakan untuk setiap aplikasi Smart Peripheral Controller (SPC) SERIAL LCD. Kerangka pemrograman SPC SERIAL LCD menggunakan Assembler MetaLink ASM51 sebagai berikut : ;------------------------------------;FILE TEMPLATE UNTUK SPC Serial LCD ;DENGAN DT51-MINSYS ;------------------------------------$MOD51 CSEG ORG 4000H LJMP START
35
ORG 4100H $INCLUDE(ENG_I2C.inc)
;DRIVER UTK SEMUA PRODUK SPC I2C ;BUS ;DRIVER UTK SEMUA PRODUK SPC ;Sync. Serial BUS ;DRIVER UTK SEMUA PRODUK SPC ;Serial LCD
$INCLUDE(ENG_SS.inc) $INCLUDE(LCDChar.inc) START:
MOV
SP, #40H . . .
;USER MAIN PROGRAM
END
Penting! Beberapa Beberapa merk / tipe LCD Karakter tertentu tidak sepenuhnya kompatibel dengan SPC SERIAL LCD. Beberapa command akan menghasilkan data yang tidak sesuai. Misalnya: Pembacaan karakter “A” dengan command ReadDDRAMData pada LCD 16 x 2 (yang dipaketkan dengan SPC SERIAL LCD) akan menghasilkan data “61H”. Namun pada LCD 24 x 2 (yang dipaketkan dengan SPC SERIAL LCD), data yang dihasilkan adalah “16H”.
♦
Terima Kasih atas kepercayaan Anda menggunakan produk kami, bila ada kesulitan, pertanyaan atau saran mengenai produk ini silahkan menghubungi technical support kami :
[email protected]
36
LAMPIRAN A Skema SPC SERIAL LCD
37
LAMPIRAN B Protokol SPC SERIAL LCD
38
39
40
41